Commit graph

754 commits

Author SHA1 Message Date
Andreas Rumpf
bf592c4e94
more destructor based changes (#10885)
* mark user defined destructors with sfOverriden to simplify the logic
* refactoring in preparation to merge liftings and generic instantiations for destructors
* ast: introduce nkHiddenTryStmt for destructor generation in order to be able to optimize better the code later on
* renamed 'patterns' switch to 'trmacros' as it was totally misleading before
* destructors: introduce tfCheckedForDestructor flag in preparation of strict =destroy checking
* test for invalid/too late destructor introductions
* liftdestructors: make code robust for nimsuggest
* --newruntime works for hello world again
* newruntime: code generation for closures
2019-03-23 00:12:05 +01:00
Andreas Rumpf
d3df1b8eda mark user defined destructors with sfOverriden to simplify the logic 2019-03-19 12:48:54 +01:00
Andreas Rumpf
07f58ddfa9 rename: semasgn -> liftdestructors 2019-03-14 07:59:44 +01:00
Andreas Rumpf
3c0f01faa0 fixes #10791 2019-03-06 14:22:12 +01:00
Andreas Rumpf
a6d49c3a81 special typing rules for owned pointers 2019-03-04 15:41:07 +01:00
Andreas Rumpf
728ff1004a gc:destructors: progress 2019-02-28 22:39:24 +01:00
Neelesh Chandola
9884129058 Tuple unpacking now works for for vars (#10152)
* Tuple unpacking now works for `for` vars
* Give error if length of tuple vars != length of tuple
* Fix error message showing wrong tuple length
* unpacking now works now for mutable items
* Update changelog
2019-02-23 14:01:34 +01:00
Andreas Rumpf
ea409fb15a first steps in implementing 'owned' pointers; undocumented, do not use 2019-02-23 08:44:08 +01:00
Arne Döring
6b9a139f7f
error message for accidental use of macro (#10490)
* error message for accidental use of macro
2019-02-19 12:21:42 +01:00
Andreas Rumpf
2deb1e354f
fixes #10702 (#10705)
* --define:nimQuirky exception handling for Nim; in preparation of a blog post
* make it work with latest system.nim
* make code more readable
* fixes #10702
2019-02-18 15:23:05 +01:00
Arne Döring
594c2576e6 Print missing case labels (#10600) 2019-02-09 07:36:30 +01:00
LemonBoy
6c8dee4180 Avoid evaluating macros twice in type sections (#10550)
Fixes #10548
2019-02-06 11:35:44 +01:00
Andreas Rumpf
dee8e6e98a
gc: destructors is beginning to work (#10483)
* kochdocs.nim: code cleanup
* docgen: nicer indentation
* parser.nim: code cleanup
* fixes #10458
* make tests green again
* make =destroy mixins
* gc:destructors: produced C code is almost working
* --gc:destructors simple program compiles (but leaks memory)
* gc:destructors make examples compile in C++ mode
* destructors: string implementation bugfixes
* strs.nim: minor code cleanup
* destructors: builtin seqs are beginning to work
* remove debugging helpers
2019-01-29 15:12:16 +01:00
LemonBoy
9c0e5c4c07 Harmonize the var/let and const handling (#10410)
Fixes #10333
2019-01-23 11:10:51 +01:00
LemonBoy
eee9729f53 Fix semantic analysis with noReturn proc in tail pos (#10422)
Fixes #10417
2019-01-23 07:30:49 +01:00
Neelesh Chandola
226c15499f Fix compileTime pragma applying to whole var/let section (#10389) 2019-01-22 07:55:11 +01:00
alaviss
413755fd45 Correct lineinfo for accent quoted symbols in proc definition (#10399)
* compiler/parser: preserve lineinfo for accent quoted symbols

Previously the lineinfo for symbol $$$ in this example is:

    proc `$$$`
             ^

After this commit:

    proc `$$$`
          ^

* compiler/semstmts: correct lineinfo for accent quoted idents

Previously nimsuggest would highlight this as:

    proc `$$$`
         ^~~

After this commit:

    proc `$$$`
          ^~~

* nimsuggest/tests: add a test for accent quoted proc

Disabled by default
2019-01-21 16:57:48 +01:00
cooldome
1e63f1edb3 destructors: first step towards fixing #9617 (#10341) 2019-01-18 08:51:22 +01:00
LemonBoy
15584879b9 Properly wrap discarded statements (#10322)
Failing to do so lead the codegen to emit invalid code sometimes,
especially when C++ references were involved.

Fixes #10241
2019-01-17 07:55:29 +01:00
Neelesh Chandola
8922063bd8 typed/untyped return type is invalid for everything except templates and macros (#10275) 2019-01-15 08:08:12 +01:00
jcosborn
044cef152f add custom pragma support for var and let symbols (#9582)
* add custom pragma support for var and let symbols
* updated changelog for custom pragmas on var and let symbols
* add oldast switch for backwards compatibility
2019-01-07 12:36:06 +01:00
Neelesh Chandola
7c5ae00887 exportc is now not allowed for type aliases (#9979) 2019-01-02 20:01:06 +01:00
Neelesh Chandola
9faad7591e Deprecate gc v2 (#10151)
* Deprecate gc v2

* warnDeprecated now has custom messages
2019-01-01 13:50:48 +01:00
deech
e87910197a Check there are no side effects before optimizing away compile time expressions. (#9934) 2018-12-31 14:41:24 +01:00
Neelesh Chandola
65a52ecebb Fix const tuple unpacking not working for variables > 2 (#10099) 2018-12-27 00:50:33 +01:00
alaviss
58d293d6a9 fixes nim-lang/nimsuggest#76 (#10093)
* nimsuggest: prevent out-of-bound access

* fixes nim-lang/nimsuggest#76

* undo tester changes
2018-12-25 21:08:16 +01:00
Andreas Rumpf
3300c8a500 much simpler implementation of constant tuple declarations 2018-12-19 11:11:33 +01:00
Neelesh Chandola
8e90ed0618 Const tuple unpacking (#9964)
* tuple unpacking is now supported for consts

* Move nkConstTuple to the end of TNodeKind

* Add nnkConstTuple in macros.nim

* Fix Formatting
2018-12-19 10:52:41 +01:00
Andreas Rumpf
72500420d3
Fixes #3060 and adds error checking for invalid else branches in object variants (#9957)
* Fix semRecordCase

* Fix ftpclient.nim

* Check for ordinal type

* Check tyRange for exhaustiveness
2018-12-19 10:03:22 +01:00
Andreas Rumpf
e3a668a33b --gc:destructors: baby steps 2018-12-15 13:54:41 +01:00
Andreas Rumpf
446f911a17 better error message for 'proc' that is not intended to be used as a typeclass 2018-12-15 09:09:46 +01:00
Neelesh Chandola
b2411db541 Merge remote-tracking branch 'upstream/devel' into record-case 2018-12-13 13:59:46 +05:30
Neelesh Chandola
a3c4791e9c Give error when case has an else branch even though all cases are already covered (#9930)
* Give error when case has an else branch even though all cases are already covered.
* Don't check for invalid else for type tyFloat..tyFloat128, tyString, tyError
* Remove unnecessary else in unittest.nim
* Fix sockets.nim
2018-12-13 09:08:10 +01:00
Neelesh Chandola
1f1d7b1088 Fix semRecordCase 2018-12-13 12:11:56 +05:30
Andrii Riabushenko
df0f0f2858 custom pragmas in pragma blocks 2018-12-11 23:35:46 +00:00
Andreas Rumpf
606b43ba11
Merge pull request #9911 from nc-x/fixes-#9627
`include` now accepts collective arguments
2018-12-09 13:47:45 +01:00
Neelesh Chandola
9aa783624d include now accepts collective arguments 2018-12-09 12:33:58 +05:30
Araq
e874705971 fixes nested gensym'ed parameters; fixes #9476 2018-12-08 13:30:06 +01:00
Araq
bc8cea2672 fixes #9614 [backport] 2018-12-05 19:49:37 +01:00
Timothee Cour
d502ddea9e fix #9832 (fixup) (#9859) 2018-12-04 16:48:08 +01:00
Timothee Cour
05769020d3 fixes #9832 (#9841) [backport] 2018-12-04 11:13:49 +01:00
Andreas Rumpf
413580bc04 new minor language feature: .noSideEffect blocks like .gcsafe blocks 2018-11-27 00:36:29 +01:00
Arne Döring
39ad3a0da6
fix #9726 (#9765) 2018-11-20 13:12:47 +01:00
Andreas Rumpf
6e8ed8c6fa added first version of a nimfind tool for the poor souls that don't have a good nimsuggest integretation 2018-11-14 16:04:54 +01:00
Andreas Rumpf
8d850f7a69
deprecated ospaths (#9665) 2018-11-09 16:36:49 +01:00
Arne Döring
16353c2ac8 fix #8011 2018-11-08 22:28:29 +01:00
Araq
e844e536bf Nim style checker: document the switch; fixes #9564 2018-10-30 15:03:28 +01:00
cooldome
eaca5be9d6 Change the order of compilation passes, transformation is made lazy at code gen (#8489)
* Ast no transformation
* Add getImplNoTransform to the macros module
* progress on delaying transf
* Fix methods tranformation
* Fix lazy lambdalifting
* fix create thread wrapper
* transform for lambda lifting
* improve getImplTransformed
* Fix destructor tests
* try to fix nimprof for linux
2018-10-18 20:21:25 +02:00
Araq
604dfebee0 disallow 'continue' that is not used within a loop; fixes #6367 2018-10-18 17:42:57 +02:00
Miran
675c629fee replace deprecated safeAdd with add (#9416) 2018-10-18 12:29:32 +02:00