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