From f584975ffdaddb8fe16f8a7f56a57d05fefd3f23 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Tue, 11 Feb 2014 11:25:57 -0800 Subject: [PATCH] Bug 427854 - Encountered an ambiguous node error message produced by parser. Adjusted ordering of ambiguity resolution for nested classes. --- .../core/dom/parser/cpp/CPPASTAmbiguityResolver.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java index f1e645b515f..4f794e4c74a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java @@ -186,6 +186,7 @@ final class CPPASTAmbiguityResolver extends ASTVisitor { @Override public int leave(IASTTranslationUnit tu) { + fDeferFunctions= 0; while (!fDeferredNodes.isEmpty()) { processDeferredNodes(fDeferredNodes.removeLast()); } @@ -193,9 +194,14 @@ final class CPPASTAmbiguityResolver extends ASTVisitor { } private void processDeferredNodes(Deque deferredNodes) { - while (!deferredNodes.isEmpty()) { - fDeferFunctions= 0; - deferredNodes.removeFirst().accept(this); + int deferFunctions = fDeferFunctions; + fDeferFunctions = 0; + try { + while (!deferredNodes.isEmpty()) { + deferredNodes.removeFirst().accept(this); + } + } finally { + fDeferFunctions = deferFunctions; } }