Commit Graph

104 Commits

Author SHA1 Message Date
Zahary Karadjov
66a2556525 make more tests green 2013-12-29 00:00:37 +02:00
Zahary Karadjov
edab4aaad0 better integration of tyStatic into typeRel 2013-12-25 22:29:44 +02:00
Zahary Karadjov
027f30610e static params: expr[T] is now static[T]
This introduces tyStatic and successfully bootstraps and handles
few simple test cases.  Static params within macros are no longer
treated as PNimrodNodes - they are now equivalent to constants
of the designated type.
2013-12-19 01:06:38 +02:00
Zahary Karadjov
208924b929 fixes #708
It's unclear to me why for variables were treated as globals.
This is likely to cause many problems, but in this particular case
it was breaking the unittest/insepectArgs recursive function (the
for loop variable has a different value in each stack frame)
2013-12-07 21:23:22 +02:00
Araq
8b5aa221ad support for multiple modules of the same name; niminst supports 'platforms'; minor bugfixes 2013-09-24 16:07:07 +02:00
Mark Flamer
73aba23a49 Add arity typetrait 2013-09-02 18:20:00 -07:00
Zahary Karadjov
89086a8e19 prevent eval crashes due to PContext-dependent ops not being available in evalConstExpr 2013-08-25 18:11:28 +03:00
Zahary Karadjov
6378fbd66e working code for simple cases of user-defined type classes 2013-08-25 12:17:40 +03:00
Zahary Karadjov
8682ed9bd0 pass-through of static int generic params to arrays when late instantiation is disabled 2013-08-23 01:10:20 +03:00
Zahary Karadjov
fee2a7ecfa Experimental support for delayed instantiation of generics
This postpones the semantic pass over the generic's body until
the generic is instantiated. There are several pros and cons for
this method and the capabilities that it enables may still be possible
in the old framework if we teach it a few new trick. Such an attempt
will follow in the next commits.

pros:
1) It allows macros to be expanded during generic instantiation that
will provide the body of the generic. See ``tmacrogenerics``.
2) The instantiation code is dramatically simplified. Dealing with unknown
types in the generic's body pre-pass requires a lot of hacky code and error
silencing in semTypeNode. See ``tgenericshardcases``.

cons:
1) There is a performance penalty of roughly 5% when bootstrapping.
2) Certain errors that used to be detected in the previous pre-pass won't
be detected with the new scheme until instantiation.
2013-08-23 01:10:20 +03:00
Araq
fd2a808266 fixes token's column information 2013-07-30 08:45:00 +02:00
Araq
f9426bfcd5 added macros.genSym 2013-07-24 21:58:17 +02:00
Araq
aa88e150da 'modules' module from 'main'; minor bugfixes 2013-07-20 20:17:23 +02:00
Araq
bfbdb1f028 refactorings for the eval engine; bugfix: clean templates as accessors 2013-07-19 22:22:20 +02:00
Araq
1bdc0d1dd3 fixes lots of regressions 2013-06-29 10:04:18 +02:00
Araq
8f0d0250cd bugfix: typo 2013-06-29 01:51:42 +02:00
Araq
93158a53a8 got rid of debug calls 2013-06-28 23:40:09 +02:00
Araq
a8542fbe06 some small performance improvement for the evaluator 2013-06-28 23:36:43 +02:00
Araq
976d5b18ed small REPL improvements 2013-06-28 16:40:01 +02:00
Araq
2ca05eeb16 var tuple unpacking works at compile time 2013-06-28 08:40:49 +02:00
Araq
572bfd23c4 fixes #399 2013-05-18 11:41:03 +02:00
Billingsly Wetherfordshire
8e12d1fb57 Update evals.nim 2013-04-25 17:08:59 -05:00
Araq
dc65ccde01 fixes #368 2013-04-08 19:58:16 +02:00
Araq
f9d4e39a12 bugfix evals.nim 2013-04-07 14:12:08 +02:00
Araq
0b1630b46c optimized evals.nim a bit 2013-04-07 03:23:15 +02:00
Grzegorz Adam Hankiewicz
72a3e21f28 Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
Araq
225d657019 first steps to implement object construction expressions 2013-03-07 01:52:17 +01:00
Araq
cbf82cad7d made some tests green 2013-03-04 18:50:08 +01:00
Araq
b4232a672f don't eval wrong code 2013-02-24 13:26:04 +01:00
Araq
1c0c80ef2d micro optimizations for the evaluation engine 2013-02-14 08:41:48 +01:00
Zahary Karadjov
81a3585872 merged upstream master 2013-01-27 23:41:45 +02:00
Araq
3af5c99336 fixes #293 2013-01-08 20:03:02 +01:00
Araq
88a441ea8e next steps for FFI at compile time 2013-01-02 01:17:53 +01:00
Araq
9ef367db62 fixed a newly introduced c2nim bug; many untested improvements to the FFI at compile time 2012-12-31 17:53:37 +01:00
Araq
c73d9fdd4c small examples work with the FFI 2012-12-19 08:44:20 +01:00
Araq
7148812524 first steps for FFI support at compile time 2012-12-19 02:22:39 +01:00
Zahary Karadjov
36e25a6849 CaaS in-memory caching
removed some redundant filepath params and variables and
switched to canonical paths in most places
2012-11-28 01:15:13 +02:00
Zahary Karadjov
091c1b3075 caas is now drivable through stdin
* added idetools --eval
* streams.readLine recognises and applies the backspace character
2012-11-28 01:15:13 +02:00
Araq
dd9ad9e497 next steps for first class iterators 2012-11-26 02:43:32 +01:00
Zahary Karadjov
32d0ac01dc AST quasi-quoting for macros 2012-11-11 17:02:13 +02:00
Zahary Karadjov
d9d82fb0af syntax compatibility between do blocks and stmt blocks
See the section `do notation` in the manual for more info.

* nkMacroStmt has been removed
   Macro statements are now mapped to regular nkCall nodes.
   The support for additional clauses (such as else, except, of, etc)
   have been restored - they will now appear as additional arguments
   for the nkCall node (as nkElse, nkExcept, etc nodes)

* fixed some regressions in the `is` operator and semCompiles
2012-10-04 15:37:26 +03:00
Araq
cc51581937 next steps for 'compiler as a service' 2012-10-03 21:32:06 +02:00
Zahary Karadjov
2e5265bef5 experimental support for querying the type of expressions within macros
normalised the line endings of macros.nim (minor edits otherwise)
2012-10-03 01:59:50 +03:00
Zahary Karadjov
9c8bc3a244 the is operator now works with type classes and type variables
bugfixes:
the DLL tests were failing on Mac OS X, due to an incorrect DynlibFormat
2012-10-03 01:59:49 +03:00
Zahary Karadjov
badb6c0f66 improved support for typedesc values
* can be stored in constants and variables (including in containers like sequences)
* can be passed to and returned from macros
2012-09-25 02:03:15 +03:00
Zahary Karadjov
9e4254e4de type trais used to work only on user-defined types. see #202 2012-09-13 00:33:01 +03:00
Araq
b4844a189d parameter passing works the same for macros and templates; use callsite magic to access the invokation AST 2012-08-28 22:15:29 +02:00
Araq
9a7f0cd851 bindSym suffices; no 'bind' for macros anymore 2012-08-25 01:34:50 +02:00
Araq
c7ba6f5eb6 implemented 'bind' for macros 2012-08-24 01:18:03 +02:00
Araq
da190876de next steps to hygienic templates 2012-08-20 08:44:17 +02:00