summary refs log tree commit diff stats
path: root/compiler/semexprs.nim
Commit message (Collapse)AuthorAgeFilesLines
* fixes binding of overloaded procsAraq2012-05-041-11/+19
|
* completing the "types as first class values" reformZahary Karadjov2012-04-061-36/+47
|
* the foundations of a type traits module; better error messages for expr, ↵Zahary Karadjov2012-04-061-5/+5
| | | | typedesc and typeclasses params
* when expressions, proper rendering for nkDo and nkLambda and parser support ↵Zahary Karadjov2012-04-051-0/+3
| | | | for x.type and x.addr
* Added ``global`` pragma that can be used to introduce new global variables ↵Zahary Karadjov2012-04-051-2/+4
| | | | from within procs
* typedesc and expr paramsZahary Karadjov2012-03-311-6/+36
| | | | | | | | | | | | 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.
* genSym support for hygienic macros and templates.Zahary Karadjov2012-03-261-1/+1
| | | | | | | | | example: template hygienic(val: expr) = var `*x` = val echo `*x` *x was chosen as mnemonic for "opposite of public" and thus private
* making tests green againZahary Karadjov2012-03-201-2/+2
|
* merged branch overloading-for-macrosZahary Karadjov2012-03-191-37/+63
|\
| * the test suite is mostly green againZahary Karadjov2012-03-161-12/+11
| |
| * fix for template redefinition. test cases added.Zahary Karadjov2012-03-151-1/+0
| |
| * bootstraps fine with overloadable templatesZahary Karadjov2012-03-141-30/+74
| |
* | implemented 'static'; macros do not work anymoreAraq2012-03-151-1/+9
| |
* | first steps for cleaner static/const distinctionAraq2012-03-131-1/+36
|/
* fixes #100Araq2012-03-101-1/+1
|
* ERecoverableError exception contains the error messageAraq2012-02-251-2/+2
|
* `do' keyword in the grammar for lambda blocksZahary Karadjov2012-02-101-1/+1
|
* further steps for closure supportAraq2012-02-081-1/+2
|
* further steps to closure supportAraq2012-02-061-2/+12
|
* bugfix: tests/reject/tnoinst.nim is now rejected properlyAraq2012-01-131-0/+2
|
* removed '^ deprecated' messageAraq2012-01-101-3/+1
|
* implicit invokation of items/pairs iteratorsAraq2012-01-081-1/+2
|
* year 2012 for most copyright headersAraq2012-01-021-1/+1
|
* codegen uses alias analysis to generate better codeAraq2011-12-101-6/+0
|
* alias analysis as required for the code gen and the HLOAraq2011-12-081-22/+12
|
* 'assert' is now implemented without compiler magicAraq2011-12-041-0/+6
|
* implemented 'let' statementAraq2011-11-291-1/+2
|
* bugfix: 'when' sections in generic objects now work, so TThread[void] compilesAraq2011-11-201-5/+6
|
* macros and templates can be expanded anywhere where a type is expected.Zahary Karadjov2011-11-181-22/+21
| | | | | This allows for various type selection algorithms to be implemented. See tests / accept / compile / ttypeselectors.nim for examples.
* bugfix: s[1..n] = @[] produced wrong C codeAraq2011-11-141-4/+13
|
* fixes #59Araq2011-11-021-0/+3
|
* better code generation for constant aggregatesAraq2011-11-021-12/+10
|
* compilation cache: slurped files are a dependency tooAraq2011-10-301-1/+3
|
* compilation cache: various bugfixes; works for the compiler itselfAraq2011-10-271-4/+2
|
* compilation cache: mostly working; generics not yetAraq2011-10-251-3/+6
|
* 'bind' as a declarative statementAraq2011-10-101-1/+2
|
* new syntactic construct: a{i}Araq2011-10-081-6/+12
|
* slurp uses path; unidecode is improved and threadsafeAraq2011-10-081-1/+1
|
* Cleaned up the circular dependecies and remaining issuesZahary Karadjov2011-10-071-20/+5
| | | | Changed: The []= operator for strings and sequences is now capable of splicing
* getAst works correctly with existing AST values as template/macro argumentsZahary Karadjov2011-10-071-11/+37
|
* code generator supports constant sequences; more consistent compile time ↵Araq2011-10-071-21/+23
| | | | evaluation
* bugfix: overloading resolution for typeofAraq2011-09-271-6/+8
|
* renamed optional to discardableAraq2011-09-241-1/+1
|
* implemented optional pragma for implicit discardAraq2011-09-241-2/+4
|
* l-values are preserved modulo type distinctionAraq2011-09-241-0/+4
|
* beginning of a taint mode; type system enhancementsAraq2011-09-241-1/+1
|
* fixed some newly introduced bugsAraq2011-09-211-4/+3
|
* using statement (ala C#) implemented as macro (added as test).Zahary Karadjov2011-09-201-1/+1
| | | | simplified the usage of the interpolatedFragments iterator.
* Moved the parseAST magics to evals.nimZahary Karadjov2011-09-201-36/+6
| | | | | | | | | | | | | | Added string interpolation helper routines in parserutils Added a proof-of-concept string interpolation user-land macros (currently, only as a test case): the interpolated expression could either be transformed to concat("literal string ", $(interpolated), " end") or "literal string $1 end" % [$(interpolated)] Added a very initial definition of Optional[T] generic type A new overload of ParseIdent was added in hope to get around the fact that the old one doesn't work correctly in macros, but the problem persists.
* Quick Fix:Zahary Karadjov2011-09-201-1/+1
| | | | | | | | | | | Constant expressions used in when statements and tuple indexing are properly evaluated now Even further step tested to be OK: ```nimrod proc semConstExpr(c: PContext, n: PNode): PNode = result = semAndEvalConstExpr(c, n) ```