Commit Graph
550 Commits
Author SHA1 Message Date
Araq 98e5beb936 got rid of akPureObject 2011-09-24 10:57:35 +02:00
Araq ae0ab9a101 got rid of tyPureObject; broke bootstrapping; use generated C code 2011-09-24 09:46:58 +02:00
Araq bd2d146c77 got rid of tyPureObject; broke bootstrapping; use generated C code 2011-09-24 09:35:00 +02:00
Araq 3824b6ea5f Merge branch 'master' of git@github.com:Araq/Nimrod 2011-09-24 00:46:54 +02:00
Araq 6023e994fb beginning of a taint mode; type system enhancements 2011-09-24 00:46:41 +02:00
dom96 6deda5a973 Fixed string concatenation and other bugs in the JS backend. Fixed a small bug in the IRC module. 2011-09-23 21:43:24 +01:00
Araq 2359b8b107 fixed some newly introduced bugs 2011-09-21 00:54:13 +02:00
Araq 57f184cf48 Merge pull request #54 from zah/pretty-print-ast
String interpolation implemented in terms of macros
2011-09-20 12:13:24 -07:00
Araq bf38637402 Merge pull request #57 from zah/codegen-fixes
Codegen fixes
2011-09-20 11:59:06 -07:00
Zahary Karadjov 9acfc43119 using statement (ala C#) implemented as macro (added as test).
simplified the usage of the interpolatedFragments iterator.
2011-09-20 14:13:45 +03:00
Zahary Karadjov dbcca9b3b9 Moved the parseAST magics to evals.nim
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.
2011-09-20 14:13:45 +03:00
Zahary Karadjov a28cf4e9cb Quick Fix:
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)
```
2011-09-20 14:13:45 +03:00
Zahary Karadjov 9b95ca407d Some very small steps towards an uuid generation module.
I did some basic research on cross-platform UUID generation and didn't want to lose any information, so this code only represents what I learned (uuidMacTime should work tho).
2011-09-20 14:13:45 +03:00
Zahary Karadjov 91351e5996 Initial implementation of the parseExpr, parseStmt, getAst macro routines:
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.
2011-09-20 14:13:45 +03:00
Zahary Karadjov d541815e4b Added AST introspection routines as a part of the standard library 2011-09-20 14:13:45 +03:00
Zahary Karadjov 0b197ade6c Multiple C lines corresponding to a single nimrod line are joined together
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.
2011-09-20 14:11:06 +03:00
Zahary Karadjov 0f0dfd6379 Nimrod can now compile itself with --lineDir enabled 2011-09-20 14:11:06 +03:00
Araq daa2c8732d Merge branch 'master' of github.com:Araq/Nimrod 2011-09-20 00:57:06 +02:00
Araq fd62116f6e bugfixes for generics; new threads implementation still broken 2011-09-20 00:56:48 +02:00
Araq c2d9e27f7d Merge pull request #56 from keitahaga/doc-fixes
Typo fix
2011-09-10 11:20:53 -07:00
Keita Haga 8fa8ab5960 lib/wrappers/sphinx.nim: fix typo, use 'shpinx' instead of 'sphinx' 2011-09-09 19:03:33 +09:00
dom96 4896f63129 Some improvements relating to the IRC module. 2011-09-04 20:28:32 +01:00
dom96 fd01772634 Added IRC module. 2011-09-04 19:47:46 +01:00
Araq dc3ace4f37 Merge branch 'master' of git@github.com:Araq/Nimrod 2011-08-29 01:15:42 +02:00
Araq b9d0806e3b added actors.nim file; compiler not up for this task 2011-08-29 01:15:29 +02:00
Araq 4839800c22 new actors implementation for nimrod; compiler's generics still not up for the task though 2011-08-29 01:14:26 +02:00
Araq 5112677904 attempt to fix tester.nim file handle leak 2011-08-29 01:13:38 +02:00
Araq a191fba6f1 Merge pull request #53 from keitahaga/doc-fixes
Fix typo in strutils.splitLines doc comment
2011-08-28 06:08:11 -07:00
Keita Haga 15b1bda82b lib/pure/strutils.nim: fix doc comment for splitLines 2011-08-25 21:04:55 +09:00
Araq 82af6387d9 bugfix: fixed built-in 'reset' 2011-08-20 15:36:26 +02:00
Araq dd190a5c01 more occurences of 'pure' proc pragma fixed 2011-08-20 01:01:46 +02:00
Araq d560e84fcc locks now in their own core module 2011-08-20 00:24:02 +02:00
Araq 5cba831c88 'pure' is now 'noStackFrame' for procs 2011-08-19 19:11:58 +02:00
Araq ffefb736d9 small bugfix for eval 2011-08-19 09:07:23 +02:00
Araq 15440ec745 documentation for --nimcache option 2011-08-19 01:52:14 +02:00
Araq c7b130b4e2 implemented --nimcache config option; big clean up of magic words 2011-08-19 01:46:24 +02:00
Araq 257b16ca34 inlining of 'var openarray' iterators now work 2011-08-18 18:52:05 +02:00
Araq f8ac84f863 Merge branch 'master' of git@github.com:Araq/Nimrod 2011-08-16 21:24:42 +02:00
Araq a0d172cd85 bugfix topenarrayrepr works again 2011-08-16 21:24:30 +02:00
Araq dd9a591f7a Merge pull request #51 from keitahaga/fix-typo
Fix typo in cgi module; many thanks to keitahaga
2011-08-16 11:50:34 -07:00
Keita Haga 9da77eb5cb lib/pure/cgi.nim: fix typo 'passwort' instead of 'password' 2011-08-17 02:08:49 +09:00
Araq b0742c5b27 finally got rid of nkPassAsOpenArray 2011-08-16 08:56:53 +02:00
Araq f3007cbd72 Merge branch 'master' of git@github.com:Araq/Nimrod 2011-08-15 19:40:12 +02:00
Araq 2183bf77a6 added xmltree.innerText; fixes #49 2011-08-15 19:40:00 +02:00
Araq bbbdea244a Merge pull request #50 from keitahaga/terminal
Fixed bug where the styleReverse doesn't work on Unix-like systems
2011-08-15 10:37:00 -07:00
Keita Haga b40d55b68e lib/pure/terminal.nim: fixed bug where the styleReverse doesn't work on Unix-like systems 2011-08-16 01:48:56 +09:00
Araq c6038dda04 bugfix: running for threads 2011-08-12 01:24:47 +02:00
Araq 7ad5cab17e added system.running for threads 2011-08-11 21:22:23 +02:00
Araq a1cdd6e7ff bugfix: #line generation for windows 2011-08-11 01:28:37 +02:00
Araq d5dd4669df further tests for var T result type; ttables test now fails :-( 2011-08-10 01:16:32 +02:00