overloadable enums no longer experimental (#20298)

depends on #20126
This commit is contained in:
metagn 2022-09-06 00:38:38 +03:00 • committed by GitHub
commit 5ebd1248df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 27 additions and 41 deletions

View file

@ -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:

View file

@ -213,7 +213,7 @@ type
strictFuncs,
views,
strictNotNil,
overloadableEnums,
overloadableEnums, # not experimental anymore
strictEffects,
unicodeOperators,
flexibleOptionalParams

View file

@ -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):

View file

@ -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)

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-{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)

View file

@ -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):