Named arguments in commands + many grammar fixes (#20994)

* Breaking parser changes, implement https://github.com/nim-lang/RFCs/issues/442

Types are separated from expressions and better reflected in the grammar.

* add test

* more accurate grammar

* fix keyword typedescs

* accept expressions in proc argument lists

* CI "fixes"

* fixes

* allow full ref expressions again, adapt old tests

* cleanup, fix some tests

* improve grammar, try and revert semtypes change

* restrict sigil binding to identOrLiteral

* fix, should have caught this immediately

* add changelog entry, fix double not nil bug

* correct grammar

* change section

* fix

* real fix hopefully

* fix test

* support LL(1) for tuples

* make grammar.txt too
This commit is contained in:
metagn
2022-12-06 15:11:56 +03:00
committed by GitHub
parent 1564ae650f
commit 4ca2dcb404
18 changed files with 285 additions and 149 deletions

View File

@@ -24,7 +24,7 @@ except AssertionDefect as e:
try:
assert false # assert test with no msg
except AssertionDefect as e:
assert e.msg.endsWith "tassert2.nim(25, 10) `false` "
assert e.msg.endsWith "tassert2.nim(25, 3) `false` "
try:
let a = 1
@@ -100,7 +100,7 @@ block: ## checks for issue https://github.com/nim-lang/Nim/issues/9301
doAssert 1 + 1 == 3
except AssertionDefect as e:
# used to const fold as false
assert e.msg.endsWith "tassert2.nim(100, 14) `1 + 1 == 3` "
assert e.msg.endsWith "tassert2.nim(100, 5) `1 + 1 == 3` "
block: ## checks AST isn't transformed as it used to
let a = 1
@@ -108,4 +108,4 @@ block: ## checks AST isn't transformed as it used to
doAssert a > 1
except AssertionDefect as e:
# used to rewrite as `1 < a`
assert e.msg.endsWith "tassert2.nim(108, 14) `a > 1` "
assert e.msg.endsWith "tassert2.nim(108, 5) `a > 1` "