fixes a regression caused by overloadable enums even though they're opt-in (#18970)

This commit is contained in:
Andreas Rumpf
2021-10-07 15:07:24 +02:00
committed by GitHub
parent 19774a72e7
commit 6f15af41a7
3 changed files with 24 additions and 3 deletions

View File

@@ -250,7 +250,7 @@ proc semTemplSymbol(c: PContext, n: PNode, s: PSym; isField: bool): PNode =
of skUnknown:
# Introduced in this pass! Leave it as an identifier.
result = n
of OverloadableSyms:
of OverloadableSyms-{skEnumField}:
result = symChoice(c, n, s, scOpen, isField)
of skGenericParam:
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
else: result = newSymNodeTypeDesc(s, c.idgen, n.info)
else:
if isField and sfGenSym in s.flags: result = n
else: result = newSymNode(s, n.info)
if s.kind == skEnumField and overloadableEnums in c.features:
result = symChoice(c, n, s, scOpen, isField)
elif isField and sfGenSym in s.flags:
result = n
else:
result = newSymNode(s, n.info)
# Issue #12832
when defined(nimsuggest):
suggestSym(c.graph, n.info, s, c.graph.usageSym, false)

View File

@@ -0,0 +1,4 @@
type
OtherEnum* = enum
Success, Failed, More

View File

@@ -0,0 +1,13 @@
discard """
action: "compile"
"""
import options, mregression
type
MyEnum = enum
Success
template t =
echo some(Success)
t()