Commit Graph

580 Commits

Author SHA1 Message Date
Araq
5526252fa0 fixes testament compilation 2018-05-14 17:45:44 +02:00
Andreas Rumpf
328e7a1005 options.nim: no global variables anymore 2018-05-13 17:52:21 +02:00
Andreas Rumpf
e4c088721a make nimsuggest compile again 2018-05-13 09:53:00 +02:00
Andreas Rumpf
050789a8f4 sem pass compiles again 2018-05-12 21:30:42 +02:00
Andreas Rumpf
dd35111ff2 semstmts compiles again 2018-05-12 19:45:19 +02:00
Andreas Rumpf
ce859d8c16 more modules compile again 2018-05-12 16:35:59 +02:00
Zahary Karadjov
cf13c5fba4 implement the export/except statement 2018-05-07 09:37:49 +02:00
Zahary Karadjov
2b8bf8fc4a A motivating example for the new bindSym behavior.
The example is a proof-of-concept logging library, allowing you to define
lexically-scoped environments where certain logging attributes are applied
automatically to all logging statements.

fixes tmacro1 (use of `bindSym` inside static blocks)
2018-05-07 09:37:49 +02:00
Zahary Karadjov
bdcb729597 Better support for treating templates and macros as symbols.
This allows you to pass a template or a macro to another macro
which can then inspect the implementation of the former template/macro
using `getImpl`.

Since templates can be freely redefined, this allows you to treat
their symbols as compile-time variables that have lexical scope.
A motivating PoC example for a logging library taking advantage of
this will be provided in the next commit.

Implementation details:

* The name of a template or a macro will be consider a symbol if
  the template/macro requires parameters

* For parameterless templates/macros, you can use `bindSym`, which
  was extended to also work outside of compile-time procs.
2018-05-07 09:37:49 +02:00
Andreas Rumpf
b7116a28ee compiler refactoring, pass config around explicitly 2018-05-05 18:47:29 +02:00
Andreas Rumpf
6408646b02 minor speedup: concept tests still green 2018-04-28 18:37:45 +02:00
Andreas Rumpf
4adc31ee3d stuff that is green 2018-04-28 18:23:54 +02:00
Andreas Rumpf
f697596faf semcheck: code cleanups 2018-04-28 07:49:36 +02:00
Andreas Rumpf
ee366f1746 .experimental can now be used to enable specific features 2018-04-24 09:34:29 +02:00
Andreas Rumpf
07f4e8a4ed new 'var T' error messages with hyperlinks; closes #7373 2018-04-22 00:12:43 +02:00
Andreas Rumpf
b43025b754 fixes #5113 2018-04-21 23:58:24 +02:00
Andreas Rumpf
47335aab41 introduce nkTupleConstr AST node for unary tuple construction; breaking change 2018-04-13 17:45:58 +02:00
zah
121b9e26fb Static[T] fixes (#7333)
* fix the usage of unresolved static[T] parameters in proc signatures
* fix tsametype and tmacrogenerics
* Allow creating composite type classes with concepts and using them in type signatures
* Allow integers to be used in ident concatenations
* Support using imported C++ generic types in proc signatures
* fixes #7230
* closes #7379
* re-enable some metatype tests
2018-03-24 15:28:09 +01:00
Andreas Rumpf
3be4f9111c enforce 'var T' produces a view into the first parameter; refs #7373 2018-03-24 09:41:04 +01:00
Andreas Rumpf
6f747674be more checking for 'var T' as return type; refs #7373 2018-03-24 08:37:09 +01:00
Araq
b0994c7f92 better error messages 2018-03-18 12:04:22 +01:00
Andreas Rumpf
eeea000582 make the 'canimport' template work 2018-03-06 15:57:46 +01:00
Araq
037ce16f44 improve the error message for mutability problems 2018-02-17 00:40:48 +01:00
Araq
ef6eda4cb4 better error messages: use <T1, T2> instead of (T1, T2) in order to prevent confusions with tuple types 2018-02-10 20:55:21 +01:00
Andreas Rumpf
c99f952dfb basic 'lent T' test works 2018-01-21 03:04:22 +01:00
cooldome
2c9e56a783 Implement custom annotations (#6987) 2018-01-09 15:25:22 +01:00
Andreas Rumpf
437caf4358 Merge branch 'devel' into nimv2 2018-01-08 20:04:25 +01:00
Andreas Rumpf
ceb8ba4957 fixes #7018 2018-01-08 18:02:38 +01:00
Andreas Rumpf
2015895357 sink type begins to compile 2018-01-08 01:47:54 +01:00
Andreas Rumpf
e4081a7201 preparations for language extensions: 'sink' and 'lent' types 2018-01-07 23:09:26 +01:00
Araq
29db57a804 fixes reported 'proc foo(): int = result' codegen problem 2017-12-30 00:29:53 +01:00
Araq
0b0baece89 fixes #6980 2017-12-27 21:26:37 +01:00
Zahary Karadjov
70380882c5 fix #6108 2017-12-21 11:04:05 +01:00
Araq
ee67a67ac4 first steps in adding template/macro calls to stack traces 2017-12-21 10:03:33 +01:00
cooldome
3659fec725 Alternative fix for #4910 that covers #6892; fixes #6892 (#6938) 2017-12-17 23:56:21 +01:00
Araq
d244508b8a fixes #6932 2017-12-17 14:23:57 +01:00
Araq
eab46c5b7e runnableExamples feature: allow import statements and move them to the top level 2017-12-17 13:42:56 +01:00
Araq
be87fe9176 make tests green again 2017-12-15 13:24:47 +01:00
Araq
8db5b32ff7 make type vs proc ambiguous handling more consistent; fixes #6726; fixes #6693 2017-12-15 12:16:03 +01:00
Araq
fa92c519aa more progress on destructors; removed old destructor based code as it proved confusing 2017-12-01 01:52:00 +01:00
Araq
5d2e86ea1a the documentation generator now supports ':test:' for the testing of test snippets 2017-11-28 01:15:33 +01:00
Araq
a720539f5e fixes system.runnableExamples; strutils makes use of runnableExamples 2017-11-26 03:24:59 +01:00
Araq
8d1a5dc8e7 the documentation generator now supports system.runnableExamples 2017-11-26 02:51:11 +01:00
Araq
3bd6b7ddc7 improve the error messages for bug #6692 2017-11-05 02:51:20 +01:00
Andreas Rumpf
a155130cf2 fixes #1860; macro generating a wrong nkSymChoice node 2017-10-30 15:37:34 +01:00
Andreas Rumpf
d7a896f19d breaking change: 'and' and 'mod' do not produce a subrange type anymore; fixes #5854 2017-10-30 00:27:30 +01:00
Andreas Rumpf
f1dab39086 remove old implementation of the roof operator; make tests green again; close #6292 2017-10-29 20:36:07 +01:00
Andreas Rumpf
d52a1061b3 work in progress: new implementation for 'a[^1]' 2017-10-29 19:46:17 +01:00
Andreas Rumpf
70ea45cdba deprecated unary '<' 2017-10-29 08:37:13 +01:00
Araq
4f2b79a380 topttree destructor finally works 2017-10-26 00:55:23 +02:00