summary refs log tree commit diff stats
path: root/compiler/semexprs.nim
Commit message (Collapse)AuthorAgeFilesLines
* Relax the restrictions on the index types (#9412)LemonBoy2018-10-181-17/+12
|
* fixes a regression about indexing into UncheckedArrayAndreas Rumpf2018-10-161-1/+12
|
* fixes #2760Araq2018-10-151-1/+1
|
* [WIP] Early evaluation of mIs (#8723)LemonBoy2018-10-141-4/+2
| | | | | | | | | | * Early evaluation of mIs The `evalIs` implementation was just a broken copy of `isOpImpl` so let's just avoid it alltogether: `mIs` nodes are either resolved during the semantic phase or bust. * Remove dead code and tidy it up
* implement sizeof and alignof operator (manually squashed #5664) (#9356)Timothee Cour2018-10-141-11/+4
|
* Make sure the annotation for `||` is avail. at CT (#9354)LemonBoy2018-10-141-0/+8
| | | Closes #9353
* compiler: show name of instantiating context in error traces (#6763) (#9207)xzfc2018-10-111-1/+1
|
* Unchecked arrays now have their own type (#9267)LemonBoy2018-10-101-1/+1
|
* Merge pull request #8990 from LemonBoy/fix-8259Andreas Rumpf2018-09-171-0/+2
|\ | | | | Always check the deduced type validity for result
| * Always check the deduced type validity for resultLemonBoy2018-09-171-0/+2
| | | | | | | | Fixes #8259
* | fixes #1616; fixes 'nim doc' regressionsAndreas Rumpf2018-09-171-5/+6
|/
* extended system.type/typeof to support an upcoming 'collect' macro that ↵Andreas Rumpf2018-09-111-12/+12
| | | | works much better than sugar.lc
* Fix type comparison in semConv (#8907)LemonBoy2018-09-071-1/+2
| | | Fixes #8905
* change runnableExamples implementation; fixes #8641; fixes #7135; ↵Andreas Rumpf2018-09-021-17/+11
| | | | runnableExamples works for templates and generics
* introduce precise string '[]', '[]=' accessors; fixes #8049 (#8817)Andreas Rumpf2018-08-301-2/+2
|
* enforce the condition of a 'when' condition to be of type bool; refs #8603Andreas Rumpf2018-08-231-1/+1
|
* fixes merge conflictAraq2018-08-231-0/+5
|\
| * Don't consider tyAnd/tyNot/tyOr/tyAnything as generic (#8700)LemonBoy2018-08-221-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Don't consider tyAnd/tyNot/tyOr/tyAnything as generic `containsGenericType` was too shallow and didn't check all the branches. The resulting half-processed nodes are often simplified by the constant folding pass but when that's not possible we get a nasty error during codegen. Fixes #8693 * Move the blame onto the semFold pass Slightly better evaluation of `is` forms.
* | some progress on destructors for builtin seqsAndreas Rumpf2018-08-201-1/+4
|/
* fixes #8425Araq2018-08-041-1/+1
|
* keep the imports in runnableExamples visible in generated html doc (#8354)skilchen2018-07-191-2/+3
|
* fix #7405 and #8195 (#8198)Timothee Cour2018-07-161-0/+3
| | | | | | | | * fix #7405 and #8195 * control pushInfoContext in semExprNoType,genStmts via a new hintExtendedContext; make NotesVerbosity computation more DRY * addressed comments
* enable destructors without the --newruntime switchAndreas Rumpf2018-07-041-6/+1
|
* Minor changes to discardable handling (#8155)LemonBoy2018-07-011-13/+0
|
* fix #8129 by calling `semExpr` in `semIs` if node is `strLit` (#8130)Vindaar2018-06-291-0/+2
| | | | | | | | | | | | | | | | | | | * call `semExpr` in `semIs` if node is `strLit`, fixes #8129 In case the second son of the node in `semIs` is of kind `strLit`, we now call `semExpr` to set the `typ` field of that node. Also removes the `t2 != tyTypeDesc` check in `isOpImpl`, since the kind of `n[2]` is already assertet with the `internalAssert`. * reintroduce check for `t2.kind != tyTypeDesc` to fix test case The `internalAssert` in the `isOpImpl` doesn't check `n.sons[2].typ.kind` as I previously read, but rather `n.sons[2].kind`. Therefore the check for `tyTypeDesc` here is useful. Otherwise the last test case in `isopr.nim` fails. Also removes the flag `efDetermineType` from the call to `semExpr`.
* Merge branch 'devel' into typedesc-reformsAndreas Rumpf2018-06-261-2/+2
|\
| * More concept fixesLemonBoy2018-06-241-2/+2
| | | | | | | | Fixes #7705, #7703, #7702
* | requested pull-request changesZahary Karadjov2018-06-161-0/+1
| |
* | fix some breakage after rebasingZahary Karadjov2018-06-161-1/+1
| |
* | fixes #7222; fixes #5595; fixes #3747Zahary Karadjov2018-06-161-0/+30
| | | | | | | | | | | | | | | | | | | | * late instantiation for the generic procs' default param values * automatic mixin behaviour in concepts Other fixes: * don't render the automatically inserted default params in calls * better rendering of tyFromExpr
* | Implement the `is` operator for the new static and typedesc type classesZahary Karadjov2018-06-161-20/+61
| | | | | | | | | | | | | | | | | | This also makes the first baby steps towards a sound treatment of higher-order kinds (type type int). Adds test cases showcasing the new features. * Also fixes breakage after the rebase
* | A minimal patch enabling the new typedesc and static types syntaxZahary Karadjov2018-06-161-6/+33
|/
* implements a --nep1:on switch to make the compiler enforce the naming ↵Andreas Rumpf2018-06-131-1/+1
| | | | conventions outlined in NEP-1
* Fixes #6803Yuriy Glukhov2018-06-111-0/+3
|
* fixes yet another merge conflictAraq2018-06-111-2/+0
|\
| * Merge pull request #8009 from yglukhov/remove-oldIterTransfAndreas Rumpf2018-06-111-2/+0
| |\ | | | | | | Removed oldIterTranf feature
| | * Removed oldIterTranf featureYuriy Glukhov2018-06-101-2/+0
| | |
* | | fixes merge conflictAraq2018-06-111-4/+2
|\| |
| * | fix #7997Vindaar2018-06-101-4/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes issue #7997, which was caused by an export of a `release` proc in `locks`. Thus the `release` in `defined(release)` of the `ifDebug` template, was of kind `nkSym` instead of `nkIdent`. We fix this by getting the `PIdent` of the argument to `defined` using `considerQuotedIdent`. This has the nice property of also checking for a valid identifier for us. E.g. `defined(123)` would fail with ``` Error: in expression 'defined(123)': identifier expected, but found '123' ``` The `localError` is removed, due to a clear distinction between `declared` and `defined` now.
* | fixex merge conflictsAraq2018-06-081-1/+1
|\|
| * Merge branch 'devel' into yield-in-tryYuriy Glukhov2018-05-151-231/+238
| |\
| * | Yield in tryYuriy Glukhov2018-05-091-1/+1
| | |
* | | incremental compilation: implemented basic replay logicAndreas Rumpf2018-06-021-3/+3
| | |
* | | refactoring: remove idents.legacy global variable and pass the IdentCache ↵Andreas Rumpf2018-05-271-18/+18
| | | | | | | | | | | | around explicitly
* | | remove more global variables in the Nim compilerAndreas Rumpf2018-05-271-10/+10
| | |
* | | make semantic checking free of globalsAndreas Rumpf2018-05-181-2/+2
| | |
* | | platform.nim doesn't use globals anymore; prepare msgs.nim for not using globalsAndreas Rumpf2018-05-181-7/+7
| | |
* | | preparations of making compiler/msgs.nim free of global variablesAndreas Rumpf2018-05-171-1/+1
| | |
* | | remove ast.emptyNode global; cleanup configuration.nimAraq2018-05-161-13/+16
| |/ |/|
* | fixes testament compilationAraq2018-05-141-5/+28
|\|