mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-18 06:51:18 +00:00
allow dots in defined() (#20010)
* allow dots in defined() refs https://github.com/nim-lang/RFCs/issues/181 * mention accents in older versions
This commit is contained in:
@@ -1938,11 +1938,23 @@ proc semYield(c: PContext, n: PNode): PNode =
|
||||
elif c.p.owner.typ[0] != nil:
|
||||
localError(c.config, n.info, errGenerated, "yield statement must yield a value")
|
||||
|
||||
proc considerQuotedIdentOrDot(c: PContext, n: PNode, origin: PNode = nil): PIdent =
|
||||
if n.kind == nkDotExpr:
|
||||
let a = considerQuotedIdentOrDot(c, n[0], origin).s
|
||||
let b = considerQuotedIdentOrDot(c, n[1], origin).s
|
||||
var s = newStringOfCap(a.len + b.len + 1)
|
||||
s.add(a)
|
||||
s.add('.')
|
||||
s.add(b)
|
||||
result = getIdent(c.cache, s)
|
||||
else:
|
||||
result = considerQuotedIdent(c, n, origin)
|
||||
|
||||
proc semDefined(c: PContext, n: PNode): PNode =
|
||||
checkSonsLen(n, 2, c.config)
|
||||
# we replace this node by a 'true' or 'false' node:
|
||||
result = newIntNode(nkIntLit, 0)
|
||||
result.intVal = ord isDefined(c.config, considerQuotedIdent(c, n[1], n).s)
|
||||
result.intVal = ord isDefined(c.config, considerQuotedIdentOrDot(c, n[1], n).s)
|
||||
result.info = n.info
|
||||
result.typ = getSysType(c.graph, n.info, tyBool)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user