Commit Graph

485 Commits

Author SHA1 Message Date
Zahary Karadjov
8cd5f1f8f5 introduce tyInferred for the unbound concept type params
* Why is tyInferred needed?

The bindings in TCandidate are capable of inferring types within a single
call expression. In concepts, we need to infer types in the same way, but
across the whole body of the concept.

Previously, once a concept type param was inferred, it was destructively
mutated using t.assignType, but this proved to be problematic in the presence
of overloads, because the bindings established while a non-matching overload
is tested must be reverted/forgotten. tyInferred offers a non-destructive way to
keep track of the inference progress.

While introducing new types usually requires a lot of code paths in the compiler
to updated, currently tyInferred is only a short-lived type within the concept body
pass and it's unlikely to introduce breakage elsewhere in the compiler.
2017-03-24 16:58:15 +02:00
Zahary Karadjov
0a9a878bd3 support for matching generic types' procs in generic concepts 2017-03-24 16:58:15 +02:00
Zahary Karadjov
33f4e69759 support for accessing types and consts defined in concepts with the dot operator 2017-03-24 16:58:15 +02:00
Zahary Karadjov
eab1d0cc02 support for accessing the inferred concept type params with the dot operator 2017-03-24 16:58:15 +02:00
Zahary Karadjov
66e0f0e19c concept type params inference working in basic examples 2017-03-24 16:58:15 +02:00
zah
be174fc3c7 Fix generic forward declarations; fixes #4104; fixes #4908 (#5566) 2017-03-23 12:40:57 +01:00
Araq
e01d2244e4 make semObjConstr robust for nimsuggest 2017-03-21 13:02:38 +01:00
Andreas Rumpf
2d0ee2c8ab mark symbols in getAst context as used 2017-03-20 11:44:58 +01:00
Andreas Rumpf
a6b0af539b revert getAst handling to not use overloading resolution 2017-03-20 10:56:15 +01:00
Araq
aa4260ffa8 overloading resolution for getAst; breaking change 2017-03-18 20:57:45 +01:00
Andreas Rumpf
4912300ca7 Merge branch 'devel' into faster-nimsuggest 2017-03-14 10:18:20 +01:00
zah
1be0022e7c Fixes #5167 and related problems (#5475)
This commit returns to a bit less strict checking of the number
of macro arguments, because some old immediate macros rely on a
behavior where even the arity of the macro is not being checked.

It may be better if such macros are just declared to use varargs[expr],
but this remains for another day.
2017-03-12 09:33:49 +01:00
zah
6e358e3187 don't allow casting to non-concrete types; fixes #5428 (#5502) 2017-03-12 09:27:05 +01:00
Araq
57ea01309e nimsuggest: more things work 2017-03-09 17:09:39 +01:00
Araq
3fa428c88b fixes #5467 2017-03-07 00:27:47 +01:00
Araq
2589d69ed2 fixes #5430 2017-02-26 00:32:07 +01:00
Andreas Rumpf
46f33515d7 Merge branch 'devel' into faster-nimsuggest 2017-02-24 01:28:50 +01:00
Andreas Rumpf
2d546ca0ac fixes #5417 2017-02-24 00:32:14 +01:00
Andreas Rumpf
46efaf294b big compiler refactoring; avoid globals for multi method dispatcher generation 2017-02-22 16:27:52 +01:00
Araq
97e26967f1 fixes #5383 2017-02-16 00:43:14 +01:00
Araq
36d3fd64da fixes #5354 2017-02-11 00:42:12 +01:00
Andreas Rumpf
d7e312ee13 nimsuggest works in macros 2017-02-07 10:43:33 +01:00
Araq
700c024e13 fixes #5148 2016-12-29 19:32:43 +01:00
Chris Heller
80f9dcc6eb Used typed/untyped instead of stmt/expr in semQuoteAst. Fixes issue 5120 (#5126)
* Use typed/untyped instead of stmt/expr in semQuoteAst. Fixes #5120
2016-12-22 10:45:13 +01:00
Araq
24239c2361 Merge branch 'devel' into sighashes 2016-12-17 23:04:34 +01:00
jlp765
4acc84f081 Gramma change: casted or Casted to cast or Cast respectively
past tense of cast is cast not casted :-)
2016-12-17 12:33:57 +10:00
Araq
feb0d21b22 more fixes 2016-12-03 02:10:55 +01:00
Araq
2eee15d7f3 Merge branch 'devel' into sighashes 2016-12-01 10:06:41 +01:00
Araq
7b44896e03 fixes #5079 2016-11-30 21:10:22 +01:00
Araq
27723af469 Merge branch 'devel' into sighashes 2016-11-28 20:59:30 +01:00
Andreas Rumpf
01ae0d28d4 recursive modules are only detected to improve error messages 2016-11-24 12:27:21 +01:00
Araq
e6c5622aa7 removed tyArrayConstr completely from the compiler; introduced tyAlias instead in preparation for further bugfixes 2016-11-14 23:18:30 +01:00
Araq
29db0d8585 refactoring complete: explicit ident cache 2016-10-31 19:47:20 +01:00
Araq
773d17cd14 big refactoring: step 1 2016-10-31 15:34:44 +01:00
Andreas Rumpf
7c0fa52bbd fixes #4875 2016-10-20 21:40:04 +02:00
Araq
3a5dfd6a03 fixes #4845 2016-10-08 10:47:47 +02:00
Andreas Rumpf
b78029b5af fixes #4626 2016-09-13 16:33:43 +02:00
Andreas Rumpf
901e3dbb77 fixes #4699 2016-09-05 16:58:33 +02:00
Andreas Rumpf
3a13706d7d fixes #4673 2016-09-01 13:02:53 +02:00
Andreas Rumpf
b4d7ab3caa fixes #4179; disallow assignments to openarrays 2016-08-26 17:29:56 +02:00
Andreas Rumpf
10f445da89 Merge pull request #4592 from arnetheduck/compiler-cleanup
Compiler cleanup
2016-08-25 16:50:54 +02:00
Andreas Rumpf
f1e4d8ed74 side-effect computation now done in the proper pass; fixes #4254 2016-08-25 16:33:51 +02:00
Jacek Sieka
3cd4cf4320 remove unused stuff 2016-08-09 22:54:27 +08:00
Andreas Rumpf
5d56361383 fixes #4353 2016-08-04 19:36:13 +02:00
Andreas Rumpf
6d98c717de fixes #4564 2016-08-04 01:37:41 +02:00
Andreas Rumpf
de6198c747 fixes #4555 2016-08-02 12:47:02 +02:00
Andreas Rumpf
39ebe2175b compiler almost free of deprecated expr/stmt names 2016-07-30 16:34:42 +02:00
Andreas Rumpf
1ddd2a3865 fixes #4432 2016-07-29 01:00:25 +02:00
Andreas Rumpf
850b908f15 remove XXX comment 2016-07-20 00:27:42 +02:00
Andreas Rumpf
622ab7089c Merge pull request #4488 from mbaulch/fix4346improved
Use target field types in tuple conversions.
2016-07-16 14:13:20 +02:00