Commit graph

141 commits

Author SHA1 Message Date
LemonBoy
4808ef72db [WIP] Early evaluation of mIs (#8723)
* Early evaluation of mIs

The `evalIs` implementation was just a broken copy of `isOpImpl` so
let's just avoid it alltogether: `mIs` nodes are either resolved during
the semantic phase or bust.

* Remove dead code and tidy it up
2018-10-14 08:53:41 +02:00
Timothee Cour
745f1642d6 implement sizeof and alignof operator (manually squashed #5664) (#9356) 2018-10-14 00:52:28 +02:00
LemonBoy
fab4d38411 string to string conversion keeps the dest type (#9323)
Fixes #9322
2018-10-12 08:50:28 +02:00
LemonBoy
e9b5a4e25d Constant folding should not drop distinct types
Fixes #9079
2018-09-27 17:08:01 +02:00
LemonBoy
7107ec05de Narrowing casts are applied after every op if needed (#8918)
This way we make sure not to end up with weird values every now and
then.

Fixes #7300
Fixes #8909
2018-09-08 19:41:07 +02:00
Andreas Rumpf
e4be1cb814 system.compileDate and compileTime are in UTC; fixes #7305; docgen supports SOURCE_DATE_EPOCH, fixes #3113 2018-09-03 22:23:10 +02:00
LemonBoy
2c8361bd39 Constant folding for integer casts (#8095) 2018-08-31 13:45:42 +02:00
Oscar Nihlgård
7dcf435b4b Fix abs & unary sub in semfold (#8724) 2018-08-22 15:59:33 +02:00
LemonBoy
a87341775a Don't consider tyAnd/tyNot/tyOr/tyAnything as generic (#8700)
* Don't consider tyAnd/tyNot/tyOr/tyAnything as generic

`containsGenericType` was too shallow and didn't check all the branches.
The resulting half-processed nodes are often simplified by the constant
folding pass but when that's not possible we get a nasty error during
codegen.

Fixes #8693

* Move the blame onto the semFold pass

Slightly better evaluation of `is` forms.
2018-08-22 09:40:31 +02:00
andri lim
4d5cce9882 fixes #6255, add system.ashr arithmetic right shift (#8547) 2018-08-07 18:41:30 +02:00
cooldome
404f0d64af Add sizeof for arrays of integral types (#8445) 2018-07-30 11:00:06 +02:00
LemonBoy
bfa3d62cc1 More concept fixes
Fixes #7705, #7703, #7702
2018-06-24 15:13:34 +02:00
LemonBoy
fb62dd1fae Fix constant folding for shl/not
Since the source and destination types are the same the result should be
trimmed to fit.
2018-06-19 22:32:15 +02:00
Andreas Rumpf
669a564492 remove more global variables in the Nim compiler 2018-05-27 11:10:56 +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
Andreas Rumpf
328e7a1005 options.nim: no global variables anymore 2018-05-13 17:52:21 +02:00
Andreas Rumpf
a6e53ec47b semfold compiles again 2018-05-10 14:38:12 +02:00
Andreas Rumpf
5bf31fcabe big refactoring: mores stuff compiles 2018-05-10 13:39:23 +02:00
Oscar Nihlgård
cc0ca43743 Don't hide overflow/underflow/divbyzero in semfold (#7732)
* firstOrd/lastOrd bugfix
* Don't hide overflow/underflow/divbyzero in semfold
2018-05-02 08:54:09 +02:00
tersec
262aafa0a9 https://reproducible-builds.org/ support via SOURCE_DATE_EPOCH (#7644) (#7661) 2018-04-20 07:04:50 +02:00
Andreas Rumpf
47335aab41 introduce nkTupleConstr AST node for unary tuple construction; breaking change 2018-04-13 17:45:58 +02:00
Araq
2c1f1f21bf fixes #3985 2018-02-10 21:20:48 +01:00
GULPF
94038545be Fixes codegen bug with literal negative zero, fixes #7079 (#7158)
* Fixes #7079

* Fix handling of neg zero during constant folding
2018-01-31 16:29:42 +01:00
Andreas Rumpf
68dfd1729e fixes #6989 2018-01-27 07:59:40 +01:00
Andreas Rumpf
e4081a7201 preparations for language extensions: 'sink' and 'lent' types 2018-01-07 23:09:26 +01:00
Araq
ee67a67ac4 first steps in adding template/macro calls to stack traces 2017-12-21 10:03:33 +01:00
Andreas Rumpf
e61d8166cc fixes the second example of #6757 2017-11-17 16:23:54 +01:00
Andreas Rumpf
e9243a1616 Merge branch 'devel' into araq 2017-10-02 08:31:38 +02:00
Andreas Rumpf
1a61c4d46d first implementation of the 'func' keyword 2017-09-23 23:22:53 +02:00
Andreas Rumpf
5298a72f34 NimScript: added buildOS and buildCPU constants 2017-09-22 13:29:45 +02:00
Andreas Rumpf
bc738d63a7 no interval arithmetic anymore to construct implicit range types; breaking change 2017-07-13 05:13:12 +02:00
Zahary Karadjov
24966e006a fix #1082 2017-06-20 11:29:42 +02:00
Zahary Karadjov
cd02561368 introduce a pre-processing pass for the concept bodies
fixes #4982
fixes #3805

close #3414
2017-06-20 11:29:42 +02:00
Arne Döring
92c2a51bf7 removed compiler internal list implementation (#5371) 2017-02-22 17:33:12 +01:00
Araq
61181702d5 fixes #5399 2017-02-16 11:35:15 +01:00
Araq
aebe9d7d13 make more tests green 2017-02-16 01:43:12 +01:00
Araq
68617adb91 fixes #5216 2017-01-27 09:49:45 +01:00
Andreas Rumpf
249a352c6b fixes #3434 2017-01-19 07:11:17 +01:00
Araq
237252f90c Merge branch 'devel' into sighashes 2016-12-19 11:35:45 +01:00
Araq
a88a965c6d fixes nimsuggest issue #40 2016-12-18 00:06:46 +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
Andreas Rumpf
c2df609cd6 fixes a compiler crash; refs #4699 2016-09-03 11:12:19 +02:00
Jacek Sieka
3cd4cf4320 remove unused stuff 2016-08-09 22:54:27 +08:00
Jacek Sieka
7d62f031f6 remove sfFakeConst 2016-07-30 16:19:53 +08:00
Andreas Rumpf
60b187513e stdlib and compiler don't use .immediate anymore 2016-07-29 23:51:01 +02:00
Andreas Rumpf
9605435f2e get rid of deprecated toLower/toUpper 2016-07-19 19:28:01 +02:00
Andreas Rumpf
ab3c684c62 fixes #3545 2016-07-15 01:55:42 +02:00
Jeff Ciesielski
94d1aa5109 Add the ability to pass a value with the -d flag
This allows the end user to use the {.magic: "IntDefine"/"StrDefine"}
pragmas to pass values into code at compile time.  This has a nice side
effect of also allowing/requiring a default value to be assigned in the
code (see osalloc.nim/StandaloneHeapSize for an example)
2016-07-04 18:11:25 -04:00
A. S. Budden
0cc7c9a13c Modification to implementation of round() such that it returns a float and accepts a places argument (fixes #3473).
This also involved moving some functions around to get the hierarchy correct and the documentation for frexp was modified such that it was clear that it can return a float in either the range [-1, -0.5] or [0.5, 1].
2016-05-31 13:17:40 +01:00
Andreas Rumpf
38040e7691 fixes #4040 2016-05-11 20:00:28 +02:00