summary refs log tree commit diff stats
path: root/compiler/ast.nim
Commit message (Collapse)AuthorAgeFilesLines
* experimental support for preserving local variable names in the generated codeZahary Karadjov2012-04-131-10/+18
|
* the foundations of a type traits module; better error messages for expr, ↵Zahary Karadjov2012-04-061-1/+7
| | | | typedesc and typeclasses params
* when expressions, proper rendering for nkDo and nkLambda and parser support ↵Zahary Karadjov2012-04-051-1/+6
| | | | for x.type and x.addr
* Merge branch 'master' of github.com:Araq/Nimrod into upstreamZahary Karadjov2012-03-311-3/+2
|\
| * some bugfixes for symbolfilesAraq2012-03-231-3/+2
| |
* | typedesc and expr paramsZahary Karadjov2012-03-311-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* | generic types can be used like type classes. distinct can be applied to type ↵Zahary Karadjov2012-03-251-0/+2
| | | | | | | | classes.
* | tyOrdinal now means "integral types". tyTypeClass created to take care of ↵Zahary Karadjov2012-03-221-1/+2
|/ | | | type constraints
* missed file from the previous commitZahary Karadjov2012-03-191-0/+7
|
* merged branch overloading-for-macrosZahary Karadjov2012-03-191-1/+5
|\
| * the test suite is mostly green againZahary Karadjov2012-03-161-18/+0
| |
| * bootstraps fine with overloadable templatesZahary Karadjov2012-03-141-1/+23
| |
* | implemented 'static'; macros do not work anymoreAraq2012-03-151-1/+3
| |
* | first steps for cleaner static/const distinctionAraq2012-03-131-0/+30
|/
* `do' keyword in the grammar for lambda blocksZahary Karadjov2012-02-101-0/+3
|
* further steps to closure supportAraq2012-02-061-2/+8
|
* closure implementation: first stepsAraq2012-02-041-1/+11
|
* pragma blocks; fixed line information issue with user defined assertionsAraq2012-01-171-1/+3
|
* niminst: bugfixes; documentation changesAraq2012-01-151-1/+1
|
* bugfix: invalid indentation for 'else' is detected; optional indentation for ↵Araq2012-01-131-1/+1
| | | | 'if' expressions
* bugfix: tests/reject/tnoinst.nim is now rejected properlyAraq2012-01-131-0/+6
|
* bugfix: removed newSons legacyAraq2012-01-071-7/+10
|
* implemented incompleteStruct pragma; embedded debugger works with posix moduleAraq2012-01-051-0/+1
|
* year 2012 for most copyright headersAraq2012-01-021-1/+1
|
* bugfix: the code gen can now handle alias TLock = TSysLock; this fixes ↵Araq2011-12-231-0/+16
| | | | threading bugs
* code gen can generate code to keep alive stack rootsAraq2011-12-221-0/+1
|
* alias analysis as required for the code gen and the HLOAraq2011-12-081-31/+2
|
* 'assert' is now implemented without compiler magicAraq2011-12-041-1/+2
|
* implemented 'let' statementAraq2011-11-291-3/+4
|
* new pragma: 'noinit'Araq2011-11-251-1/+2
|
* bugfix: 'when' sections in generic objects now work, so TThread[void] compilesAraq2011-11-201-1/+1
|
* macros and templates can be expanded anywhere where a type is expected.Zahary Karadjov2011-11-181-0/+6
| | | | | This allows for various type selection algorithms to be implemented. See tests / accept / compile / ttypeselectors.nim for examples.
* cgen: no type canon for integral types; osproc use posix_spawn instead of ↵Araq2011-11-181-1/+2
| | | | fork&exec
* new kind of AST printer that prints indented treesZahary Karadjov2011-11-041-1/+1
| | | | | AST-to-string conversion procs renamed to repr, treeRepr and lispRepr for better consistency new dumpTree and dumpLisp procs for quick AST inspection of arbitrary nimrod blocks
* lazy loading of body ast implementedAraq2011-10-301-1/+6
|
* constant folding for cnst[i] and cnst.attrAraq2011-10-291-1/+3
|
* compilation cache: various bugfixes; works for the compiler itselfAraq2011-10-271-3/+6
|
* compilation cache: mostly working; generics not yetAraq2011-10-251-1/+1
|
* compilation cache: multi methods now workAraq2011-10-241-14/+15
|
* rod files: next trivial examples workingAraq2011-10-221-0/+4
|
* much more efficient rod file generationAraq2011-10-181-33/+5
|
* 'bind' as a declarative statementAraq2011-10-101-0/+1
|
* new syntactic construct: a{i}Araq2011-10-081-0/+1
|
* Cleaned up the circular dependecies and remaining issuesZahary Karadjov2011-10-071-1/+1
| | | | Changed: The []= operator for strings and sequences is now capable of splicing
* Basic unit testing facilities (suites, fixtures, cases)Zahary Karadjov2011-10-071-1/+1
| | | | | | | | Added: PNimrodNode.lineinfo for better error messages from macros Added: seq.splice For easier use from templates and macros, except stament now supports the list of exception types to be supplied in nkBraket node (array literal).
* code generator supports constant sequences; more consistent compile time ↵Araq2011-10-071-2/+4
| | | | evaluation
* renamed optional to discardableAraq2011-09-241-1/+1
|
* implemented optional pragma for implicit discardAraq2011-09-241-3/+4
|
* got rid of tyPureObject; broke bootstrapping; use generated C codeAraq2011-09-241-0/+4
|
* beginning of a taint mode; type system enhancementsAraq2011-09-241-2/+11
|