Return an error symbol as macro output if needed (#8116)
Return an error symbol if the macro output has no type and a typedesc is expected. Fixes #7454
This commit is contained in:
parent
7f148838a4
commit
52fc16d5d2
2 changed files with 14 additions and 1 deletions
|
|
@ -412,7 +412,12 @@ proc semAfterMacroCall(c: PContext, call, macroResult: PNode,
|
||||||
of tyTypeDesc:
|
of tyTypeDesc:
|
||||||
if result.kind == nkStmtList: result.kind = nkStmtListType
|
if result.kind == nkStmtList: result.kind = nkStmtListType
|
||||||
var typ = semTypeNode(c, result, nil)
|
var typ = semTypeNode(c, result, nil)
|
||||||
result.typ = makeTypeDesc(c, typ)
|
if typ == nil:
|
||||||
|
localError(c.config, result.info, "expression has no type: " &
|
||||||
|
renderTree(result, {renderNoComments}))
|
||||||
|
result = newSymNode(errorSym(c, result))
|
||||||
|
else:
|
||||||
|
result.typ = makeTypeDesc(c, typ)
|
||||||
#result = symNodeFromType(c, typ, n.info)
|
#result = symNodeFromType(c, typ, n.info)
|
||||||
else:
|
else:
|
||||||
var retType = s.typ.sons[0]
|
var retType = s.typ.sons[0]
|
||||||
|
|
|
||||||
8
tests/macros/t7454.nim
Normal file
8
tests/macros/t7454.nim
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
discard """
|
||||||
|
errormsg: "expression has no type:"
|
||||||
|
line: 8
|
||||||
|
"""
|
||||||
|
|
||||||
|
macro p(t: typedesc): typedesc =
|
||||||
|
discard
|
||||||
|
var a: p(int)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue