fixes a regression caused by overloadable enums even though they're opt-in (#18970)
This commit is contained in:
parent
19774a72e7
commit
6f15af41a7
3 changed files with 24 additions and 3 deletions
|
|
@ -250,7 +250,7 @@ proc semTemplSymbol(c: PContext, n: PNode, s: PSym; isField: bool): PNode =
|
||||||
of skUnknown:
|
of skUnknown:
|
||||||
# Introduced in this pass! Leave it as an identifier.
|
# Introduced in this pass! Leave it as an identifier.
|
||||||
result = n
|
result = n
|
||||||
of OverloadableSyms:
|
of OverloadableSyms-{skEnumField}:
|
||||||
result = symChoice(c, n, s, scOpen, isField)
|
result = symChoice(c, n, s, scOpen, isField)
|
||||||
of skGenericParam:
|
of skGenericParam:
|
||||||
if isField and sfGenSym in s.flags: result = n
|
if isField and sfGenSym in s.flags: result = n
|
||||||
|
|
@ -261,8 +261,12 @@ proc semTemplSymbol(c: PContext, n: PNode, s: PSym; isField: bool): PNode =
|
||||||
if isField and sfGenSym in s.flags: result = n
|
if isField and sfGenSym in s.flags: result = n
|
||||||
else: result = newSymNodeTypeDesc(s, c.idgen, n.info)
|
else: result = newSymNodeTypeDesc(s, c.idgen, n.info)
|
||||||
else:
|
else:
|
||||||
if isField and sfGenSym in s.flags: result = n
|
if s.kind == skEnumField and overloadableEnums in c.features:
|
||||||
else: result = newSymNode(s, n.info)
|
result = symChoice(c, n, s, scOpen, isField)
|
||||||
|
elif isField and sfGenSym in s.flags:
|
||||||
|
result = n
|
||||||
|
else:
|
||||||
|
result = newSymNode(s, n.info)
|
||||||
# Issue #12832
|
# Issue #12832
|
||||||
when defined(nimsuggest):
|
when defined(nimsuggest):
|
||||||
suggestSym(c.graph, n.info, s, c.graph.usageSym, false)
|
suggestSym(c.graph, n.info, s, c.graph.usageSym, false)
|
||||||
|
|
|
||||||
4
tests/enum/mregression.nim
Normal file
4
tests/enum/mregression.nim
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
type
|
||||||
|
OtherEnum* = enum
|
||||||
|
Success, Failed, More
|
||||||
13
tests/enum/tregression.nim
Normal file
13
tests/enum/tregression.nim
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
discard """
|
||||||
|
action: "compile"
|
||||||
|
"""
|
||||||
|
import options, mregression
|
||||||
|
|
||||||
|
type
|
||||||
|
MyEnum = enum
|
||||||
|
Success
|
||||||
|
|
||||||
|
template t =
|
||||||
|
echo some(Success)
|
||||||
|
|
||||||
|
t()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue