summary refs log tree commit diff stats
path: root/compiler
Commit message (Collapse)AuthorAgeFilesLines
* first steps to C file merge operation for incremental compilationAraq2011-10-217-116/+422
|
* bugfixes for ROD file generation; nimcache dir is now flatAraq2011-10-2011-75/+103
|
* much more efficient rod file generationAraq2011-10-181-0/+1
|
* much more efficient rod file generationAraq2011-10-1816-522/+611
|
* 'bind' as a declarative statementAraq2011-10-1010-60/+102
|
* new syntactic construct: a{i}Araq2011-10-084-8/+31
|
* slurp uses path; unidecode is improved and threadsafeAraq2011-10-082-20/+20
|
* Cleaned up the circular dependecies and remaining issuesZahary Karadjov2011-10-078-59/+77
| | | | Changed: The []= operator for strings and sequences is now capable of splicing
* Basic unit testing facilities (suites, fixtures, cases)Zahary Karadjov2011-10-074-9/+24
| | | | | | | | 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).
* getAst works correctly with existing AST values as template/macro argumentsZahary Karadjov2011-10-075-59/+125
|
* code generator supports constant sequences; more consistent compile time ↵Araq2011-10-0711-82/+123
| | | | evaluation
* c2nim: bugfix: parsing of typedef'ed function pointersAraq2011-09-282-11/+8
|
* bugfix: overloading resolution for typeofAraq2011-09-275-20/+16
|
* bugfix: internal error in evalFieldAccess; parseutils.interpolatedFragments ↵Araq2011-09-261-12/+16
| | | | optimized; tstringinterp.nim now works
* renamed optional to discardableAraq2011-09-244-9/+9
|
* implemented optional pragma for implicit discardAraq2011-09-247-15/+21
|
* l-values are preserved modulo type distinctionAraq2011-09-244-7/+14
|
* more fixes to get rid of tyPureObjectAraq2011-09-241-1/+1
|
* got rid of akPureObjectAraq2011-09-241-1/+2
|
* got rid of tyPureObject; broke bootstrapping; use generated C codeAraq2011-09-241-1/+5
|
* got rid of tyPureObject; broke bootstrapping; use generated C codeAraq2011-09-243-5/+11
|
* Merge branch 'master' of git@github.com:Araq/NimrodAraq2011-09-241-38/+70
|\
| * Fixed string concatenation and other bugs in the JS backend. Fixed a small ↵dom962011-09-231-38/+70
| | | | | | | | bug in the IRC module.
* | beginning of a taint mode; type system enhancementsAraq2011-09-248-182/+99
|/
* fixed some newly introduced bugsAraq2011-09-211-4/+3
|
* Merge pull request #54 from zah/pretty-print-astAraq2011-09-206-29/+114
|\ | | | | String interpolation implemented in terms of macros
| * using statement (ala C#) implemented as macro (added as test).Zahary Karadjov2011-09-202-2/+3
| | | | | | | | simplified the usage of the interpolatedFragments iterator.
| * Moved the parseAST magics to evals.nimZahary Karadjov2011-09-203-37/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-202-2/+2
| | | | | | | | | | | | | | | | | | | | | | 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) ```
| * Initial implementation of the parseExpr, parseStmt, getAst macro routines:Zahary Karadjov2011-09-204-33/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | proc parseExpr*(s: string) : expr {.magic: "ParseExprToAst".} ## Compiles the passed string to its AST representation ## Expects a single expression proc parseStmt*(s: string) : stmt {.magic: "ParseStmtToAst".} ## Compiles the passed string to its AST representation ## Expects one or more statements proc getAst*(macroOrTemplate: expr): expr {.magic: "ExpandMacroToAst".} ## Obtains the AST nodes returned from a macro or template invocation ## example: ## macro FooMacro() = ## var ast = getAst(BarTemplate()) Handling of the node.toYaml magic moved to the evaluation engine.
| * Added AST introspection routines as a part of the standard libraryZahary Karadjov2011-09-202-1/+8
| |
* | Multiple C lines corresponding to a single nimrod line are joined togetherZahary Karadjov2011-09-206-61/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch greatly improves the "step over" operation available in debuggers. In practice, there are often 4-8 lines of C code generated for each nimrod line Each such line will be responsible to a single step in the debugger that is a) not expected by the user b) taking the user to an incorrect line in the nimrod code To keep this working, all code generation should use the rope formatting facilities when producing new lines (i.e. $n and $N). New semantics for the format string are introduced: $n means "soft new line" that could be joined/broken when lineDir is enabled. $N means "hard new line" that will always appear as a new line. As an alternative to this approach, I also tested producing code like this: #line "code.nim" 154 foo = bar; \ foo(bar) \ This is better for readability of the final output, but unfortunately it didn't produce the desired result across all compilers/debuggers.
* | Nimrod can now compile itself with --lineDir enabledZahary Karadjov2011-09-206-11/+23
|/
* bugfixes for generics; new threads implementation still brokenAraq2011-09-2012-84/+187
|
* locks now in their own core moduleAraq2011-08-201-8/+4
|
* 'pure' is now 'noStackFrame' for procsAraq2011-08-192-7/+9
|
* small bugfix for evalAraq2011-08-191-1/+1
|
* documentation for --nimcache optionAraq2011-08-191-0/+1
|
* implemented --nimcache config option; big clean up of magic wordsAraq2011-08-195-185/+153
|
* inlining of 'var openarray' iterators now workAraq2011-08-182-25/+48
|
* bugfix topenarrayrepr works againAraq2011-08-161-1/+2
|
* finally got rid of nkPassAsOpenArrayAraq2011-08-1611-71/+49
|
* added xmltree.innerText; fixes #49Araq2011-08-153-29/+32
|
* added system.running for threadsAraq2011-08-111-10/+5
|
* bugfix: #line generation for windowsAraq2011-08-111-2/+2
|
* further tests for var T result type; ttables test now fails :-(Araq2011-08-101-2/+1
|
* added system.slurp for easy embedding of resourcesAraq2011-08-104-21/+28
|
* modifyable results for generics; teventemitter worksAraq2011-08-092-10/+14
|
* fixes #35, fixes #43Araq2011-08-082-2/+4
|
* json code generation works againAraq2011-08-072-4/+4
|