Commit graph

53 commits

Author SHA1 Message Date
Andreas Rumpf
07f58ddfa9 rename: semasgn -> liftdestructors 2019-03-14 07:59:44 +01:00
Andreas Rumpf
721bf7188b code cleanup: there is no tyOptRef 2019-02-22 19:42:11 +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
cooldome
1e63f1edb3 destructors: first step towards fixing #9617 (#10341) 2019-01-18 08:51:22 +01:00
cooldome
44b4e289d6 destructors: lift type bound operations for case and distinct objects (#10238) 2019-01-10 09:25:35 +01:00
Andreas Rumpf
5ffa9a8be6 destructors: defensive programming against wrong generated destructor for string/seq 2018-12-11 22:02:18 +01:00
Araq
3fe8b4f69d fixes #9692 2018-11-15 16:18:28 +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
Araq
e71410d74e language cleanup: the .unchecked pragma is dead 2018-11-06 13:55:03 +01:00
LemonBoy
0ead36dae6 Unchecked arrays now have their own type (#9267) 2018-10-10 21:03:18 +02:00
Andreas Rumpf
9364369c1f make tests green again 2018-09-24 16:00:57 +02:00
Andreas Rumpf
700448f359 destroyer pass: adaptations for the new destructor based runtime 2018-07-27 18:21:32 +02:00
Andreas Rumpf
04b3f8f24a enable destructors without the --newruntime switch 2018-07-04 20:36:15 +02:00
Andreas Rumpf
40ec7be45c refactoring: remove idents.legacy global variable and pass the IdentCache around explicitly 2018-05-27 22:09:15 +02:00
Andreas Rumpf
a4e2b0c153 platform.nim doesn't use globals anymore; prepare msgs.nim for not using globals 2018-05-18 15:18:00 +02:00
Araq
2a7fc84c86 remove ast.emptyNode global; cleanup configuration.nim 2018-05-16 03:06:07 +02:00
Andreas Rumpf
dd35111ff2 semstmts compiles again 2018-05-12 19:45:19 +02:00
Andreas Rumpf
ee366f1746 .experimental can now be used to enable specific features 2018-04-24 09:34:29 +02:00
Andreas Rumpf
e4081a7201 preparations for language extensions: 'sink' and 'lent' types 2018-01-07 23:09:26 +01:00
Andreas Rumpf
e695f9d94e make Nim compile with older nim versions 2017-12-28 19:48:21 +01:00
Araq
fa92c519aa more progress on destructors; removed old destructor based code as it proved confusing 2017-12-01 01:52:00 +01:00
Andreas Rumpf
70ea45cdba deprecated unary '<' 2017-10-29 08:37:13 +01:00
Araq
3aa7c2232e destructors: supportsCopyMem finally works for recursive types 2017-10-26 00:55:23 +02:00
Araq
4f2b79a380 topttree destructor finally works 2017-10-26 00:55:23 +02:00
Araq
b407f083ba destructors: work in progress 2017-10-26 00:55:23 +02:00
Andreas Rumpf
1a0032eb68 added broken tbintree test 2017-10-19 21:03:20 +02:00
Andreas Rumpf
4f633dde64 make nested custom seqs work 2017-10-19 13:29:11 +02:00
Andreas Rumpf
9911d375b3 make destructors more robust against unchecked arrays 2017-10-19 13:29:11 +02:00
Andreas Rumpf
35c8b5e3bc destructors: irresponsibly simple tcustomseq test works 2017-10-17 22:04:40 +02:00
Andreas Rumpf
58d5f96790 destructors: lift type bound ops to objects and arrays etc 2017-10-17 14:48:16 +02:00
Araq
45d74f4081 destructors: preparations for upcoming changes 2017-10-17 12:46:49 +02:00
Andreas Rumpf
8780d25e03 minor refactorings for better destructors 2017-10-14 20:37:49 +02:00
Andreas Rumpf
f7f3a25be8 first steps of making 'opt' a first class type for Nim 2017-09-25 13:19:36 +02:00
Andreas Rumpf
e879da5791 some work to make 'opt' a first class type 2017-09-24 11:21:52 +02:00
Zahary Karadjov
8cd5f1f8f5 introduce tyInferred for the unbound concept type params
* 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.
2017-03-24 16:58:15 +02:00
Andreas Rumpf
b7a1cad4a4 make tests green again 2017-02-24 13:05:58 +01:00
Andreas Rumpf
46efaf294b big compiler refactoring; avoid globals for multi method dispatcher generation 2017-02-22 16:27:52 +01:00
Araq
e6c5622aa7 removed tyArrayConstr completely from the compiler; introduced tyAlias instead in preparation for further bugfixes 2016-11-14 23:18:30 +01:00
Jacek Sieka
f5c3eb6a25 clean up tyMutable remnants 2016-10-24 23:30:10 +08:00
Jacek Sieka
b3de34548d clean up tyConst remnants 2016-10-24 23:19:46 +08:00
Jacek Sieka
f488ed973d clean up tyBigNum remnants 2016-10-24 23:11:38 +08:00
Jacek Sieka
6f7b891bdc remove remnants of tyIter 2016-10-24 21:10:48 +08:00
Andreas Rumpf
3a13706d7d fixes #4673 2016-09-01 13:02:53 +02:00
Andreas Rumpf
b47d9b7b91 fixes #4371 2016-07-08 10:34:12 +02:00
Araq
05e39cf6ad overloading of '=' works 2015-04-06 23:21:52 +02:00
Araq
78f371c03a first implementation of overloading of '='; missing: rewriting let/var sections 2015-04-06 23:21:51 +02:00
Araq
e8b4217c3b minor todo update 2015-03-23 13:10:20 +01:00
Araq
3bcafb1c3a concept example from the manual now works again 2015-03-23 13:10:19 +01:00
Federico Ceratto
c95f6f117a Fix typos 2015-02-15 16:06:06 +00:00
Araq
fe30ec83e2 nimsuggest improvements 2015-01-30 03:04:45 +01:00