From 1b2f0d5e9e060053b9c5b732c6cf292ae03be99b Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Fri, 8 Oct 2004 15:36:15 +0000 Subject: [PATCH] bug 74847- [Parser] In ASTBaseSpecifier.getParentClassSpecifier, the "symbol" attribute is dereferenced to null --- .../cdt/core/parser/tests/CompleteParseASTTest.java | 12 ++++++++++++ .../parser/ast/complete/CompleteParseASTFactory.java | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java index 5c9083f0fd5..13f99a16903 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java @@ -2263,5 +2263,17 @@ public class CompleteParseASTTest extends CompleteParseBaseTest assertTrue(ip.getArguments().indexOf("This was equal, but not for the eclipse") > 0); } } + + public void testBug74847() throws Exception { + String code = "class A : public FOO {};"; + Iterator i = parse( code, false ).getDeclarations(); + IASTClassSpecifier A = (IASTClassSpecifier) ((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier(); + assertFalse( A.getBaseClauses().hasNext() ); + i = callback.getProblems(); + IProblem problem = (IProblem) i.next(); + assertEquals( problem.getID(), IProblem.SEMANTIC_NAME_NOT_FOUND ); + assertEquals( problem.getSourceStart(), code.indexOf( "FOO" ) ); + assertFalse( i.hasNext() ); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java index 2640508ee2e..9434fcd9fc0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java @@ -915,8 +915,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto //Its possible that the parent is not an IContainerSymbol if its a template parameter or some kinds of template instances ISymbol symbol = lookupQualifiedName( classSymbol, parentClassName, references, true ); - if( symbol instanceof ITemplateSymbol && - ! ( symbol instanceof UndefinedTemplateSymbol ) ) + if( symbol == null ) + handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, parentClassName.toCharArray(), parentClassName.getStartOffset(), parentClassName.getEndOffset(), parentClassName.getLineNumber(), true ); + if( symbol instanceof ITemplateSymbol && ! ( symbol instanceof UndefinedTemplateSymbol ) ) handleProblem( IProblem.SEMANTIC_INVALID_TEMPLATE_ARGUMENT, parentClassName.toCharArray(), parentClassName.getStartOffset(), parentClassName.getEndOffset(), parentClassName.getLineNumber(), true); List [] templateArgumentLists = parentClassName.getTemplateIdArgLists();