parent
915ce2871f
commit
f8266c7376
1 changed files with 4 additions and 0 deletions
|
|
@ -42,6 +42,8 @@ proc semEnum(c: PContext, n: PNode, prev: PType): PType =
|
||||||
counter = lastOrd(base) + 1
|
counter = lastOrd(base) + 1
|
||||||
rawAddSon(result, base)
|
rawAddSon(result, base)
|
||||||
let isPure = result.sym != nil and sfPure in result.sym.flags
|
let isPure = result.sym != nil and sfPure in result.sym.flags
|
||||||
|
var symbols: TStrTable
|
||||||
|
if isPure: initStrTable(symbols)
|
||||||
var hasNull = false
|
var hasNull = false
|
||||||
for i in countup(1, sonsLen(n) - 1):
|
for i in countup(1, sonsLen(n) - 1):
|
||||||
case n.sons[i].kind
|
case n.sons[i].kind
|
||||||
|
|
@ -87,6 +89,8 @@ proc semEnum(c: PContext, n: PNode, prev: PType): PType =
|
||||||
addSon(result.n, newSymNode(e))
|
addSon(result.n, newSymNode(e))
|
||||||
styleCheckDef(e)
|
styleCheckDef(e)
|
||||||
if sfGenSym notin e.flags and not isPure: addDecl(c, e)
|
if sfGenSym notin e.flags and not isPure: addDecl(c, e)
|
||||||
|
if isPure and strTableIncl(symbols, e):
|
||||||
|
wrongRedefinition(e.info, e.name.s)
|
||||||
inc(counter)
|
inc(counter)
|
||||||
if not hasNull: incl(result.flags, tfNeedsInit)
|
if not hasNull: incl(result.flags, tfNeedsInit)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue