Commit Graph

11210 Commits

Author SHA1 Message Date
Araq
42516c0086 code generator supports constant sequences; more consistent compile time evaluation 2011-10-07 09:02:08 +02:00
Araq
e9b7d5e68e c2nim: bugfix: parsing of typedef'ed function pointers 2011-09-28 00:41:40 +02:00
Araq
da6046dcba bugfix: overloading resolution for typeof 2011-09-27 00:27:51 +02:00
Araq
7c34357856 bugfix: $ escaping in interpolatedFragments 2011-09-26 07:45:33 +02:00
Araq
14968fba46 bugfix: internal error in evalFieldAccess; parseutils.interpolatedFragments optimized; tstringinterp.nim now works 2011-09-26 00:24:06 +02:00
Araq
0f37d0e1f2 sockets.recv optimizations; stdlib now supports taint mode 2011-09-24 20:22:53 +02:00
Araq
485c371942 renamed optional to discardable 2011-09-24 19:18:08 +02:00
Araq
72ceda98cb implemented optional pragma for implicit discard 2011-09-24 13:55:24 +02:00
Araq
033e3dfc50 l-values are preserved modulo type distinction 2011-09-24 13:15:11 +02:00
Araq
92543a3037 more fixes to get rid of tyPureObject 2011-09-24 11:50:46 +02:00
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