summary refs log tree commit diff stats
path: root/compiler/semstmts.nim
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'master' of github.com:Araq/Nimrod into upstreamZahary Karadjov2012-06-021-2/+6
|\
| * added system.||; lacks runtime supportAraq2012-05-231-2/+6
| |
* | Added system.staticExec proc for executing external command at compile-timeZahary Karadjov2012-06-021-1/+1
| |
* | codegen for user-defined destructorsZahary Karadjov2012-05-251-1/+71
| |
* | stand-alone except and finally blocksZahary Karadjov2012-05-231-7/+27
|/ | | | This is equivalent to the on-error and at-scope-exit operators in other languages
* compiler finally supports 'object {.pragma.}' syntaxAraq2012-04-161-1/+1
|
* avoid duplicated variable names in unrolled loopsZahary Karadjov2012-04-151-2/+6
|
* fixes #20 properlyZahary Karadjov2012-04-151-3/+2
|
* fix the usage of definedInScope in pegs.=~Zahary Karadjov2012-04-141-1/+1
| | | | | | | | | | | | | | | | template `=~`*(s: string, pattern: TPeg): bool = when not definedInScope(matches): var matches: array[0..maxSubpatterns-1, string] It seems that this never worked as intended. I discovered it now, because when variables' names are preserved, multiple variables named `matches` were created. The reason this happens is that when the template is used as an if condition, the if scope is already entered, but the variables end up in the outer scope. This patch is consistent with how `expr` templates work, but makes the definition of a variable injection template like := a bit harder, yet still possible. (note that if foo := bar(): is still not creating properly scoped variable prior to the patch)
* experimental support for preserving local variable names in the generated codeZahary Karadjov2012-04-131-1/+11
|
* when expressions, proper rendering for nkDo and nkLambda and parser support ↵Zahary Karadjov2012-04-051-2/+2
| | | | for x.type and x.addr
* expr params implemented for procs; paving the way for type classesZahary Karadjov2012-03-221-3/+1
|
* merged branch overloading-for-macrosZahary Karadjov2012-03-191-2/+1
|\
| * allowing multiple definitions of templatesZahary Karadjov2012-03-141-2/+1
| |
* | clean separation of PNimrodNode and tyExprAraq2012-03-161-8/+8
| |
* | implemented 'static'; macros do not work anymoreAraq2012-03-151-0/+8
|/
* fixes #100Araq2012-03-101-0/+2
|
* further steps for closure supportAraq2012-02-081-0/+4
|
* further steps to closure supportAraq2012-02-061-5/+0
|
* small fixes for tests on windowsAraq2012-01-311-1/+1
|
* pragma on/off improvements; endb rewrittenAraq2012-01-281-7/+7
|
* pragma blocks; fixed line information issue with user defined assertionsAraq2012-01-171-0/+14
|
* implicit invokation of items/pairs iteratorsAraq2012-01-081-24/+42
|
* bugfix: type alias to generic; generic type not stripped away from for loop ↵Araq2012-01-071-1/+4
| | | | variable
* year 2012 for most copyright headersAraq2012-01-021-1/+1
|
* new len(openarray) implementationAraq2011-12-311-1/+1
|
* make trecinca|b tests greenAraq2011-12-311-1/+1
|
* bugfix: compiler errors for explicit initialization of thread local ↵Araq2011-12-231-1/+2
| | | | variables; os.nim does not rely on it anymore
* bugfix: the code gen can now handle alias TLock = TSysLock; this fixes ↵Araq2011-12-231-1/+2
| | | | threading bugs
* path canonicalization for imported modules, relative paths written in rod filesZahary Karadjov2011-12-111-1/+1
|
* proc arguments are in scope when the result type definition is being processedZahary Karadjov2011-12-091-2/+4
| | | | | This is intended for type deduction depending on the arguments proc foo(x: type): type(expr(x))
* path canonicalization and proper project relative pathsZahary Karadjov2011-12-091-1/+1
|
* 'assert' is now implemented without compiler magicAraq2011-12-041-1/+1
|
* implemented 'let' statementAraq2011-11-291-11/+14
|
* bugfix: 'when' sections in generic objects now work, so TThread[void] compilesAraq2011-11-201-1/+3
|
* macros and templates can be expanded anywhere where a type is expected.Zahary Karadjov2011-11-181-4/+11
| | | | | This allows for various type selection algorithms to be implemented. See tests / accept / compile / ttypeselectors.nim for examples.
* lazy loading of body ast implementedAraq2011-10-301-15/+15
|
* eval context for macros lives as long as the current module is compiledAraq2011-10-281-0/+3
|
* compilation cache: various bugfixes; works for the compiler itselfAraq2011-10-271-1/+8
|
* much more efficient rod file generationAraq2011-10-181-1/+1
|
* 'bind' as a declarative statementAraq2011-10-101-3/+4
|
* 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-5/+9
| | | | | | | | 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-15/+26
| | | | evaluation
* 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) ```
* bugfixes for generics; new threads implementation still brokenAraq2011-09-201-7/+0
|
* added xmltree.innerText; fixes #49Araq2011-08-151-1/+4
|
* further tests for var T result type; ttables test now fails :-(Araq2011-08-101-2/+1
|
* support for C++ code generation; importcpp and importobjc pragmasAraq2011-08-071-5/+1
|
* anonymous procs implemented; however no closure support yetAraq2011-08-011-5/+6
|