Don't reject types directly on AST (#19407)
Instead of rejecting type expressions based on node kind, evaluate the expression as a type. This is already the behavior for call results, and it has its own error for non-types, which is the same error you would normally get with 2 words swapped.
This commit is contained in:
parent
5d34e81f23
commit
08261cb9e3
2 changed files with 13 additions and 2 deletions
|
|
@ -1993,8 +1993,10 @@ proc semTypeNode(c: PContext, n: PNode, prev: PType): PType =
|
||||||
of nkStmtListType: result = semStmtListType(c, n, prev)
|
of nkStmtListType: result = semStmtListType(c, n, prev)
|
||||||
of nkBlockType: result = semBlockType(c, n, prev)
|
of nkBlockType: result = semBlockType(c, n, prev)
|
||||||
else:
|
else:
|
||||||
localError(c.config, n.info, "type expected, but got: " & renderTree(n))
|
result = semTypeExpr(c, n, prev)
|
||||||
result = newOrPrevType(tyError, prev, c)
|
when false:
|
||||||
|
localError(c.config, n.info, "type expected, but got: " & renderTree(n))
|
||||||
|
result = newOrPrevType(tyError, prev, c)
|
||||||
n.typ = result
|
n.typ = result
|
||||||
dec c.inTypeContext
|
dec c.inTypeContext
|
||||||
|
|
||||||
|
|
|
||||||
9
tests/types/tnontype.nim
Normal file
9
tests/types/tnontype.nim
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
discard """
|
||||||
|
errormsg: "expected type, but got: 3"
|
||||||
|
"""
|
||||||
|
|
||||||
|
type
|
||||||
|
Foo = (block:
|
||||||
|
int)
|
||||||
|
|
||||||
|
Bar = 3
|
||||||
Loading…
Add table
Add a link
Reference in a new issue