Fix accents in enums

This commit is contained in:
flaviut
2014-06-03 10:22:12 -04:00
parent 7b1b3cbf25
commit 20cb567bf5
2 changed files with 8 additions and 5 deletions

View File

@@ -296,20 +296,22 @@ proc parseSymbol(p: var TParser, allowNil = false): PNode =
of tkAccent:
result = newNodeP(nkAccQuoted, p)
getTok(p)
var bracketAccm = ""
while true:
case p.tok.tokType
of tkIntLit..tkCharLit, tkBracketLe, tkBracketRi, tkParLe, tkParRi,
tkCurlyRi, tkCurlyLe, tkEquals:
add(result, newIdentNodeP(getIdent(tokToStr(p.tok)), p))
bracketAccm.add(tokToStr(p.tok))
getTok(p)
of tokKeywordLow..tokKeywordHigh, tkSymbol, tkOpr, tkDot, tkDotDot:
add(result, newIdentNodeP(p.tok.ident, p))
getTok(p)
else:
if result.len == 0:
echo repr p.tok
if result.len == 0 and bracketAccm == "":
parMessage(p, errIdentifierExpected, p.tok)
break
if bracketAccm != "":
result.add(newIdentNodeP(getIdent(bracketAccm), p))
eat(p, tkAccent)
else:
if allowNil and p.tok.tokType == tkNil:

View File

@@ -70,9 +70,10 @@ proc semEnum(c: PContext, n: PNode, prev: PType): PType =
counter = x
of nkSym:
e = n.sons[i].sym
of nkIdent:
of nkIdent, nkAccQuoted:
e = newSymS(skEnumField, n.sons[i], c)
else: illFormedAst(n[i])
else:
illFormedAst(n[i])
e.typ = result
e.position = int(counter)
if e.position == 0: hasNull = true