Commit Graph

212 Commits

Author SHA1 Message Date
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
Andreas Rumpf
1a61c4d46d first implementation of the 'func' keyword 2017-09-23 23:22:53 +02:00
Araq
f127a7f7aa fixes #6096 2017-07-17 16:43:10 +02:00
Andreas Rumpf
5932ad9ae8 fixes a JS codegen regression 2017-07-10 16:40:23 +02:00
Andreas Rumpf
674db58a24 fixes #5608 2017-07-09 12:03:50 +02:00
Araq
4de989d1c5 fixes #6035 2017-06-30 12:01:51 +02:00
Andreas Rumpf
d9d61fbeb4 fixes #5517 2017-06-30 00:43:19 +02:00
Andreas Rumpf
ac63a99892 fixes #5974 2017-06-29 20:25:42 +02:00
Andreas Rumpf
6f29041f09 fixes #5563 2017-06-29 18:48:24 +02:00
Andreas Rumpf
5d6c2f89de fixes #4703 2017-06-29 18:37:53 +02:00
Andreas Rumpf
326e8fdc2f JS gen: fixes regression 2017-06-26 08:49:52 +02:00
Andreas Rumpf
42c9bb3ace fixes #5933 2017-06-03 21:08:32 +02:00
Andreas Rumpf
d1f5e3b110 fixes #4139 2017-06-03 14:30:16 +02:00
zah
39aef12446 review and merge zahary's work (#5849)
* proper indentation for the generated JS code
* improved dead-code elimination for JavaScript
* test the JS dead-code elimination

A new test spec has been added - "maxcodesize". It specifies the
maximum size of the generated code in bytes.
2017-06-03 12:45:10 +02:00
Yuriy Glukhov
6e0e3b75cf Fixed const sets in JS (#5790) 2017-05-10 09:29:30 +02:00
Andreas Rumpf
56a5c249c9 JS codegen: produce better code for constant sets 2017-05-01 09:30:56 +02:00
Andreas Rumpf
3d34a9f6d3 js codegen: emit more line information 2017-04-26 12:50:36 +02:00
Silvio
2946c7a4b9 Implementing repr for JS (#5578) 2017-03-31 22:00:48 +02:00
Andreas Rumpf
529609f7ed Merge remote-tracking branch 'origin/concepts-rebased' into araq 2017-03-31 16:40:21 +02:00
Andreas Rumpf
720eca5744 added a codegen note 2017-03-29 10:58:01 +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
Silvio
51cd3bd86f Fixes #5062 (#5527); JS: holes in enums 2017-03-15 10:33:37 +01:00
Andreas Rumpf
46f33515d7 Merge branch 'devel' into faster-nimsuggest 2017-02-24 01:28:50 +01:00
Arne Döring
92c2a51bf7 removed compiler internal list implementation (#5371) 2017-02-22 17:33:12 +01:00
Andreas Rumpf
46efaf294b big compiler refactoring; avoid globals for multi method dispatcher generation 2017-02-22 16:27:52 +01:00
Michael Jendrusch
d75760f5d3 made nodecl implicit for vars in the js backend. (#5297) 2017-01-29 17:34:08 +01:00
shsnow23
c7e54eba91 fix genderef of jsgen (#5274) 2017-01-24 16:59:34 +01:00
Yuriy Glukhov
0ead17bf0e Fixes #5271 (#5273) 2017-01-24 06:19:28 +01:00
Yuriy Glukhov
268c899b98 Fixup #5240 (#5270) 2017-01-23 20:09:43 +01:00
Michael Jendrusch
953b8cbcc2 fixes #5234 (#5240) 2017-01-20 05:16:42 +01:00
Yuriy Glukhov
05dec08cea Fixes #5244 (#5245) 2017-01-18 20:13:08 +01:00
Michael Jendrusch
454547da8e Removed mangling of object fields for the js target only. (#5226)
* removed mangling of object fields for the js target only.

* changed default mangling behaviour for the php target as well.

* Added test for unorthodox field names (reserved words and operators). Adjusted field accessors and object constructors / new to be ECMAScript first edition compatible, when using fieldnames which are reserved words.
2017-01-17 16:43:06 +01:00
Araq
9c47bb9cc0 happy new year 2017-01-07 22:35:09 +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
Araq
9e6fb3f696 new dependency tracking for nimsuggest 2016-11-05 01:19:23 +01:00
Araq
29db0d8585 refactoring complete: explicit ident cache 2016-10-31 19:47:20 +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
Yuriy Glukhov
82b022ebc6 JS: Fixed ICE on ptr assignment 2016-09-20 17:01:53 +03:00
Andreas Rumpf
3a13706d7d fixes #4673 2016-09-01 13:02:53 +02:00
Yuriy Glukhov
e39138fe42 Fixed codegen for asmNoStackFrame pragma. More bulletproof frame restoration. 2016-08-27 19:37:49 +03:00
Yuriy Glukhov
62785be5a5 Restore framePtr after exceptions 2016-08-27 18:09:24 +03:00
Yuriy Glukhov
8bff930c7c Fixed js codegen issue for uncaught exceptions. 2016-08-27 16:52:08 +03:00
Andreas Rumpf
84a09d2f5b minor things 2016-08-24 11:48:40 +02:00
Andreas Rumpf
200ccff015 fixes #4632 2016-08-23 17:51:26 +02:00
Hans Raaf
bb683cb983 Fix using ptr to seq in js backend.
I suddenly got ReferenceError exceptions for some of the code which is
using etyBaseIndex ptr. Initialising the xxx_Idx part of the variable
fixes this problem.
2016-08-07 03:48:20 +02:00
Andreas Rumpf
60b187513e stdlib and compiler don't use .immediate anymore 2016-07-29 23:51:01 +02:00