diff options
author | Vindaar <basti90@gmail.com> | 2022-12-08 10:59:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-08 10:59:13 +0100 |
commit | 0a1d4ba8427854306b89f4e91ed7902fb23adafb (patch) | |
tree | fe295a3e818c7dda3b60cf5d0f08a1cdd8a24fc5 /tests/parser/t20922.nim | |
parent | e669835665bd3b9ab600d1ce3502f4b643606175 (diff) | |
download | Nim-0a1d4ba8427854306b89f4e91ed7902fb23adafb.tar.gz |
fix issue #20922 by handling missing expr in `exprList` for `tkOf` (#20930)
* fix issue #20922 by handling missing expr in `exprList` for `tkOf` * fix line numbers in test case * rewrite exprList requiring expr, add optionalExprList for except As suggested by @metagn. * update test case to reflect new code * update grammar.txt * update line numbers in test case taking into account nimout Given the number of errors that are produced it seems easier to do it this way instead of using `tt.Error`.
Diffstat (limited to 'tests/parser/t20922.nim')
-rw-r--r-- | tests/parser/t20922.nim | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/parser/t20922.nim b/tests/parser/t20922.nim new file mode 100644 index 000000000..01af9868f --- /dev/null +++ b/tests/parser/t20922.nim @@ -0,0 +1,46 @@ +discard """ + cmd: "nim check $options --verbosity:0 $file" + action: "reject" + nimout: ''' +t20922.nim(37, 5) Error: expression expected, but found ':' +Error: in expression ' '+'': identifier expected, but found '' +t20922.nim(37, 7) Error: attempting to call undeclared routine: '<Error>' +Error: in expression ' '+'': identifier expected, but found '' +t20922.nim(37, 7) Error: attempting to call undeclared routine: '<Error>' +t20922.nim(37, 7) Error: expression '' cannot be called +t20922.nim(37, 7) Error: expression '' has no type (or is ambiguous) +t20922.nim(37, 7) Error: VM problem: dest register is not set +t20922.nim(45, 7) Error: expression expected, but found ':' +t20922.nim(46, 5) Error: ':' or '=' expected, but got 'keyword of' +t20922.nim(45, 9) Error: undeclared identifier: 'x' +t20922.nim(45, 9) Error: expression 'x' has no type (or is ambiguous) +Error: in expression ' x': identifier expected, but found '' +t20922.nim(45, 9) Error: attempting to call undeclared routine: '<Error>' +Error: in expression ' x': identifier expected, but found '' +t20922.nim(45, 9) Error: attempting to call undeclared routine: '<Error>' +t20922.nim(45, 9) Error: expression '' cannot be called +t20922.nim(45, 9) Error: expression '' has no type (or is ambiguous) +t20922.nim(45, 9) Error: VM problem: dest register is not set +t20922.nim(33, 6) Hint: 'mapInstrToToken' is declared but not used [XDeclaredButNotUsed] +t20922.nim(43, 3) Hint: 'Foo' is declared but not used [XDeclaredButNotUsed] +''' +""" +# original test case issue #20922 +type Token = enum + incDataPtr, + incDataPtrByte + +proc mapInstrToToken(instr: char): Token = + case instr: + of '>': + incDataPtr + of: '+': + incDataPtrByte + +# same issue with `of` in object branches (different parser procs calling `exprList`) +type + Bar = enum A, B + Foo = object + case kind: Bar + of: x: int + of B: y: float |