diff options
Diffstat (limited to 'compiler/semexprs.nim')
-rw-r--r-- | compiler/semexprs.nim | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index a0753010a..0c6500408 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -87,6 +87,14 @@ proc semExprWithType(c: PContext, n: PNode, flags: TExprFlags = {}, expectedType result = semExprCheck(c, n, flags, expectedType) if result.typ == nil and efInTypeof in flags: result.typ = c.voidType + elif (result.typ == nil or result.typ.kind == tyNone) and + result.kind == nkClosedSymChoice and + result[0].sym.kind == skEnumField: + # if overloaded enum field could not choose a type from a closed list, + # choose the first resolved enum field, i.e. the latest in scope + # to mirror old behavior + msgSymChoiceUseQualifier(c, result, hintAmbiguousEnum) + result = result[0] elif result.typ == nil or result.typ == c.enforceVoidContext: localError(c.config, n.info, errExprXHasNoType % renderTree(result, {renderNoComments})) |