summary refs log tree commit diff stats
path: root/compiler/semobjconstr.nim
Commit message (Collapse)AuthorAgeFilesLines
* Nil type check implementation (#15287)Alexander Ivanov2020-12-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Nil checking * Enable current older not nil checking again, run new checking only under flag, skip our test * Enable tests, work on try/except and bugs, fix notnil tests * Enable strictNotNil tests (currently with lowercase category) and add some expected output * Work on try/except/finally: still some things unclear and a lot of code can raise out of try * Fix the notnil build by going back to the old version of a test which I shouldn't have changed * Fix test : use action compile * Work on mutation and aliasing: not finished * Render var parititions graph, try to understand it, fix a nilcheck if bug * Rebase, progress on working with partitions * Improve time logic * Fix some bugs, use graph indices instead of symbol in nil map * Fix bugs, test simpler ident aliasing for now, support two mutation levels * Support ContentMutation and ReAssignment: for now just detect possible re assignment for var parameters of calls * Enable several simple passing tests * Cleanup a bit, fix condition/branch infix-related bug * Remove some files, address some comments by Araq * Use internalError and no quit for now * Separate tests with expected warnings and with expected ok, fix a bug with if with a single branch related to copyMap * Fix new data structures, bugs: make tests pass, disable some for now * Work on fixing errors with non-sym nodes, aliasing: tests fail * Work on alias support: simple set-based logic, todo more tests and ref sets? * Use ref sets: TODO can we think of handle seq-s similar to varpartitions' Araq ones * Handle defers in one place, stop raising in reverse to make an async test compile with strictNotNil, add a commented out test * Dot expressions: call/reassignment. Other refactorings and distinct, SeqOfDistinct support. Checkout an older varpartitions * Work on field tracking * Backup : trying to fix bugs when running some stdlib stuff for running an async test * Start a section about strict not nil checking in experimental manual * Fix experimental strict not nil manual section and move it to another file based on Araq feedback * Fix unstructured flow and double warning problems, fix manual, cleanup * Fix if/elif/else : take in account structure according to Araq feedback * Refactor a bit * Work on bracket expr support, re-enable tests, clarify in manual/tests/implementation static index support for now * Work on compiling stdlib and compiler with strictNotNil * Small fixes to the manual for strictNotNil * Fix idgen for strict check nil rebase * Enable some simple tests, remove old stuff, comment out code/print * Copy the original varpartitions source instead of my changes * Remove some files
* Make `{.requiresInit.}` to work for distinct types (#15869)Ivan Bobev2020-11-061-7/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make `requiresInit` pragma to work for distinct types in addition to objects. Tagging of distinct types with `requiresInit` pragma was already supported, but its impact wasn't applied. Now its behavior when applied on distinct types is as follows. Given the following distinct type definitions: ```nim type DistinctObject {.requiresInit, borrow: `.`.} = distinct MyObject DistinctString {.requiresInit.} = distinct string ``` The following code blocks will fail to compile: ```nim var foo: DistinctFoo foo.x = "test" doAssert foo.x == "test" ``` ```nim var s: DistinctString s = "test" doAssert s == "test" ``` But these ones will compile successfully: ```nim let foo = DistinctFoo(Foo(x: "test")) doAssert foo.x == "test" ``` ```nim let s = "test" doAssert s == "test" ```
* Big compiler Cleanup (#14777)Clyybber2020-08-281-2/+1
|
* fixes #15111 (#15136)Andreas Rumpf2020-08-011-19/+19
|
* init checks and 'out' parameters (#14521)Andreas Rumpf2020-06-231-1/+1
| | | | | | | | | | | * I don't care about observable stores * enforce explicit initializations * cleaner code for the stdlib * stdlib: use explicit initializations * make tests green * algorithm.nim: set result explicitly * remove out parameters and bring the PR into a mergable state * updated the changelog
* Fix tests/types/tparameterizedparent0Zahary Karadjov2020-04-011-1/+1
|
* Turn some of the errors back into warningsZahary Karadjov2020-04-011-0/+5
|
* Replace tfHasRequiresInit with a more accurate mechanismZahary Karadjov2020-04-011-22/+39
| | | | | | | | | The new mechanism can deal with more complex scenarios such as not nil field appearing in a non-default case object branch or a field within a generic object that may depend on a when branch. The commit also plugs another hole: the user is no longer able to create illegal default values through seq.setLen(N).
* More precise error messages for uninitialized fields in the presence of ↵Zahary Karadjov2020-04-011-35/+25
| | | | inheritance
* Turn the warning for uninitialized (result) variables into errorsZahary Karadjov2020-04-011-2/+3
|
* Plug another hole: default(T) forbidden for objects requiring initializationZahary Karadjov2020-04-011-0/+18
|
* Don't allow 'var x: T' for objects that require initializationZahary Karadjov2020-04-011-36/+32
|
* More sophistication; Allow requiresInit to be specified per-fieldZahary Karadjov2020-04-011-11/+21
|
* First steps, the compiler can boot with enforced requiresInitZahary Karadjov2020-04-011-9/+4
|
* ARC: optimize complete object constructors to use nimNewObjUninitAraq2020-01-261-0/+3
|
* Better case coverage error message for alias and range enum (#12913)Jasper Jenkins2019-12-181-47/+9
|
* Cosmetic compiler cleanup (#12718)Clyybber2019-11-281-26/+26
| | | | | | | | | | | | | | | | | | * 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
* refactoring: --newruntime consists of 3 different switchesAraq2019-10-201-1/+1
|
* Fix spellings (#12277) [backport]Federico Ceratto2019-09-271-1/+1
|
* Consider range type of runtime discrim [feature] (#11432)Oscar Nihlgård2019-08-201-16/+45
|
* int128 on firstOrd, lastOrd and lengthOrd (#11701)Arne Döring2019-08-071-1/+1
| | | | * fixes #11847
* fixes #11585Andreas Rumpf2019-07-031-2/+3
|
* fixes #11617Araq2019-07-011-0/+3
|
* parameter runtime discriminators (#11397)Jasper Jenkins2019-06-041-3/+6
| | | | | * allow param for runtime discriminator construction
* fix bool and range (#11336)Jasper Jenkins2019-05-271-4/+6
|
* Smarter variant object construction (#11273)Jasper Jenkins2019-05-261-14/+93
|
* special typing rules for owned pointersAndreas Rumpf2019-03-041-2/+5
|
* WIP: disallow 'nil' for strings and seqsAndreas Rumpf2018-08-131-2/+2
|
* refactoring: remove idents.legacy global variable and pass the IdentCache ↵Andreas Rumpf2018-05-271-3/+3
| | | | around explicitly
* sem pass compiles againAndreas Rumpf2018-05-121-33/+29
|
* more modules compile againAndreas Rumpf2018-05-121-11/+11
|
* fixes a regression about static object case variant checkingAraq2018-04-061-1/+3
|
* further steps in implementing sink parameters; refs #7041Araq2018-03-301-1/+1
|
* fixes #5450Andreas Rumpf2018-02-041-0/+4
|
* preparations for language extensions: 'sink' and 'lent' typesAndreas Rumpf2018-01-071-2/+2
|
* fixes #5999Araq2017-12-141-2/+8
|
* work in progress: new implementation for 'a[^1]'Andreas Rumpf2017-10-291-6/+9
|
* deprecated unary '<'Andreas Rumpf2017-10-291-5/+5
|
* Fixes #5965 (#6237)Daniil Yarancev2017-08-141-1/+6
|
* move the object construction logic to a separate fileZahary Karadjov2017-04-061-0/+292