fix for bad error message with const in case statement (#21182)

* preliminary fix for bad error message with const

* add test case

* fix tmatrixconcept and tmatrixlib
This commit is contained in:
metagn 2022-12-27 23:24:00 +03:00 • committed by GitHub
commit 5684093135
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View file

@ -569,6 +569,8 @@ proc foldDefine(m, s: PSym, n: PNode; idgen: IdGenerator; g: ModuleGraph): PNode
else: result = copyTree(s.astdef) # unreachable else: result = copyTree(s.astdef) # unreachable
else: else:
result = copyTree(s.astdef) result = copyTree(s.astdef)
if result != nil:
result.info = n.info
proc getConstExpr(m: PSym, n: PNode; idgen: IdGenerator; g: ModuleGraph): PNode = proc getConstExpr(m: PSym, n: PNode; idgen: IdGenerator; g: ModuleGraph): PNode =
result = nil result = nil
@ -593,6 +595,8 @@ proc getConstExpr(m: PSym, n: PNode; idgen: IdGenerator; g: ModuleGraph): PNode
result = foldDefine(m, s, n, idgen, g) result = foldDefine(m, s, n, idgen, g)
else: else:
result = copyTree(s.astdef) result = copyTree(s.astdef)
if result != nil:
result.info = n.info
of skProc, skFunc, skMethod: of skProc, skFunc, skMethod:
result = n result = n
of skParam: of skParam:

View file

@ -0,0 +1,7 @@
# https://forum.nim-lang.org/t/9762
const foo = "abc"
case 'a'
of foo: echo "should error" #[tt.Error
^ type mismatch: got <string> but expected 'char']#
else: discard