Commit Graph

191 Commits

Author SHA1 Message Date
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
Andreas Rumpf
f1e77d3124 fixes #4496 2016-07-18 13:05:18 +02:00
Andreas Rumpf
b7c1be03c8 added system.newSeqOfCap for improved efficiency 2016-07-15 17:04:14 +02:00
Andreas Rumpf
f47165af11 fixes #3706 2016-07-13 01:06:33 +02:00
Andreas Rumpf
7a018007a4 fixes #4471 2016-07-12 00:50:25 +02:00
Andreas Rumpf
bcb2365dec fixes a critical JS codegen bug which caused 'importcpp' statements not to be emitted 2016-07-11 23:19:24 +02:00
Andreas Rumpf
c9ce38e56d fixes a strange JS codegen bug 2016-07-11 23:19:24 +02:00
Andreas Rumpf
66f37971e9 undocumented feature: JS backend: unit and group separators generate hash and at symbols 2016-07-09 00:28:14 +02:00
Andreas Rumpf
ba273057e3 Fixes a critical JS codegen bug about @ in call pattern 2016-07-08 23:03:11 +02:00
Andreas Rumpf
b47d9b7b91 fixes #4371 2016-07-08 10:34:12 +02:00
Yuriy Glukhov
a76b74ed74 Repr now works in js for enums starting with non-zero. 2016-07-05 22:43:59 +03:00
Andreas Rumpf
ad8784eef0 PHP codegen: code works with PHP 5.3 (with some luck) 2016-06-23 01:45:10 +02:00
Andreas Rumpf
2405f8e347 PHP backend: proper setLen implementation 2016-06-21 11:50:24 +02:00
Andreas Rumpf
e8d507c859 system. for cstrings uses value comparisons, not reference comparisons 2016-06-02 16:38:20 +02:00
Yuriy Glukhov
4d0d2d69f3 Fixes #4222 2016-05-26 08:49:56 +03:00
Andreas Rumpf
746132d696 PHP codegen improvements 2016-05-13 00:47:18 +02:00
Andreas Rumpf
b48e178969 JS target improvements 2016-04-29 17:56:06 +02:00
Andreas Rumpf
55aa4c2689 fixes a critical PHP codegen bug 2016-04-29 09:09:49 +02:00
Hans Raaf
fcc6daf78b Fix PHP and JS codegen to not escape single quotes in strings anymore. 2016-03-14 21:33:14 +01:00
Andreas Rumpf
87e52bddbe Merge pull request #3949 from oderwat/hara-php-addr
Try to fix addr() ref and pointer for PHP
2016-03-10 13:39:32 +01:00
Hans Raaf
060a820d62 Try to fix addr() ref and pointer for PHP 2016-03-08 16:16:21 +01:00
Hans Raaf
5450c944d7 Fix für PHP codegen integer modulo calculation. 2016-03-07 20:08:58 +01:00