mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
CORE
Fixed NPE in Parser::declarator(). Bug 39652 - AST: Nested Classes incorrectly report null qualified Names TESTS Moved testBug39652() from failed search tests to ClassDeclarationPatternTests.
This commit is contained in:
parent
8a70b5e1d2
commit
2e6093590f
7 changed files with 45 additions and 81 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
2003-07-04 John Camelon
|
||||||
|
Moved testBug39652() from failed search tests to ClassDeclarationPatternTests.
|
||||||
|
|
||||||
2003-07-04 Andrew Niefer
|
2003-07-04 Andrew Niefer
|
||||||
Added new source Folder search
|
Added new source Folder search
|
||||||
Added search/ClassDeclarationPatternTests::testMatchSimpleDeclaration
|
Added search/ClassDeclarationPatternTests::testMatchSimpleDeclaration
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2003 IBM Corporation and others.
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Common Public License v0.5
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/cpl-v05.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IBM Corp. - Rational Software - initial implementation
|
|
||||||
******************************************************************************/
|
|
||||||
/*
|
|
||||||
* Created on Jul 4, 2003
|
|
||||||
*/
|
|
||||||
package org.eclipse.cdt.core.search.failedTests;
|
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchConstants;
|
|
||||||
import org.eclipse.cdt.internal.core.search.matching.CSearchPattern;
|
|
||||||
import org.eclipse.cdt.internal.core.search.matching.MatchLocator;
|
|
||||||
import org.eclipse.cdt.internal.ui.search.CSearchResultCollector;
|
|
||||||
import org.eclipse.core.runtime.Path;
|
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author aniefer
|
|
||||||
*
|
|
||||||
* To change the template for this generated type comment go to
|
|
||||||
* Window>Preferences>Java>Code Generation>Code and Comments
|
|
||||||
*/
|
|
||||||
public class PatternsFailedTests extends TestCase implements ICSearchConstants {
|
|
||||||
|
|
||||||
private MatchLocator matchLocator;
|
|
||||||
private CSearchResultCollector resultCollector;
|
|
||||||
private String cppPath;
|
|
||||||
|
|
||||||
public PatternsFailedTests(String name) {
|
|
||||||
super(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initialize( CSearchPattern pattern ){
|
|
||||||
cppPath = org.eclipse.core.runtime.Platform.getPlugin("org.eclipse.cdt.core.tests").find(new Path("/")).getFile();
|
|
||||||
cppPath += "resources/search/classDecl.cpp";
|
|
||||||
|
|
||||||
resultCollector = new CSearchResultCollector();
|
|
||||||
matchLocator = new MatchLocator( pattern, resultCollector, null, null );
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBug39652() {
|
|
||||||
CSearchPattern pattern = CSearchPattern.createPattern( "A::B", TYPE, DECLARATIONS, EXACT_MATCH, true );
|
|
||||||
|
|
||||||
initialize( pattern );
|
|
||||||
matchLocator.locateMatches( new String[] { cppPath }, null, null );
|
|
||||||
Set matches = resultCollector.getMatches();
|
|
||||||
/* Test should find 1 match */
|
|
||||||
//assertTrue( matches != null );
|
|
||||||
//assertTrue( matches.size() == 1 );
|
|
||||||
|
|
||||||
/* instead it finds none because qualifications are wrong*/
|
|
||||||
assertTrue( matches == null );
|
|
||||||
|
|
||||||
pattern = CSearchPattern.createPattern( "NS::NS2::a", TYPE, DECLARATIONS, EXACT_MATCH, true );
|
|
||||||
initialize( pattern );
|
|
||||||
matchLocator.locateMatches( new String[] { cppPath }, null, null );
|
|
||||||
matches = resultCollector.getMatches();
|
|
||||||
assertTrue( matches == null );
|
|
||||||
|
|
||||||
pattern = CSearchPattern.createPattern( "NS::B::A", TYPE, DECLARATIONS, EXACT_MATCH, true );
|
|
||||||
initialize( pattern );
|
|
||||||
matchLocator.locateMatches( new String[] { cppPath }, null, null );
|
|
||||||
matches = resultCollector.getMatches();
|
|
||||||
assertTrue( matches == null );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -82,6 +82,29 @@ public class ClassDeclarationPatternTests extends TestCase implements ICSearchCo
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBug39652() {
|
||||||
|
CSearchPattern pattern = CSearchPattern.createPattern( "A::B", TYPE, DECLARATIONS, EXACT_MATCH, true );
|
||||||
|
|
||||||
|
initialize( pattern );
|
||||||
|
matchLocator.locateMatches( new String[] { cppPath }, null, null );
|
||||||
|
Set matches = resultCollector.getMatches();
|
||||||
|
/* Test should find 1 match */
|
||||||
|
assertTrue( matches != null );
|
||||||
|
assertTrue( matches.size() == 1 );
|
||||||
|
|
||||||
|
pattern = CSearchPattern.createPattern( "NS::NS2::a", TYPE, DECLARATIONS, EXACT_MATCH, true );
|
||||||
|
initialize( pattern );
|
||||||
|
matchLocator.locateMatches( new String[] { cppPath }, null, null );
|
||||||
|
matches = resultCollector.getMatches();
|
||||||
|
assertTrue( matches == null );
|
||||||
|
|
||||||
|
pattern = CSearchPattern.createPattern( "NS::B::A", TYPE, DECLARATIONS, EXACT_MATCH, true );
|
||||||
|
initialize( pattern );
|
||||||
|
matchLocator.locateMatches( new String[] { cppPath }, null, null );
|
||||||
|
matches = resultCollector.getMatches();
|
||||||
|
assertTrue( matches == null );
|
||||||
|
}
|
||||||
|
|
||||||
public void failingtestMatchStruct(){
|
public void failingtestMatchStruct(){
|
||||||
CSearchPattern pattern = CSearchPattern.createPattern( "A", STRUCT, DECLARATIONS, EXACT_MATCH, true );
|
CSearchPattern pattern = CSearchPattern.createPattern( "A", STRUCT, DECLARATIONS, EXACT_MATCH, true );
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@ import org.eclipse.cdt.core.parser.failedTests.DOMFailedTest;
|
||||||
import org.eclipse.cdt.core.parser.failedTests.LokiFailures;
|
import org.eclipse.cdt.core.parser.failedTests.LokiFailures;
|
||||||
import org.eclipse.cdt.core.parser.failedTests.STLFailedTests;
|
import org.eclipse.cdt.core.parser.failedTests.STLFailedTests;
|
||||||
import org.eclipse.cdt.core.parser.tests.ParserTestSuite;
|
import org.eclipse.cdt.core.parser.tests.ParserTestSuite;
|
||||||
import org.eclipse.cdt.core.search.failedTests.PatternsFailedTests;
|
|
||||||
import org.eclipse.cdt.core.search.tests.ClassDeclarationPatternTests;
|
import org.eclipse.cdt.core.search.tests.ClassDeclarationPatternTests;
|
||||||
import org.eclipse.core.boot.IPlatformRunnable;
|
import org.eclipse.core.boot.IPlatformRunnable;
|
||||||
|
|
||||||
|
@ -90,7 +89,6 @@ public class AutomatedIntegrationSuite extends TestSuite
|
||||||
suite.addTestSuite(LokiFailures.class);
|
suite.addTestSuite(LokiFailures.class);
|
||||||
suite.addTestSuite(STLFailedTests.class);
|
suite.addTestSuite(STLFailedTests.class);
|
||||||
suite.addTestSuite(CModelElementsFailedTests.class);
|
suite.addTestSuite(CModelElementsFailedTests.class);
|
||||||
suite.addTestSuite(PatternsFailedTests.class);
|
|
||||||
|
|
||||||
// Last test to trigger report generation
|
// Last test to trigger report generation
|
||||||
suite.addTest(suite.new GenerateReport("generateReport"));
|
suite.addTest(suite.new GenerateReport("generateReport"));
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2003-07-04 John Camelon
|
||||||
|
Fixed NPE in Parser::declarator().
|
||||||
|
Bug 39652 - AST: Nested Classes incorrectly report null qualified Names
|
||||||
|
|
||||||
2003-07-04 Victor Mozgin
|
2003-07-04 Victor Mozgin
|
||||||
Added CTaskTagsReconciler.
|
Added CTaskTagsReconciler.
|
||||||
Extended ParserFactory with createProblemReporter() and createTranslationResult().
|
Extended ParserFactory with createProblemReporter() and createTranslationResult().
|
||||||
|
|
|
@ -2355,11 +2355,22 @@ public class Parser implements IParser
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
IASTScope s = null;
|
||||||
|
if( sdw != null )
|
||||||
|
s = sdw.getScope();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Declarator i = owningDeclarator;
|
||||||
|
while( i.getOwnerDeclarator() != null )
|
||||||
|
i = i.getOwnerDeclarator();
|
||||||
|
s = i.getOwner().getScope();
|
||||||
|
}
|
||||||
|
|
||||||
simpleDeclaration(
|
simpleDeclaration(
|
||||||
oldKRParameterDeclarationClause,
|
oldKRParameterDeclarationClause,
|
||||||
false,
|
false,
|
||||||
true,
|
true,
|
||||||
sdw.getScope());
|
s);
|
||||||
}
|
}
|
||||||
while (LT(1) != IToken.tLBRACE);
|
while (LT(1) != IToken.tLBRACE);
|
||||||
}
|
}
|
||||||
|
@ -2944,7 +2955,7 @@ public class Parser implements IParser
|
||||||
default :
|
default :
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
declaration(classSpec);
|
declaration(classSpec,astClassSpecifier);
|
||||||
}
|
}
|
||||||
catch (Backtrack bt)
|
catch (Backtrack bt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,6 +49,8 @@ public class ASTClassSpecifier
|
||||||
|
|
||||||
Stack names = new Stack();
|
Stack names = new Stack();
|
||||||
IASTScope parent = getOwnerScope();
|
IASTScope parent = getOwnerScope();
|
||||||
|
|
||||||
|
names.push( name ); // push on our own name
|
||||||
while (parent != null)
|
while (parent != null)
|
||||||
{
|
{
|
||||||
if (parent instanceof IASTNamespaceDefinition
|
if (parent instanceof IASTNamespaceDefinition
|
||||||
|
|
Loading…
Add table
Reference in a new issue