Clyybber
4b9eea2fcc
Fix forward declarations in shadow scope contexts ( #15386 )
...
* Fix forward declarations in shadow scope contexts
* Add testcase for #15385
* Less empty lines
* Fix tests
* Inline isShadowScope
* Add original testcase (with reduced amount of iterations)
* Add testcase without forward decl
2020-09-22 18:24:13 +02:00
cooldome
d938c6411e
fix #15326 ( #15341 )
2020-09-16 21:37:23 +02:00
cooldome
341be0b61c
proc params as syms ( #15332 )
...
* proc params are now syms
* Fix typesrenderer
* Add testcase for disrupteks issue
* fix test
* Trigger build
* Trigger build
* Trigger build
Co-authored-by: Clyybber <darkmine956@gmail.com >
2020-09-16 17:25:24 +01:00
Miran
c49b88163c
"for-loop macros" are no longer an experimental feature ( #15288 )
2020-09-08 14:25:25 +02:00
Clyybber
fb58066b61
Fix #5691 ( #15158 )
...
* Fix #5691
* Cleanup and thoughts
* Use scope approach
* Seperate defined/declared/declaredInScope magics
* Fix declaredInScope
* Update spec accordingly
2020-08-27 15:50:59 +02:00
Clyybber
2629d619a1
Fix forward declaration issues in template/macro context ( #15091 )
...
* Fix forward declaration issues in template/macro context
* Correct forward declaration resolving for overloads
* Remove old dead code
* WIP consistent gensym ids
* Minimize diff
* Remove obsoleted hack
* Add templInstCounter to give unique IDs to template instantiations
* Remove obsoleted code
* Eh, init in myOpen, not myProcess...
* Remove optNimV019
* Add testcase for #13484
2020-07-29 16:17:20 +02:00
Timothee Cour
169ca37d26
enable,document,test getImplTransformed, very useful for understanding how nim transforms code ( #14924 )
...
* enable,document,test getImplTransformed, very useful for understanding how nim transforms code
2020-07-18 10:49:36 +02:00
Clyybber
695a537c05
Closes #13253
2020-07-14 19:50:42 +02:00
Juan Carlos
9465b5db44
Clean up macros ( #14959 )
2020-07-14 16:44:56 +02:00
Clyybber
9016dd96ee
Add testcase for #12129 ( #14940 )
...
* Add testcase for #12129
* Fix test
2020-07-08 22:04:21 +02:00
Timothee Cour
9c42ae91b7
add legacy workaround; improve test so that it actually tests for the bugfix
2020-06-19 09:53:06 +02:00
solo989
408518c9fe
Update tuple newLit
2020-06-19 09:53:06 +02:00
cooldome
e5b64af831
Implement rendering of []=, {}, {}= braces ( #14539 )
...
* render curly braces
* fix typo
* fix test
Co-authored-by: cooldome <ariabushenko@bk.ru >
2020-06-01 19:56:17 +02:00
hlaaftana
3e060cfb0a
=> supports pragmas & names (+ changed behavior) ( #14200 )
...
* => supports pragmas & names (+ changed behavior)
(x, y: int) is now parsed as (x: int, y: int) instead of
(x: auto, y: int) inside => and ->.
* fix pragma check
* fixes, use since & LHS of -> supports pragmas
2020-05-03 10:22:49 +02:00
Araq
ff1c0bae4c
update tests that tested for the 'discard' error messages
2020-05-02 22:31:19 +02:00
zah
e50441ab33
Fix typeSym.getImpl for ref types ( #13752 )
...
* Fix typeSym.getImpl for ref types
* Fix a codegen issue affecting the test suite of nim-beacon-chain
* Fix tests/stdlib/tjsonmacro
To understand the fix better it may help to take a look
at the history of the replaced code.
The nil check that is removed in this commit was introduced
in another fix that failed to identify the root cause of the
issue - namely that we allow an object type to exist for which
no ast is present:
https://github.com/nim-lang/Nim/pull/9601/files
The original intention of the code is more obvious here:
https://github.com/nim-lang/Nim/pull/9538/files
2020-03-26 09:26:19 +01:00
Miran
5b55aa52d0
fix deprecations and other warnings ( #13748 )
2020-03-25 19:15:34 +01:00
Arne Döring
f95eef99a9
add expectIdent to macros ( #12778 )
...
* add expectIdent to macros
* apply feedback
* Update lib/core/macros.nim
Co-Authored-By: Clyybber <darkmine956@gmail.com >
* Update texpectIdent2.nim
* Update texpectIdent1.nim
Co-authored-by: Clyybber <darkmine956@gmail.com >
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2020-03-11 08:27:31 +01:00
Timothee Cour
eec07b4e84
fix several bugs with repr ( #13386 )
2020-02-11 21:33:06 +01:00
Arne Döring
b0c06aa711
fix #12740 ( #12774 )
...
* fix #12740
* A different kind of a hack
* proper fix
* fix typo
2019-12-04 07:33:01 +00:00
Arne Döring
03fa9a9041
fix regression in align ( #12680 )
...
* fix regression in align
* add test typesym without type
2019-11-19 09:58:47 +01:00
Arne Döring
94675c2378
backtick and export marker handling in eqIdent ( #12574 )
2019-11-07 14:40:44 +01:00
narimiran
c6a451c584
remove unused imports from tests
2019-11-06 14:35:45 +01:00
Andreas Rumpf
3ba3307d61
remove deprecated procs ( #12535 )
2019-11-05 11:05:46 +01:00
zah
a4ade43536
macros.newLit now works for ref object types ( #12307 )
2019-09-30 22:24:57 +02:00
Federico Ceratto
39290cf88c
Fix spellings ( #12277 ) [backport]
2019-09-27 07:02:54 +02:00
Jasper Jenkins
40c5175145
fix range.getType crash
2019-09-05 15:56:44 -07:00
nc-x
d5840e1e3d
Implement isExported for symbols in macros ( #11963 )
...
* Implement isExported for macros
* Reimplement isExported using VM callback mechanism
* VM does not support exceptions, use stacktrace() instead.
2019-08-18 11:51:28 +02:00
Arne Döring
44e7a7b6c2
Lock semchecked ast for macros ( #11883 ) [bugfix]
...
* reject to modify type checked AST
* add flag to back out
* Introduce legacy feature set.
2019-08-08 16:57:06 +02:00
cooldome
d1f6c820dd
Fixes #11662 : render ops priority ( #11664 )
2019-07-05 21:25:36 +02:00
Arne Döring
99a4fed96b
fix for passing tuples as static params to macros ( #11423 ); fixes #10751 [bugfix]
...
* add vm value preparation proc
* small optimization
2019-06-07 14:34:59 +02:00
andri lim
c16a753822
fix macrocache implementation ( #11404 )
...
* macrocache improvements
* fix macrocache implementation
2019-06-05 14:56:45 +02:00
Arne Döring
efbf43d4a9
intVal works now on enum field symbols ( #11403 )
...
* intVal works now on enum field symbols
* disable flakey titerators test
2019-06-05 14:55:47 +02:00
Araq
5f4e8dc4c9
added a nice test case for macro based lookup tables
2019-06-04 11:16:30 +02:00
narimiran
4606a00d4e
close #8573 by adding a test
2019-05-30 11:13:29 +02:00
Arne Döring
5b27b263fd
Remove immediate pragma ( #11308 )
...
* remove immediate from tests
* remove immediate from the compiler
2019-05-29 22:21:51 +02:00
narimiran
897e7c90ac
fix megatest
2019-05-29 16:42:36 +02:00
narimiran
d654383a8e
rename a file, so that megatest doesn't complain
2019-05-29 15:44:52 +02:00
narimiran
6f5eba4b94
close #7792 by adding a test
2019-05-29 14:56:39 +02:00
narimiran
3845faf85f
close #7615 by adding a test
2019-05-29 14:35:05 +02:00
Arne Döring
f94ec363ab
Allow void macro result ( #11286 )
...
* allow void macro result
* add test for void macro result type
2019-05-21 21:31:40 +02:00
Arne Döring
aeb6ec27de
fix for return in macro ( #9666 ); fixes #5874
2019-05-20 12:18:53 +02:00
Andreas Rumpf
69658ad396
fixes #11131
2019-05-13 17:25:57 +02:00
Arne Döring
34405db80f
forbid casting to bare unchecked array ( #11186 )
...
* fixes #11180 , forbid casting to unchecked array.
* allow UncheckedArray as param
2019-05-08 09:36:27 +02:00
Lolo Iccl
69755542f4
add progmas to params of macros.newProc ( #11025 )
...
Merging
2019-04-27 12:22:02 +01:00
cooldome
7d8af25d58
revert parser stmtListExpr ( #11007 )
...
* Revert "Support for stmtListExpr in parser after major keywords. Scaled down version. (#10852 )"
This reverts commit 862897dc0f .
* redo fix for #4035
* render stmtlistExpr using semicolon
* Revert "render stmtlistExpr using semicolon"
This reverts commit cafb78b8d5 .
* revert test
2019-04-17 11:55:41 +02:00
cooldome
041d15392a
Compiler plugin for implementing incremental computation in user space ( #10819 )
...
This plugin provides essential building block for implementing incremental computations in your programs. The idea behind incremental computations is that if you do the same calculation multiple times but with slightly different inputs you don't have to recompute everything from scratch. Also you don't want to adopt special algorithms either, you would like to write your code in standard from scratch manner and get incrementality for free when it is possible.
The plugin computes the digest of the proc bodies, recursively hashing all called procs as well . Such digest with the digest of the argument values gives a good "name" for the result. Terminology loosely follows paper "Incremental Computation with Names" link below. It works well if you have no side effects in your computations. If you have global state in your computations then you will need problem specific workarounds to represent global state in set of "names" . SideEffect tracking in Nim also useful in this topic.
Classical examples:
Dashboard with ticking data. New data arrives non stop and you would like to update the dashboard recomputing only changed outputs.
Excel spreadsheet where user changes one cell and you would like to recompute all cells that are affected by the change, but do not want to recompute every cell in the spreadsheet.
2019-04-11 23:09:11 +02:00
cooldome
862897dc0f
Support for stmtListExpr in parser after major keywords. Scaled down version. ( #10852 )
...
* Support for stmtListExpr in parser after major keywords
* fixes #4035
2019-03-18 11:09:49 +01:00
cooldome
d8c3df2683
fixes #10805 ( #10806 )
2019-03-13 10:23:06 +01:00
cooldome
8ceba8a7f3
fixes #10807 ( #10814 )
...
* fixes #10807
* use nkAddr instead of nkHiddenAddr
2019-03-12 13:45:05 +01:00