parent
8dcf367e52
commit
5ebd1248df
12 changed files with 27 additions and 41 deletions
|
|
@ -182,8 +182,6 @@ iterator allSyms*(c: PContext): (PSym, int, bool) =
|
|||
proc someSymFromImportTable*(c: PContext; name: PIdent; ambiguous: var bool): PSym =
|
||||
var marked = initIntSet()
|
||||
var symSet = OverloadableSyms
|
||||
if overloadableEnums notin c.features:
|
||||
symSet.excl skEnumField
|
||||
result = nil
|
||||
block outer:
|
||||
for im in c.imports.mitems:
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ type
|
|||
strictFuncs,
|
||||
views,
|
||||
strictNotNil,
|
||||
overloadableEnums,
|
||||
overloadableEnums, # not experimental anymore
|
||||
strictEffects,
|
||||
unicodeOperators,
|
||||
flexibleOptionalParams
|
||||
|
|
|
|||
|
|
@ -2882,10 +2882,7 @@ proc semExpr(c: PContext, n: PNode, flags: TExprFlags = {}, expectedType: PType
|
|||
if optOwnedRefs in c.config.globalOptions:
|
||||
result.typ = makeVarType(c, result.typ, tyOwned)
|
||||
of skEnumField:
|
||||
if overloadableEnums in c.features:
|
||||
result = enumFieldSymChoice(c, n, s)
|
||||
else:
|
||||
result = semSym(c, n, s, flags)
|
||||
result = enumFieldSymChoice(c, n, s)
|
||||
else:
|
||||
result = semSym(c, n, s, flags)
|
||||
if expectedType != nil and isSymChoice(result):
|
||||
|
|
|
|||
|
|
@ -108,11 +108,7 @@ proc semGenericStmtSymbol(c: PContext, n: PNode, s: PSym,
|
|||
result = n
|
||||
onUse(n.info, s)
|
||||
of skEnumField:
|
||||
if overloadableEnums in c.features:
|
||||
result = symChoice(c, n, s, scOpen)
|
||||
else:
|
||||
result = newSymNode(s, n.info)
|
||||
onUse(n.info, s)
|
||||
result = symChoice(c, n, s, scOpen)
|
||||
else:
|
||||
result = newSymNode(s, n.info)
|
||||
onUse(n.info, s)
|
||||
|
|
|
|||
|
|
@ -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-{skEnumField}:
|
||||
of OverloadableSyms:
|
||||
result = symChoice(c, n, s, scOpen, isField)
|
||||
of skGenericParam:
|
||||
if isField and sfGenSym in s.flags: result = n
|
||||
|
|
@ -261,12 +261,8 @@ 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 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)
|
||||
if 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)
|
||||
|
|
|
|||
|
|
@ -143,10 +143,7 @@ proc semEnum(c: PContext, n: PNode, prev: PType): PType =
|
|||
onDef(e.info, e)
|
||||
if sfGenSym notin e.flags:
|
||||
if not isPure:
|
||||
if overloadableEnums in c.features:
|
||||
addInterfaceOverloadableSymAt(c, c.currentScope, e)
|
||||
else:
|
||||
addInterfaceDecl(c, e)
|
||||
addInterfaceOverloadableSymAt(c, c.currentScope, e)
|
||||
else:
|
||||
declarePureEnumField(c, e)
|
||||
if isPure and (let conflict = strTableInclReportConflict(symbols, e); conflict != nil):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue