summary refs log tree commit diff stats
path: root/compiler/seminst.nim
Commit message (Collapse)AuthorAgeFilesLines
* progress towards adding negative type classesZahary Karadjov2013-12-091-2/+3
| | | | | | [unittest bugfixes] the block form of check now allows comments errors when inspecting the arguments of var-accepting procs
* Experimental support for delayed instantiation of genericsZahary Karadjov2013-08-231-6/+43
| | | | | | | | | | | | | | | | | | | | This postpones the semantic pass over the generic's body until the generic is instantiated. There are several pros and cons for this method and the capabilities that it enables may still be possible in the old framework if we teach it a few new trick. Such an attempt will follow in the next commits. pros: 1) It allows macros to be expanded during generic instantiation that will provide the body of the generic. See ``tmacrogenerics``. 2) The instantiation code is dramatically simplified. Dealing with unknown types in the generic's body pre-pass requires a lot of hacky code and error silencing in semTypeNode. See ``tgenericshardcases``. cons: 1) There is a performance penalty of roughly 5% when bootstrapping. 2) Certain errors that used to be detected in the previous pre-pass won't be detected with the new scheme until instantiation.
* hacky fix for generic constraints matchingZahary Karadjov2013-08-191-0/+2
|
* work-in-progress for compiling generics in their owner moduleZahary Karadjov2013-08-191-3/+4
|
* Revert "Revert "made some tests green""Zahary Karadjov2013-08-191-16/+21
|
* Revert "Revert "further fixes for void stripping. fixes tvoid.""Zahary Karadjov2013-08-191-20/+25
| | | | This reverts commit d11cf5d1915d83159094f5074a6e17a72c65d9fa.
* Revert "Revert "fix threading tests""Zahary Karadjov2013-08-191-8/+16
| | | | This reverts commit 9c45e33d8c8b1a5f5fca69a467fda87b9b547057.
* Revert "Revert "fix tforwardgeneric""Zahary Karadjov2013-08-191-2/+0
| | | | This reverts commit e3f93241c3824e49b69c647bbd44726a79e8f8f8.
* remerge "Fixes #267"Zahary Karadjov2013-08-191-19/+84
|
* Revert "fixes #267"Araq2013-05-271-84/+19
| | | | This reverts commit 7fccdedcb5d1e583039b2ea2ae6564412a0f5104.
* Revert "fix tforwardgeneric"Araq2013-05-271-0/+2
| | | | This reverts commit d82a032566de1612ff1ed2d82cc7ec2bd58267d7.
* Revert "fix threading tests"Araq2013-05-271-16/+8
| | | | This reverts commit d5fffc032f2b390abd7b4c4fea2e49b1a0ef9736.
* Revert "further fixes for void stripping. fixes tvoid."Araq2013-05-271-25/+20
| | | | This reverts commit 4ae4005f805c5b2e329b2e060fcf40169238a9f9.
* Revert "more test made green"Araq2013-05-271-21/+16
| | | | This reverts commit 911e6e710f28f454cf8bc1bb493c1a28c4694b76.
* more test made greenZahary Karadjov2013-05-261-16/+21
| | | | | | | | | the lambda lifting was trying too hard to ignore generic prods isGenericRoutine was producing false-negatives and only this allowed for some of the warning and error messages to be triggered. some files with mixed line endings were fixed
* further fixes for void stripping. fixes tvoid.Zahary Karadjov2013-05-261-20/+25
|
* fix threading testsZahary Karadjov2013-05-261-8/+16
| | | | | * more type names are valid expressions now * void is properly stripped off during generic instantiation
* fix tforwardgenericZahary Karadjov2013-05-261-2/+0
|
* fixes #267Zahary Karadjov2013-05-261-19/+84
|
* switch to a linked list of scopesZahary Karadjov2013-05-111-4/+4
|
* Removes executable bit for text files.Grzegorz Adam Hankiewicz2013-03-161-0/+0
|
* merged upstream masterZahary Karadjov2013-01-271-3/+3
|\
| * implemented generic multi methodsAraq2013-01-161-0/+1
| |
| * some fixes for generic first class iteratorsAraq2012-12-151-3/+3
| |
* | remove any traces of the old global generics cacheZahary Karadjov2013-01-271-4/+4
| |
* | store the instantiation cache in the generic symbolZahary Karadjov2012-11-281-20/+16
|/
* implemented return type inferenceZahary Karadjov2012-10-031-3/+8
| | | | | | Other fixes: * bind once is now the default for type classes as documented in the manual * fixes an issue in template overloading (erroneous ambiguity when different typedesc params were used)
* improved support for typedesc valuesZahary Karadjov2012-09-251-34/+5
| | | | | * can be stored in constants and variables (including in containers like sequences) * can be passed to and returned from macros
* proc bodies can be expressions with a typeAraq2012-09-221-1/+1
|
* fixes #194Araq2012-09-201-1/+17
|
* made more tests green; fixes #201Araq2012-09-121-3/+4
|
* term rewriting improvementsAraq2012-09-081-0/+1
|
* implemented generic templatesAraq2012-08-271-1/+4
|
* next steps to hygienic templatesAraq2012-08-201-2/+1
|
* top level closures should work; transf is not a pass anymore; next steps for ↵Araq2012-08-131-2/+1
| | | | first class iterator support
* idetools: 'usages' and 'def' should work now; documented js backendAraq2012-08-051-2/+2
|
* 'addSon' for types deprecated for 'int literal type' analysisAraq2012-07-091-1/+1
|
* added proc annotations: macros invoked as pragmasAraq2012-06-261-2/+2
|
* somewhat working closuresAraq2012-06-191-1/+3
|
* typedesc and expr paramsZahary Karadjov2012-03-311-1/+1
| | | | | | | | | | | | 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.
* generic types can be used like type classes. distinct can be applied to type ↵Zahary Karadjov2012-03-251-3/+1
| | | | classes.
* expr params implemented for procs; paving the way for type classesZahary Karadjov2012-03-221-6/+38
|
* clean separation of PNimrodNode and tyExprAraq2012-03-161-2/+3
|
* year 2012 for most copyright headersAraq2012-01-021-1/+1
|
* proc arguments are in scope when the result type definition is being processedZahary Karadjov2011-12-091-1/+2
| | | | | This is intended for type deduction depending on the arguments proc foo(x: type): type(expr(x))
* bugfixes: objects still invalid for constants; fixed a typo concerning ↵Araq2011-11-151-4/+3
| | | | 'high' in eval context
* lazy loading of body ast implementedAraq2011-10-301-4/+7
|
* compilation cache: mostly working; generics not yetAraq2011-10-251-14/+13
|
* bugfixes for generics; new threads implementation still brokenAraq2011-09-201-0/+15
|
* modifyable results for generics; teventemitter worksAraq2011-08-091-2/+1
|