From a561d301ca4b2b2e1e40297a2510e03536461b75 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Wed, 27 Sep 2017 20:34:40 -0400 Subject: [PATCH] Bug 512297 - Improve propagation of semantic problem IDs Change-Id: I3c95a244e88abe37f550370ff6c7c9aec2c102da --- .../core/dom/parser/cpp/semantics/CPPSemantics.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java index 28da07be9de..ee277b06bd3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java @@ -2224,8 +2224,15 @@ public class CPPSemantics { } // Select among those bindings that have been created without problems. - if (temp instanceof IProblemBinding) + if (temp instanceof IProblemBinding) { + // If this ProblemBinding was the only binding, return it rather than + // creating a new ProblemBinding below. This way the caller potentially + // gets a more specific error than SEMANTIC_NAME_NOT_FOUND. + if (items.length == 1) { + return temp; + } continue; + } if (!declaredBefore && !(temp instanceof ICPPMember) && !(temp instanceof IType) && !(temp instanceof IEnumerator)) {