mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-07 20:34:21 +00:00
compiler/sem: correct macros lineinfo (#10438)
The compiler believes these are where a macro call starts (marked with
`^`):
m "string"
^ ^
This commit addresses that.
This commit is contained in:
@@ -450,17 +450,18 @@ proc semMacroExpr(c: PContext, n, nOrig: PNode, sym: PSym,
|
||||
flags: TExprFlags = {}): PNode =
|
||||
pushInfoContext(c.config, nOrig.info, sym.detailedInfo)
|
||||
|
||||
markUsed(c.config, n.info, sym, c.graph.usageSym)
|
||||
onUse(n.info, sym)
|
||||
let info = getCallLineInfo(n)
|
||||
markUsed(c.config, info, sym, c.graph.usageSym)
|
||||
onUse(info, sym)
|
||||
if sym == c.p.owner:
|
||||
globalError(c.config, n.info, "recursive dependency: '$1'" % sym.name.s)
|
||||
globalError(c.config, info, "recursive dependency: '$1'" % sym.name.s)
|
||||
|
||||
let genericParams = if sfImmediate in sym.flags: 0
|
||||
else: sym.ast[genericParamsPos].len
|
||||
let suppliedParams = max(n.safeLen - 1, 0)
|
||||
|
||||
if suppliedParams < genericParams:
|
||||
globalError(c.config, n.info, errMissingGenericParamsForTemplate % n.renderTree)
|
||||
globalError(c.config, info, errMissingGenericParamsForTemplate % n.renderTree)
|
||||
|
||||
#if c.evalContext == nil:
|
||||
# c.evalContext = c.createEvalContext(emStatic)
|
||||
|
||||
13
nimsuggest/tests/tmacro_highlight.nim
Normal file
13
nimsuggest/tests/tmacro_highlight.nim
Normal file
@@ -0,0 +1,13 @@
|
||||
macro a(b: string): untyped = discard
|
||||
|
||||
a "string"#[!]#
|
||||
|
||||
discard """
|
||||
$nimsuggest --tester $file
|
||||
>highlight $1
|
||||
highlight;;skMacro;;1;;6;;1
|
||||
highlight;;skType;;1;;11;;6
|
||||
highlight;;skType;;1;;20;;7
|
||||
highlight;;skMacro;;3;;0;;1
|
||||
highlight;;skMacro;;3;;0;;1
|
||||
"""
|
||||
Reference in New Issue
Block a user