Zahary Karadjov
b2cc17cde4
Merge branch 'master' of github.com:Araq/Nimrod into upstream
2012-04-15 02:58:01 +03:00
Zahary Karadjov
57fe3e8c41
avoid duplicated variable names in unrolled loops
2012-04-15 02:53:32 +03:00
Zahary Karadjov
20d56875de
fix threading tests
2012-04-15 02:52:09 +03:00
Zahary Karadjov
567b5b07ea
fixes #20 properly
2012-04-15 01:06:40 +03:00
Zahary Karadjov
42e0b08214
fix the usage of definedInScope in pegs.=~
...
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)
2012-04-14 13:32:51 +03:00
Zahary Karadjov
f25c638dc4
experimental support for preserving local variable names in the generated code
2012-04-13 21:03:49 +03:00
Araq
82813e58c4
Merge branch 'master' of github.com:Araq/Nimrod
2012-04-13 18:37:17 +02:00
Araq
fe750a5cf9
performance improvements for ropes
2012-04-13 18:36:55 +02:00
Zahary Karadjov
caf7878009
Proper C scopes for if, try and case statements
...
even thought the setjmp implementation for try statement won't be used in C++,
using properly scoped variables for them is beneficial, because we'll be able to
establish a 1:1 relation between nimrod scopes and C scopes.
Once we have that, we'll be able to keep the original names of local variables
to greatly improve the debugging experience (i.e. watch expressions and
hover tooltips will work).
2012-04-12 17:52:55 +03:00
Zahary Karadjov
d2b45dbe85
C variables are created in their enclosing block instead of their enclosing function
2012-04-12 14:12:32 +03:00
Zahary Karadjov
238202ccbc
re-enable rodfiles tests; fixes #91
2012-04-11 01:52:12 +03:00
Zahary Karadjov
c1ad05c4c5
Merge branch 'master' of github.com:Araq/Nimrod into upstream
2012-04-10 22:39:00 +03:00
Zahary Karadjov
a64f03230a
proper order of initialization for .global. variables
2012-04-10 20:53:44 +03:00
Zahary Karadjov
e941a14767
completing the "types as first class values" reform
2012-04-06 18:14:12 +03:00
Zahary Karadjov
efb53233cb
the foundations of a type traits module; better error messages for expr, typedesc and typeclasses params
2012-04-06 13:46:31 +03:00
Araq
0f96e72b18
fixed another docgen bug; initial mongodb wrapper
2012-04-06 00:41:27 +02:00
Zahary Karadjov
98b7bdaa50
when expressions, proper rendering for nkDo and nkLambda and parser support for x.type and x.addr
2012-04-05 22:43:37 +03:00
Zahary Karadjov
6d80583d5a
Added `global` pragma that can be used to introduce new global variables from within procs
2012-04-05 20:43:22 +03:00
Zahary Karadjov
8d698b2bdd
Merge branch 'master' of github.com:Araq/Nimrod into upstream
2012-03-31 18:51:11 +03:00
Zahary Karadjov
22dc76a361
typedesc and expr params
...
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.
2012-03-31 18:50:48 +03:00
Araq
142e849b91
implemented support for the AVR CPU and standalone OS
2012-03-31 01:03:14 +02:00
Araq
97743faa83
tests tcnstseq and tcnstseq3 work again
2012-03-28 23:03:55 +02:00
Araq
1af0601011
bugfix #100 again
2012-03-28 16:43:05 +02:00
Araq
a79acb58fc
attempt to fix a bug concerning implicit type conversions in case statements
2012-03-27 00:48:59 +02:00
Zahary Karadjov
6216046bc6
genSym support for hygienic macros and templates.
...
example:
template hygienic(val: expr) =
var `*x` = val
echo `*x`
*x was chosen as mnemonic for "opposite of public" and thus private
2012-03-26 04:36:26 +03:00
Zahary Karadjov
bc2eb0ea9b
generic types can be used like type classes. distinct can be applied to type classes.
2012-03-25 20:55:21 +03:00
Araq
91db6bd9c9
fixes #102
2012-03-23 20:28:35 +01:00
Araq
5c33f76517
bugfix: GC marker procs; making tests green again
2012-03-23 09:29:53 +01:00
Araq
0857efe512
some bugfixes for symbolfiles
2012-03-23 00:16:29 +01:00
Zahary Karadjov
296ef07955
tyOrdinal now means "integral types". tyTypeClass created to take care of type constraints
2012-03-22 16:24:12 +02:00
Zahary Karadjov
3a5cf3d63a
expr params implemented for procs; paving the way for type classes
2012-03-22 03:27:00 +02:00
Araq
4f22326b24
Merge branch 'master' of github.com:Araq/Nimrod
2012-03-21 23:11:16 +01:00
Araq
03ba0f3e25
implemented marker procs for the GC resulting in huge speedups
2012-03-21 23:10:56 +01:00
Zahary Karadjov
70f5236d48
untyped proc/template/macro params default to expr
2012-03-20 17:44:30 +02:00
Zahary Karadjov
a72fe16f9d
making tests green again
2012-03-20 14:44:23 +02:00
Araq
bb1885115d
Merge branch 'master' of github.com:Araq/Nimrod
2012-03-19 22:12:08 +01:00
Araq
7cd2f353c7
preparations for marker procs generation
2012-03-19 22:11:19 +01:00
Zahary Karadjov
7b41b0f841
missed file from the previous commit
2012-03-19 12:14:32 +02:00
Zahary Karadjov
e43f8d842b
merged branch overloading-for-macros
2012-03-19 12:06:38 +02:00
Araq
be1154106a
clean separation of PNimrodNode and tyExpr
2012-03-16 19:33:24 +01:00
Zahary Karadjov
72f2a6e275
the test suite is mostly green again
2012-03-16 05:33:21 +02:00
Zahary Karadjov
6975ba401b
fix for template redefinition. test cases added.
2012-03-15 14:15:37 +02:00
Araq
4da067691e
implemented 'static'; macros do not work anymore
2012-03-15 00:28:28 +01:00
Zahary Karadjov
d1d5fc8254
allowing definitions of procs and templates to be overridden in local scopes
2012-03-14 21:01:18 +02:00
Zahary Karadjov
c45b714dfb
allowing multiple definitions of templates
2012-03-14 21:01:18 +02:00
Zahary Karadjov
e5bd3b5b97
bootstraps fine with overloadable templates
2012-03-14 21:00:42 +02:00
Araq
c25ffbf262
first steps for cleaner static/const distinction
2012-03-13 02:01:56 +01:00
Araq
1d8ff40f56
vars can be 'compileTime'; shallow introduced weird string aliasing bug
2012-03-11 12:01:10 +01:00
Araq
ec0f982ed4
attempt to make tests green again
2012-03-11 01:46:37 +01:00
Araq
e88123fb17
fixes #100
2012-03-10 12:43:04 +01:00