From 480e98c479035a8a19ff543bace3616d202e1ea2 Mon Sep 17 00:00:00 2001 From: metagn Date: Sun, 3 Sep 2023 14:59:03 +0300 Subject: resolve unambiguous enum symchoices from local scope, error on rest (#22606) fixes #22598, properly fixes #21887 and fixes test case issue number When an enum field sym choice has to choose a type, check if its name is ambiguous in the local scope, then check if the first symbol found in the local scope is the first symbol in the sym choice. If so, choose that symbol. Otherwise, give an ambiguous identifier error. The dependence on the local scope implies this will always give ambiguity errors for unpicked enum symchoices from generics and templates and macros from other scopes. We can change `not isAmbiguous(...) and foundSym == first` to `not (isAmbiguous(...) and foundSym == first)` to make it so they never give ambiguity errors, and always pick the first symbol in the symchoice. I can do this if this is preferred, but no code from CI seems affected. --- tests/lookups/tambsym3.nim | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'tests/lookups/tambsym3.nim') diff --git a/tests/lookups/tambsym3.nim b/tests/lookups/tambsym3.nim index e50f9c461..6e7589cd8 100644 --- a/tests/lookups/tambsym3.nim +++ b/tests/lookups/tambsym3.nim @@ -1,15 +1,12 @@ discard """ - errormsg: "ambiguous enum field" + errormsg: "ambiguous identifier 'mDec' -- use one of the following:" file: "tambsym3.nim" - line: 14 + line: 11 """ # Test ambiguous symbols import mambsym1, times -{.hint[AmbiguousEnum]: on.} -{.hintAsError[AmbiguousEnum]: on.} - var v = mDec #ERROR_MSG ambiguous identifier -- cgit 1.4.1-2-gfad0