summary refs log tree commit diff stats
path: root/compiler/semexprs.nim
Commit message (Collapse)AuthorAgeFilesLines
* allow macros to produce nnkGotoState and nkStateAndreas Rumpf2017-10-091-0/+4
|
* breaking change: getAst strips away pointless nnkStmtList nodes; node ↵Andreas Rumpf2017-09-261-3/+4
| | | | rendering of nnkStmtList without wrong indentation
* some work to make 'opt' a first class typeAndreas Rumpf2017-09-241-7/+3
|
* write tracking for funcs implementedAndreas Rumpf2017-09-231-1/+2
|
* first implementation of the 'func' keywordAndreas Rumpf2017-09-231-8/+8
|
* .pure enums are much more convenient to use nowAndreas Rumpf2017-09-171-2/+4
|
* make tests green againAndreas Rumpf2017-08-311-2/+4
|
* low/high/of are now overloadable operationsAndreas Rumpf2017-08-301-38/+3
|
* fixes mitems iterator on vm. (issue with tuple value)Parashurama2017-08-191-0/+3
| | | | | | this discard any implicit conversion on iterator return value. the previous behaviour was to return a reference to a converted copy and thus not modifying the original value.
* treat var modifiers inside the concept body correctly: #1033Zahary Karadjov2017-08-191-1/+6
|
* fixes #6127Andreas Rumpf2017-07-221-5/+3
|
* bugfix: keep the information of a raw float literal in the ASTAndreas Rumpf2017-07-061-3/+3
|
* do not crash for #5895Andreas Rumpf2017-07-061-1/+1
|
* Fix #5983Zahary Karadjov2017-06-201-1/+4
|
* Fix #5888Zahary Karadjov2017-06-201-1/+1
|
* introduce a pre-processing pass for the concept bodiesZahary Karadjov2017-06-201-2/+2
| | | | | | | fixes #4982 fixes #3805 close #3414
* restrict casting for closure. (#5948); fixes #5742Parashurama2017-06-071-1/+6
| | | | | | | | | * restrict casting for closure. This commit forbid casting a closure to anything other than another closure. use rawEnv/rawProc to access underlaying pointers. * better error message for closure cast * fixes #5742
* first steps to allow easy functors via macrosAndreas Rumpf2017-06-041-17/+3
|
* Merge branch 'zahary' into araq2Andreas Rumpf2017-05-171-26/+5
|\
| * fix affecting templates with explicit generic paramsZahary Karadjov2017-05-131-26/+5
| |
* | Merge branch 'zahary' into araq2Andreas Rumpf2017-05-161-15/+20
|\|
| * wipZahary Karadjov2017-04-111-4/+5
| |
| * adapt quote to the new parsing rulesZahary Karadjov2017-04-101-8/+11
| |
| * fix the do notation when used with procsZahary Karadjov2017-04-091-2/+1
| |
| * Restore the Nim's 0.14 proper handling of generic aliasesZahary Karadjov2017-04-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | A more efficient implementation is possible by restoring the old lifting ot tyGenericInvocation to tyGenericInst in liftTypeParam, but this fix will suffice for now. fixes #5087 fixes #5602 fixes #5641 fixes #5570
| * fix #5642Zahary Karadjov2017-04-071-0/+2
| |
* | Fix for #5695 make subscript operator overloadable for tuples (#5749)cooldome2017-04-241-3/+3
|/
* move the object construction logic to a separate fileZahary Karadjov2017-04-061-277/+1
|
* object construction: test cases and manual additionsZahary Karadjov2017-04-061-10/+8
|
* cleaned up the code and implemented proper error messagesZahary Karadjov2017-04-061-77/+178
|
* fix #4556Zahary Karadjov2017-04-061-55/+164
| | | | | | | | | | | | | | | | | | | | | This implements a number of new safety checks and error messages when object constructors are used: In case objects: * the compiler will prevent you from initializing fields in conflicting branches * When a field from a particular branch is initialized, the compiler will demand that the discriminator field is also supplied with a maching compile-time value In all objects: * When the "requiresInit" pragma is applied to a type, all fields of the type must be initialized when object construction is used. The code will be simplified in a follow up commit.
* Merge remote-tracking branch 'origin/concepts-rebased' into araqAndreas Rumpf2017-03-311-34/+82
|\
| * Working test cases for the sophisticated matrix library example from the manualZahary Karadjov2017-03-241-8/+20
| | | | | | | | | | Fixed the dot operator when used within return types (see tgenericdotrettype) Fixed the matching of generic concepts aliases used with the implicit generics style
| * further improvements to the error messages produced by conceptsZahary Karadjov2017-03-241-5/+6
| |
| * proper error reporting for concepts and the introduction of the {.explain.} ↵Zahary Karadjov2017-03-241-5/+17
| | | | | | | | pragma
| * infer static parameters even when more complicated arithmetic is involvedZahary Karadjov2017-03-241-0/+1
| |
| * support derived values in non-generic user type classesZahary Karadjov2017-03-241-19/+20
| |
| * kill the reportConceptFailures options as it will be replaced by the ↵Zahary Karadjov2017-03-241-4/+1
| | | | | | | | .explain. pragma
| * introduce tyInferred for the unbound concept type paramsZahary Karadjov2017-03-241-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Why is tyInferred needed? The bindings in TCandidate are capable of inferring types within a single call expression. In concepts, we need to infer types in the same way, but across the whole body of the concept. Previously, once a concept type param was inferred, it was destructively mutated using t.assignType, but this proved to be problematic in the presence of overloads, because the bindings established while a non-matching overload is tested must be reverted/forgotten. tyInferred offers a non-destructive way to keep track of the inference progress. While introducing new types usually requires a lot of code paths in the compiler to updated, currently tyInferred is only a short-lived type within the concept body pass and it's unlikely to introduce breakage elsewhere in the compiler.
| * support for matching generic types' procs in generic conceptsZahary Karadjov2017-03-241-3/+1
| |
| * support for accessing types and consts defined in concepts with the dot operatorZahary Karadjov2017-03-241-1/+26
| |
| * support for accessing the inferred concept type params with the dot operatorZahary Karadjov2017-03-241-2/+2
| |
| * concept type params inference working in basic examplesZahary Karadjov2017-03-241-1/+3
| |
* | compiler: better error messages (#5613)Andreas Rumpf2017-03-261-7/+7
|/
* Fix generic forward declarations; fixes #4104; fixes #4908 (#5566)zah2017-03-231-1/+0
|
* make semObjConstr robust for nimsuggestAraq2017-03-211-3/+3
|
* mark symbols in getAst context as usedAndreas Rumpf2017-03-201-1/+5
|
* revert getAst handling to not use overloading resolutionAndreas Rumpf2017-03-201-1/+18
|
* overloading resolution for getAst; breaking changeAraq2017-03-181-8/+14
|
* Merge branch 'devel' into faster-nimsuggestAndreas Rumpf2017-03-141-5/+10
|\