Zahary Karadjov
e941a14767
completing the "types as first class values" reform
2012-04-06 18:14:12 +03:00
Zahary Karadjov
22dc76a361
typedesc and expr params
...
types are now valid proc/template/macro params and you can overload over them:
proc foo(T: typedesc) # accept any type
proc foo(T: typedesc{int}) # overload specifically for int
proc foo(T: typedesc{int or float or Callable}) # overload for any type matching the constraints
expr{type} is a param expecting compile time value of the designated type (or type class).
when typedesc or expr params are used with a proc, the proc will be instantiated once
for each unique type/value used as parameter.
2012-03-31 18:50:48 +03:00
Zahary Karadjov
e43f8d842b
merged branch overloading-for-macros
2012-03-19 12:06:38 +02:00
Araq
be1154106a
clean separation of PNimrodNode and tyExpr
2012-03-16 19:33:24 +01:00
Zahary Karadjov
e5bd3b5b97
bootstraps fine with overloadable templates
2012-03-14 21:00:42 +02:00
Araq
c25ffbf262
first steps for cleaner static/const distinction
2012-03-13 02:01:56 +01:00
Araq
ec0f982ed4
attempt to make tests green again
2012-03-11 01:46:37 +01:00
Araq
8d19a93f1a
pragma on/off improvements; endb rewritten
2012-01-28 23:22:44 +01:00
Araq
69997af8e9
bugfix: endless recursion in 'semAfterMacroCall'
2012-01-13 15:17:43 +01:00
Araq
071b1e3957
test t99bott.nim works now
2012-01-06 00:29:18 +01:00
Araq
4f1b89c30c
year 2012 for most copyright headers
2012-01-02 23:07:35 +01:00
Araq
2962ca7890
alias analysis as required for the code gen and the HLO
2011-12-08 23:21:08 +01:00
Zahary Karadjov
12bac28d23
macros and templates can be expanded anywhere where a type is expected.
...
This allows for various type selection algorithms to be implemented.
See tests / accept / compile / ttypeselectors.nim for examples.
2011-11-18 02:11:15 +02:00
Araq
c517639155
lazy loading of body ast implemented
2011-10-30 20:53:04 +01:00
Araq
78f37b2336
compilation cache: slurped files are a dependency too
2011-10-30 01:02:15 +02:00
Araq
a0a8934a4f
eval context for macros lives as long as the current module is compiled
2011-10-28 01:38:41 +02:00
Araq
9fb36bd20c
compilation cache: mostly working; generics not yet
2011-10-25 15:26:36 +02:00
Araq
7ebaf44897
bugfixes for ROD file generation; nimcache dir is now flat
2011-10-20 09:06:05 +02:00
Araq
4de84024e5
much more efficient rod file generation
2011-10-18 17:21:51 +02:00
Zahary Karadjov
e3deb5b502
Cleaned up the circular dependecies and remaining issues
...
Changed: The []= operator for strings and sequences is now capable of splicing
2011-10-07 17:10:04 +03:00
Zahary Karadjov
eaeed1f846
getAst works correctly with existing AST values as template/macro arguments
2011-10-07 17:05:54 +03:00
Araq
42516c0086
code generator supports constant sequences; more consistent compile time evaluation
2011-10-07 09:02:08 +02:00
Araq
da6046dcba
bugfix: overloading resolution for typeof
2011-09-27 00:27:51 +02:00
Araq
fd62116f6e
bugfixes for generics; new threads implementation still broken
2011-09-20 00:56:48 +02:00
Araq
2f066395ba
bugfixes; step one for 'var T' as return type support
2011-07-28 00:53:52 +02:00
Araq
569c1ce5ec
bugfix: proper cache for generic instantiations
2011-07-21 00:57:39 +02:00
Araq
99bcc233cd
bugfix: 'set' overloadable; further steps for multi threading support
2011-07-08 01:29:15 +02:00
Araq
c3f11d1637
bugfix: invoking a generic iterator twice triggers a code gen bug (titer2)
2011-06-20 01:28:41 +02:00
Araq
f7884717c1
bugfix: proper return types for templates
2011-06-15 12:35:47 +02:00
Araq
ade67f1abc
intsets are now a proper module and part of the stdlib
2011-06-14 01:36:49 +02:00
Araq
ca637c019c
further improvements for thread analysis
2011-06-13 20:57:49 +02:00
Araq
c019d17561
first (non working) implementation of global thread analysis
2011-06-13 01:40:22 +02:00
Araq
922e216b86
got rid of nstrtabs and nhashes modules
2011-06-10 22:49:06 +02:00
Araq
6ff8752be5
cleaned up the tests; fixes #30 ; fixes #26
2011-05-01 20:11:55 +02:00
Araq
145fabeb67
const table support
2011-04-29 22:55:15 +02:00
Araq
36c67455d4
got rid of some arcane module names
2011-04-21 00:54:44 +02:00
Araq
cd292568d7
big repo cleanup
2011-04-12 01:13:42 +02:00