summary refs log tree commit diff stats
path: root/compiler/ast.nim
Commit message (Collapse)AuthorAgeFilesLines
* rename sfAlwaysReturn to sfNeverRaisesAraq2020-03-161-1/+1
|
* catchable defects (#13626)Andreas Rumpf2020-03-121-1/+3
| | | | | | | | | | * allow defects to be caught even for --exceptions:goto (WIP) * implemented the new --panics:on|off switch; refs https://github.com/nim-lang/RFCs/issues/180 * new implementation for integer overflow checking * produce a warning if a user-defined exception type inherits from Exception directly * applied Timothee's suggestions; improved the documentation and replace the term 'checked runtime check' by 'panic' * fixes #13627 * don't inherit from Exception directly
* fixes #13519Araq2020-03-111-2/+5
|
* fix operators containing percent for VM usage (#13536)Arne Döring2020-03-111-2/+0
| | | | * fixes #13513 * merge tarithmetics in tarithm
* sink parameter inference for types that have destructors (#13544)Andreas Rumpf2020-03-041-2/+7
| | | | | | | | | | | | | | * ensure capitalize doesn't take an inferred sink parameter * sink parameter inference: first version, for now disabled. Changed that sink parameters can be consumed multiple times in order to adhere to our spec. * sink inference can now be disabled with .nosinks; sometimes for proc type interop this is required * fixes yet another critical DFA bug * better implementation that also understands if expressions etc * document sink parameter inference and allow for global disabling
* Remove dead magics (#13551)Arne Döring2020-03-031-18/+16
|
* EndsInNoReturn in expressions extension, fixes #13490 (#13520)cooldome2020-02-281-0/+2
| | | | * fix #13490
* fix `is` with generic types; fix `genericHead(Foo[T])` (#13303)Timothee Cour2020-02-091-1/+15
| | | | | * fix #9855, fix #9855, fix genericHead * render TTypeKind via toHumanStr
* fix #13150 `nim doc --project` now works reliably (#13223)Timothee Cour2020-02-061-0/+20
| | | | | | | | | | * fix #13150 `nim doc --project` works with duplicate names and with imports below main project file * add to help; fixup after #13212 isRelativeTo got merged * fix test tests/compilerapi/tcompilerapi.nim * remove nimblePkg field; compute on the fly instead * kochdocs: compiler docs now under compiler/ * --docRoot now has smart default: best among @pkg, @path
* ARC: optimize complete object constructors to use nimNewObjUninitAraq2020-01-261-0/+2
|
* make case-object transitions explicit, make unknownLineInfo a const, replace ↵Jasper Jenkins2020-01-171-34/+60
| | | | a few magic numbers with consts (#13170)
* fixes #13122 (#13126)Andreas Rumpf2020-01-131-1/+3
| | | | | | * fixes #13122 * moved tests to where they belong
* fix rtti sizeof for varargs in global scope (#13125) [backport]Jasper Jenkins2020-01-131-2/+2
|
* VM: support importc var, ptr/pointer types, cast int <=> ptr/pointer (#12877)Timothee Cour2020-01-051-1/+6
| | | | | | | | | | | | | | * VM: allow certain hardcoded special var variables at CT * VM: allow all importc var, cast[int](ptr) * fix tests tests/vm/tstaticprintseq.nim, tests/cpp/t8241.nim * VM: == works for ptr/pointer nodes * bugfix: ==, cast now also works for pointer, not just ptr * VM supports cast PtrLikeKinds <=> PtrLikeKinds / int * improve cname handling * fixup + bug fix * VM: support cast from ref to int * address comment: opcLdGlobalDeref => opcLdGlobalDerefFFI * defensive check against typ == nil
* --exception:goto switch for deterministic exception handling (#12977)Andreas Rumpf2020-01-011-4/+7
| | | | | This implements "deterministic" exception handling for Nim based on goto instead of setjmp. This means raising an exception is much cheaper than in C++'s table based implementations. Supports hard realtime systems. Default for --gc:arc and the C target because it's generally a good idea and arc is all about deterministic behavior. Note: This implies that fatal runtime traps are not catchable anymore! This needs to be documented.
* minor refactoringsAndreas Rumpf2019-12-271-0/+18
|
* ARC: cycle detector (#12823)Andreas Rumpf2019-12-171-3/+7
| | | | | | | | | | | | | * first implementation of the =trace and =dispose hooks for the cycle collector * a cycle collector for ARC: progress * manual: the .acyclic pragma is a thing once again * gcbench: adaptations for --gc:arc * enable valgrind tests for the strutils tests * testament: better valgrind support * ARC refactoring: growable jumpstacks * ARC cycle detector: non-recursive algorithm * moved and renamed core/ files back to system/ * refactoring: --gc:arc vs --gc:orc since 'orc' is even more experimental and we want to ship --gc:arc soonish
* ARC related bugfixes and refactorings (#12781)Andreas Rumpf2019-12-051-13/+7
|
* Cosmetic compiler cleanup (#12718)Clyybber2019-11-281-48/+41
| | | | | | | | | | | | | | | | | | * Cleanup compiler code base * Unify add calls * Unify len invocations * Unify range operators * Fix oversight * Remove {.procvar.} pragma * initCandidate -> newCandidate where reasonable * Unify safeLen calls
* ARC: solves phase ordering problems (#12654)Andreas Rumpf2019-11-141-2/+2
|
* implemented alignas pragma (#12643)Arne Döring2019-11-131-0/+1
| | | | | | | | | | | | * implemented alignas pragma * fix bootstrap * generate c++ compatible syntax for alignas * Make it work. * Multiple alignof expressions. Implement top level alignof.
* .cursor implementation (#12637)Andreas Rumpf2019-11-121-1/+2
| | | | | | | | | | | * cursors: first implementation * added currently failing test * .cursor works for doubly linked lists * make -d:useMalloc work again * added code to nil out refs in a destructor * it's now called --gc:arc * renderer.nim: render nkBreakState properly * make simple closure iterators work without leaking
* ast.nim: slightly better documentationAraq2019-10-241-1/+1
|
* refactor illegal iterator assignment detection (#12212)Arne Döring2019-10-111-4/+4
| | | | | | * refactor illegal iterator assignment detection * delete crappy test
* Refactor injectdestructors (#12295)Clyybber2019-10-011-4/+0
| | | One improvement over #devel is visible in the transformation of getEnv. With this approach we move to result whenever possible.
* Fix spellings (#12277) [backport]Federico Ceratto2019-09-271-5/+5
|
* updated comment in ast.nimAraq2019-09-211-1/+0
|
* add nodeId proc to macros (#11456)Arne Döring2019-09-181-1/+2
| | | | | | | | * add nodeId proc to macros * add doc comment. * fix typo
* Small ast.nim cleanup (#12156)Clyybber2019-09-091-28/+14
| | | | | * Remove sonsLen * Use Indexable
* exportc now mangles same as importc, fixes #10578 (#12144)Timothee Cour2019-09-061-0/+1
| | | | | | | * fixes #10578 * add tests * add changelog * add {.exportcpp.}
* fixes #12121 (#12126)Andreas Rumpf2019-09-051-1/+2
|
* fix min/max for float numbers (#12068)Arne Döring2019-09-021-4/+2
|
* refactor sizealignoffset (#12077)Andreas Rumpf2019-08-281-0/+1
| | | | | | | | | | | | | | * small refactoring * refactor computeObjectOffsetFoldFunction with AccumObject * refactor packed object offstes fold function * refactor compute union object offsets fold function * merge normal/packed object offset fold function * compiletime offsetof in c++ inheritance objects * enable c++ inheritance offsetof tests * correct alignment for big sets/enums on weird 32bit platforms * uncomputedSize -> unknownSize * workaround for travis * fixes win32 alignment problems
* lift destructor for openarray (#12073)cooldome2019-08-281-2/+2
| | | | * destroy for sink openarray
* Fix to int to biggest int (#12066)Arne Döring2019-08-271-4/+0
| | | | | * fix to(Biggest)Int * kill toFloat magics as well
* fixes #12056 (#12063)Andreas Rumpf2019-08-271-1/+1
|
* fixes #11972Araq2019-08-201-0/+2
|
* fixes #11891Andreas Rumpf2019-08-101-1/+3
|
* int128 on firstOrd, lastOrd and lengthOrd (#11701)Arne Döring2019-08-071-18/+60
| | | | * fixes #11847
* [refactoring] remove unused imports in the compiler and in some stdlib modulesAraq2019-07-181-2/+1
|
* [refactoring] remove zeroExtend and friends from the compiler builtins. (#11531)Arne Döring2019-06-241-8/+0
| | | | | * remove zeroExtend and friends from the compiler builtins. * fix jssys
* [bugfix] owned closures (#11544)Andreas Rumpf2019-06-201-0/+2
|
* Remove immediate pragma (#11308)Arne Döring2019-05-291-4/+0
| | | | | * remove immediate from tests * remove immediate from the compiler
* fixes #10889Andreas Rumpf2019-05-291-14/+0
|
* Iterator fixes (#11234)Jasper Jenkins2019-05-131-0/+3
|
* rename tyExpr/tyStmt to tyUntyped/tyTyped (#11227)Arne Döring2019-05-111-3/+3
|
* Make range checks in semConv (#7164)Oscar Nihlgård2019-05-101-1/+0
| | | | | | | | | | | * Remove NaN/Inf/NegInf magic * Make range checks in semConv * fix the failing line * fix `firstOrd` and `lastOrd` * fix `localError` * remove debug comment * Cleanup, fix failing test * make tests green
* Replace countup(x, y) with x .. yClyybber2019-05-071-4/+4
|
* Replace countup(x, y-1) with x ..< yClyybber2019-05-071-6/+6
|
* Fixes for ptr array deref codegen (#11191)Jasper Jenkins2019-05-071-0/+2
| | | | | * fixes for ptr array derefence codegen * fix comments, make diff nicer