* Rework exception handling in the VM
Make the safepoint handling more precise and less forgiving.
The new code is clearer and more commented.
Perform cleanup on `return`.
The no-exception-thrown case in a try block should be slightly faster
since we don't parse the whole set of exceptions every time.
More tests.
* Fix silly error that broke a few tests
* Testament doesn't like files having the same name
* Remove test case that failed compilation to js
Hopefully the type-check phase already rejected all the invalid
conversions by the time we execute the VM bytecode.
Problem reported by chrisheller on the Nim Forum
* add `isNamedTuple`; make $(1, 2) be (1, 2) instead of leaking implementation detail (Field0: 1, Field1: 2)
fixes this: #8670 (comment) /cc @alehander42 @Vindaar @mratsim
* Note: isNamedTuple is useful in other places, eg #10010 (comment)
* move isNamedTuple to helpers.nim to avoid exposing new symbol to system.nim
* remove workaround in tests/vm/tissues.nim failing test now that #10218 was makes it work
* Improve dumpLisp macro
- Remove commas from the lisp representation of the AST.
- Make the dumpLisp output "pretty" and indented.
- Improve docs of `dumpTree` and `dumpLisp` macros.
With:
dumpLisp:
echo "Hello, World!"
Output before this commit:
StmtList(Command(Ident("echo"), StrLit("Hello, World!")))
Output after this commit:
(StmtList
(Command
(Ident "echo")
(StrLit "Hello, World!")))
* Re-use the traverse proc inside treeRepr for lispRepr too
- Add module-local `treeTraverse` proc.
- Also fix treeRepr/dumpTree not printing nnkCommentStmt node contents.
* More doc string updates
* Allow unindented lispRepr output for tests
* Update a test affected by the lispRepr change
* Fix dumpTree
* Add note about lispRepr and dumpLisp to changelog [ci skip]
* Field checks for JS backend
* Clean nkCall nodes with no arguments
Generating a nkEmpty in place of no arguments makes no sense form the
AST point of view and also trips up the VM codegen.
* Field checks for VM backend
* Test case for #6612
This patchset fixes#6612
* Add test case for LHS double evaluation
* Prevent LHS double-eval for JS backend
* Prevent double evaluation in VM backend