Commit Graph

45 Commits

Author SHA1 Message Date
Zahary Karadjov
251c44ff04 implicit generics types as return types. removed the error message for capturing incorrect uses of `proc` 2012-04-21 03:24:32 +03:00
Zahary Karadjov
064f296213 allow the use of built-in type constraints in type sections 2012-04-20 22:28:53 +03:00
Zahary Karadjov
c1d16c5a4d made built-in types primary expressions to allow infix operators to be used with them 2012-04-20 21:35:59 +03:00
Araq
cb79bf9f16 compiler finally supports 'object {.pragma.}' syntax 2012-04-16 23:40:08 +02:00
Zahary Karadjov
238202ccbc re-enable rodfiles tests; fixes #91 2012-04-11 01:52:12 +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
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
a79acb58fc attempt to fix a bug concerning implicit type conversions in case statements 2012-03-27 00:48:59 +02: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
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
Zahary Karadjov
70f5236d48 untyped proc/template/macro params default to expr 2012-03-20 17:44:30 +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
e5bd3b5b97 bootstraps fine with overloadable templates 2012-03-14 21:00:42 +02:00
Araq
8d19a93f1a pragma on/off improvements; endb rewritten 2012-01-28 23:22:44 +01:00
Araq
7f3b3298b4 fixes #33 2012-01-07 20:30:51 +01:00
Araq
20843b7c1a bugfix: tester should compile again 2012-01-03 01:20:47 +01:00
Araq
bcbfa3aaa4 C sources regenerated for new len(openarray) header that catches more bugs; symbol files should work again 2012-01-03 00:21:12 +01:00
Araq
4f1b89c30c year 2012 for most copyright headers 2012-01-02 23:07:35 +01:00
Araq
0d8e6dda69 new len(openarray) implementation 2011-12-31 18:15:20 +01:00
Araq
d25fefc0ff make trecinca|b tests green 2011-12-31 10:23:56 +01:00
Zahary Karadjov
de4b894541 proc arguments are in scope when the result type definition is being processed
This is intended for type deduction depending on the arguments
proc foo(x: type): type(expr(x))
2011-12-09 16:05:51 +02:00
Araq
7fcbdc6d42 implemented 'let' statement 2011-11-29 17:27:48 +01:00
Araq
72651de710 bugfix: 'when' sections in generic objects now work, so TThread[void] compiles 2011-11-20 16:13:03 +01:00
Zahary Karadjov
12bac28d23 macros and templates can be expanded anywhere where a type is expected.
This allows for various type selection algorithms to be implemented.
See tests / accept / compile / ttypeselectors.nim for examples.
2011-11-18 02:11:15 +02:00
Araq
47f523cfb8 bugfix: template t(f_no_Type) does not crash the compiler anymore in 'check' mode 2011-10-30 21:27:02 +01:00
Araq
9fb36bd20c compilation cache: mostly working; generics not yet 2011-10-25 15:26:36 +02:00
Araq
da6046dcba bugfix: overloading resolution for typeof 2011-09-27 00:27:51 +02:00
Araq
fd62116f6e bugfixes for generics; new threads implementation still broken 2011-09-20 00:56:48 +02:00
Araq
7ad5cab17e added system.running for threads 2011-08-11 21:22:23 +02:00
Araq
5131b3cea4 support for C++ code generation; importcpp and importobjc pragmas 2011-08-07 21:02:09 +02:00
Araq
7a6140e3a4 fixes #42 2011-08-04 19:47:35 +02:00
Araq
dd99fe61c0 documentation for 'var T' as return type 2011-08-01 00:21:16 +02:00
Araq
4f7fa05911 void type improvements; documentation improvements 2011-07-31 14:57:38 +02:00
Araq
00da785f5d void type for generics 2011-07-31 01:11:34 +02:00
Araq
6a8a409f1b preparation for new 'is' operator; breaks bootstrapping again, sorry (use generated C code) 2011-07-31 00:21:32 +02:00
Araq
2f066395ba bugfixes; step one for 'var T' as return type support 2011-07-28 00:53:52 +02:00
Araq
8b6f9ef5e8 case branches support constant sets for convenience 2011-06-19 17:45:33 +02:00
Araq
ade67f1abc intsets are now a proper module and part of the stdlib 2011-06-14 01:36:49 +02:00
Araq
6ff8752be5 cleaned up the tests; fixes #30; fixes #26 2011-05-01 20:11:55 +02:00
Araq
8dda362fa6 slices are first class citizens 2011-04-22 10:53:43 +02:00
Araq
cd292568d7 big repo cleanup 2011-04-12 01:13:42 +02:00