From 109f2fb5fcd5d53e85c096de34037140a757ff83 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Mon, 26 May 2008 21:26:33 +0000 Subject: [PATCH] Fixed recursion resolving namespaces (bug 234035). --- .../dom/parser/cpp/semantics/CPPSemantics.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) 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 925e690e82c..95e7457561c 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 @@ -10,6 +10,7 @@ * Markus Schorn (Wind River Systems) * Bryan Wilkinson (QNX) * Andrew Ferguson (Symbian) + * Sergey Prigogin (Google) *******************************************************************************/ package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics; @@ -334,8 +335,7 @@ public class CPPSemantics { } } if (name.getParent() instanceof ICPPASTQualifiedName) { - IASTName[] ns = ((ICPPASTQualifiedName)name.getParent()).getNames(); - if (name == ns[ns.length - 1]) + if (name == ((ICPPASTQualifiedName)name.getParent()).getLastName()) name = (IASTName) name.getParent(); } @@ -514,8 +514,7 @@ public class CPPSemantics { ICPPASTCompositeTypeSpecifier compSpec = (ICPPASTCompositeTypeSpecifier) parent.getParent(); IASTName n = compSpec.getName(); if (n instanceof ICPPASTQualifiedName) { - IASTName[] ns = ((ICPPASTQualifiedName)n).getNames(); - n = ns[ns.length - 1]; + n = ((ICPPASTQualifiedName) n).getLastName(); } scope = CPPVisitor.getContainingScope(n); @@ -1413,7 +1412,10 @@ public class CPPSemantics { } } if (specName != null) { - ASTInternal.addName(scope, specName); + if (!(specName instanceof ICPPASTQualifiedName) || + data.astName == ((ICPPASTQualifiedName) specName).getLastName()) { + ASTInternal.addName(scope, specName); + } if (nameMatches(data, specName, scope)) { if (resultName == null) resultName = specName; @@ -1427,8 +1429,7 @@ public class CPPSemantics { ICPPASTUsingDeclaration using = (ICPPASTUsingDeclaration) declaration; IASTName name = using.getName(); if (name instanceof ICPPASTQualifiedName) { - IASTName[] ns = ((ICPPASTQualifiedName)name).getNames(); - name = ns[ns.length - 1]; + name = ((ICPPASTQualifiedName) name).getLastName(); } ASTInternal.addName(scope, name); if (nameMatches(data, name, scope)) { @@ -1476,8 +1477,7 @@ public class CPPSemantics { if (scope instanceof CPPScope == false || ((CPPScope) scope).canDenoteScopeMember(qname)) return false; - final IASTName[] qn= qname.getNames(); - potential= qn[qn.length-1]; + potential= qname.getLastName(); } char[] c = potential.toCharArray(); char[] n = data.name();