mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 18:26:01 +02:00
fix bugs 43063 & 43498
This commit is contained in:
parent
7a8f06f905
commit
75fee20f69
3 changed files with 99 additions and 69 deletions
|
@ -38,37 +38,37 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testFunctionIndexPrefix(){
|
public void testFunctionIndexPrefix(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "c()", FUNCTION, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "c()", FUNCTION, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
MethodDeclarationPattern functionPattern = (MethodDeclarationPattern)pattern;
|
MethodDeclarationPattern functionPattern = (MethodDeclarationPattern)pattern;
|
||||||
assertEquals( CharOperation.compareWith( "functionDecl/c".toCharArray(), functionPattern.indexEntryPrefix() ), 0);
|
assertEquals( CharOperation.compareWith( "functionDecl/c".toCharArray(), functionPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||||
|
|
||||||
functionPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "rt*()", FUNCTION, DECLARATIONS, true );
|
functionPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "rt*()", FUNCTION, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
assertEquals( CharOperation.compareWith( "functionDecl/rt".toCharArray(), functionPattern.indexEntryPrefix() ), 0);
|
assertEquals( CharOperation.compareWith( "functionDecl/rt".toCharArray(), functionPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||||
|
|
||||||
functionPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "Ac", FUNCTION, REFERENCES, false );
|
functionPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "Ac", FUNCTION, REFERENCES, false ); //$NON-NLS-1$
|
||||||
assertEquals( CharOperation.compareWith( "functionRef/".toCharArray(), functionPattern.indexEntryPrefix() ), 0);
|
assertEquals( CharOperation.compareWith( "functionRef/".toCharArray(), functionPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMethodIndexPrefix(){
|
public void testMethodIndexPrefix(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::c", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::c", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
assertTrue( pattern instanceof MethodDeclarationPattern );
|
assertTrue( pattern instanceof MethodDeclarationPattern );
|
||||||
|
|
||||||
MethodDeclarationPattern methodPattern = (MethodDeclarationPattern)pattern;
|
MethodDeclarationPattern methodPattern = (MethodDeclarationPattern)pattern;
|
||||||
assertEquals( CharOperation.compareWith( "methodDecl/c/B/A".toCharArray(), methodPattern.indexEntryPrefix() ), 0);
|
assertEquals( CharOperation.compareWith( "methodDecl/c/B/A".toCharArray(), methodPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||||
|
|
||||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "::*::A::B::c", METHOD, DECLARATIONS, true );
|
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "::*::A::B::c", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
assertEquals( CharOperation.compareWith( "methodDecl/c/B/A/".toCharArray(), methodPattern.indexEntryPrefix() ), 0);
|
assertEquals( CharOperation.compareWith( "methodDecl/c/B/A/".toCharArray(), methodPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||||
|
|
||||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "::RT*::c", METHOD, REFERENCES, true );
|
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "::RT*::c", METHOD, REFERENCES, true ); //$NON-NLS-1$
|
||||||
assertEquals( CharOperation.compareWith( "methodRef/c/RT".toCharArray(), methodPattern.indexEntryPrefix() ), 0);
|
assertEquals( CharOperation.compareWith( "methodRef/c/RT".toCharArray(), methodPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||||
|
|
||||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "A::B::c", METHOD, REFERENCES, false );
|
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "A::B::c", METHOD, REFERENCES, false ); //$NON-NLS-1$
|
||||||
assertEquals( CharOperation.compareWith( "methodRef/".toCharArray(), methodPattern.indexEntryPrefix() ), 0);
|
assertEquals( CharOperation.compareWith( "methodRef/".toCharArray(), methodPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMethodDeclaration() {
|
public void testMethodDeclaration() {
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::f", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::f", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMethodDeclarationWithParams() {
|
public void testMethodDeclarationWithParams() {
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::f( A )", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::f( A )", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
|
|
||||||
|
@ -88,37 +88,37 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMethodDeclarationParameterMatching(){
|
public void testMethodDeclarationParameterMatching(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "f( A & )", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "f( A & )", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
Set matches = resultCollector.getSearchResults();
|
Set matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "f( A * )", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "f( A * )", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "f( int &, const char [], A** )", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "f( int &, const char [], A** )", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMethodWithNoParameters(){
|
public void testMethodWithNoParameters(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "turn( )", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "turn( )", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
Set matches = resultCollector.getSearchResults();
|
Set matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 2 );
|
assertEquals( matches.size(), 2 );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "turn(void)", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "turn(void)", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 2 );
|
assertEquals( matches.size(), 2 );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "turnAgain()", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "turnAgain()", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
|
@ -127,14 +127,14 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testOperators_bug43063_bug42979(){
|
public void testOperators_bug43063_bug42979(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "operator \\*", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "operator \\*", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
Set matches = resultCollector.getSearchResults();
|
Set matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
IMatch match1 = (IMatch) matches.iterator().next();
|
IMatch match1 = (IMatch) matches.iterator().next();
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "operator \\*", METHOD, DEFINITIONS, true );
|
pattern = SearchEngine.createSearchPattern( "operator \\*", METHOD, DEFINITIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
|
@ -142,13 +142,13 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
|
|
||||||
assertTrue( match1.getStartOffset() == match2.getStartOffset() );
|
assertTrue( match1.getStartOffset() == match2.getStartOffset() );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "operator \\*=", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "operator \\*=", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
match1 = (IMatch) matches.iterator().next();
|
match1 = (IMatch) matches.iterator().next();
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "operator \\*=", METHOD, DEFINITIONS, true );
|
pattern = SearchEngine.createSearchPattern( "operator \\*=", METHOD, DEFINITIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
|
@ -156,14 +156,20 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
|
|
||||||
assertTrue( match1.getStartOffset() != match2.getStartOffset() );
|
assertTrue( match1.getStartOffset() != match2.getStartOffset() );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "operator *", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "operator *", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 6 ); //3 in classDecl.cpp
|
assertEquals( matches.size(), 6 ); //3 in classDecl.cpp
|
||||||
|
|
||||||
|
pattern = SearchEngine.createSearchPattern( "operator ->\\*", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
assertTrue( pattern instanceof MethodDeclarationPattern );
|
||||||
|
MethodDeclarationPattern methodPattern = (MethodDeclarationPattern) pattern;
|
||||||
|
char [] string = new char[] {'o','p','e','r','a','t','o','r',' ','-','>','\\','*'};
|
||||||
|
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBug43498(){
|
public void testBug43498(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "operator ?elete", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "operator ?elete", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
assertTrue( pattern instanceof MethodDeclarationPattern );
|
assertTrue( pattern instanceof MethodDeclarationPattern );
|
||||||
MethodDeclarationPattern methodPattern = (MethodDeclarationPattern) pattern;
|
MethodDeclarationPattern methodPattern = (MethodDeclarationPattern) pattern;
|
||||||
|
@ -171,42 +177,48 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
char [] string = new char[] {'o','p','e','r','a','t','o','r',' ','?','e','l','e','t','e'};
|
char [] string = new char[] {'o','p','e','r','a','t','o','r',' ','?','e','l','e','t','e'};
|
||||||
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "operator delete", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "operator delete", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
assertTrue( pattern instanceof MethodDeclarationPattern );
|
assertTrue( pattern instanceof MethodDeclarationPattern );
|
||||||
methodPattern = (MethodDeclarationPattern) pattern;
|
methodPattern = (MethodDeclarationPattern) pattern;
|
||||||
string = new char[] {'o','p','e','r','a','t','o','r',' ','d','e','l','e','t','e'};
|
string = new char[] {'o','p','e','r','a','t','o','r',' ','d','e','l','e','t','e'};
|
||||||
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "word?word", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "word?word", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
assertTrue( pattern instanceof MethodDeclarationPattern );
|
assertTrue( pattern instanceof MethodDeclarationPattern );
|
||||||
methodPattern = (MethodDeclarationPattern) pattern;
|
methodPattern = (MethodDeclarationPattern) pattern;
|
||||||
|
|
||||||
string = new char[] {'w','o','r','d','?','w','o','r','d'};
|
string = new char[] {'w','o','r','d','?','w','o','r','d'};
|
||||||
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
||||||
|
|
||||||
|
pattern = SearchEngine.createSearchPattern( "operato? delete", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
assertTrue( pattern instanceof MethodDeclarationPattern );
|
||||||
|
methodPattern = (MethodDeclarationPattern) pattern;
|
||||||
|
string = new char[] {'o','p','e','r','a','t','o','?',' ','d','e','l','e','t','e'};
|
||||||
|
assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBug43062(){
|
public void testBug43062(){
|
||||||
MethodDeclarationPattern pattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "operator const short &", METHOD, DECLARATIONS, true );
|
MethodDeclarationPattern pattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "operator const short &", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
char [] string = new char [] { 'o','p','e','r','a','t','o','r',' ','c','o','n','s','t',' ','s','h','o','r','t',' ','&' };
|
char [] string = new char [] { 'o','p','e','r','a','t','o','r',' ','c','o','n','s','t',' ','s','h','o','r','t',' ','&' };
|
||||||
assertTrue( CharOperation.equals( string, pattern.getSimpleName() ) );
|
assertTrue( CharOperation.equals( string, pattern.getSimpleName() ) );
|
||||||
|
|
||||||
pattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "operator short", METHOD, DECLARATIONS, true );
|
pattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "operator short", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
string = new char [] { 'o','p','e','r','a','t','o','r',' ','s','h','o','r','t' };
|
string = new char [] { 'o','p','e','r','a','t','o','r',' ','s','h','o','r','t' };
|
||||||
assertTrue( CharOperation.equals( string, pattern.getSimpleName() ) );
|
assertTrue( CharOperation.equals( string, pattern.getSimpleName() ) );
|
||||||
|
|
||||||
pattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "operator short int", METHOD, DECLARATIONS, true );
|
pattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "operator short int", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
string = new char [] { 'o','p','e','r','a','t','o','r',' ','s','h','o','r','t',' ','i','n','t' };
|
string = new char [] { 'o','p','e','r','a','t','o','r',' ','s','h','o','r','t',' ','i','n','t' };
|
||||||
assertTrue( CharOperation.equals( string, pattern.getSimpleName() ) );
|
assertTrue( CharOperation.equals( string, pattern.getSimpleName() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testConstructorDestructor(){
|
public void testConstructorDestructor(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
|
|
||||||
Set matches = resultCollector.getSearchResults();
|
Set matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 1 );
|
assertEquals( matches.size(), 1 );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "~A", METHOD, DECLARATIONS, true );
|
pattern = SearchEngine.createSearchPattern( "~A", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
|
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
|
@ -214,19 +226,19 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLookupForDefinition(){
|
public void testLookupForDefinition(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "turn", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "turn", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
Set matches = resultCollector.getSearchResults();
|
Set matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 3 );
|
assertEquals( matches.size(), 3 );
|
||||||
|
|
||||||
pattern = SearchEngine.createSearchPattern( "Direction::turn", METHOD, DEFINITIONS, true );
|
pattern = SearchEngine.createSearchPattern( "Direction::turn", METHOD, DEFINITIONS, true ); //$NON-NLS-1$
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
matches = resultCollector.getSearchResults();
|
matches = resultCollector.getSearchResults();
|
||||||
assertEquals( matches.size(), 0 );
|
assertEquals( matches.size(), 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBug63478(){
|
public void testBug63478(){
|
||||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::f(*)", METHOD, DECLARATIONS, true );
|
ICSearchPattern pattern = SearchEngine.createSearchPattern( "A::B::f(*)", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||||
|
|
||||||
search( workspace, pattern, scope, resultCollector );
|
search( workspace, pattern, scope, resultCollector );
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
2004-06-11 Andrew Niefer
|
||||||
|
fix bugs 43063 & 43498 - better handling of spaces around wild cards in search pattern
|
||||||
|
|
||||||
2004-06-10 Andrew Niefer
|
2004-06-10 Andrew Niefer
|
||||||
fix bug 64986 - handle Containers in CSearchScope
|
fix bug 64986 - handle Containers in CSearchScope
|
||||||
|
|
||||||
|
|
|
@ -175,11 +175,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return orPattern;
|
return orPattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char [] patternArray = patternString.toCharArray();
|
||||||
IScanner scanner = null;
|
IScanner scanner = null;
|
||||||
try {
|
try {
|
||||||
scanner =
|
scanner =
|
||||||
ParserFactory.createScanner(
|
ParserFactory.createScanner(
|
||||||
new CodeReader(patternString.toCharArray()),
|
new CodeReader(patternArray),
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
@ -188,7 +189,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
} catch (ParserFactoryError e) {
|
} catch (ParserFactoryError e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
LinkedList list = scanForNames( scanner, null );
|
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||||
|
|
||||||
char [] name = (char []) list.removeLast();
|
char [] name = (char []) list.removeLast();
|
||||||
char [][] qualifications = new char [0][];
|
char [][] qualifications = new char [0][];
|
||||||
|
@ -245,11 +246,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return orPattern;
|
return orPattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char [] patternArray = patternString.toCharArray();
|
||||||
IScanner scanner=null;
|
IScanner scanner=null;
|
||||||
try {
|
try {
|
||||||
scanner =
|
scanner =
|
||||||
ParserFactory.createScanner(
|
ParserFactory.createScanner(
|
||||||
new CodeReader(patternString.toCharArray()),
|
new CodeReader(patternArray),
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
@ -257,7 +259,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
} catch (ParserFactoryError e) {
|
} catch (ParserFactoryError e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
LinkedList list = scanForNames( scanner, null );
|
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||||
|
|
||||||
char [] name = (char []) list.removeLast();
|
char [] name = (char []) list.removeLast();
|
||||||
char [][] qualifications = new char[0][];
|
char [][] qualifications = new char[0][];
|
||||||
|
@ -285,12 +287,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
int index = patternString.indexOf( '(' );
|
int index = patternString.indexOf( '(' );
|
||||||
String paramString = ( index == -1 ) ? "" : patternString.substring( index ); //$NON-NLS-1$
|
String paramString = ( index == -1 ) ? "" : patternString.substring( index ); //$NON-NLS-1$
|
||||||
String nameString = ( index == -1 ) ? patternString : patternString.substring( 0, index );
|
String nameString = ( index == -1 ) ? patternString : patternString.substring( 0, index );
|
||||||
|
char [] nameArray = nameString.toCharArray();
|
||||||
IScanner scanner=null;
|
IScanner scanner=null;
|
||||||
try {
|
try {
|
||||||
scanner =
|
scanner =
|
||||||
ParserFactory.createScanner(
|
ParserFactory.createScanner(
|
||||||
new CodeReader(nameString.toCharArray()),
|
new CodeReader(nameArray),
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
@ -298,7 +300,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
} catch (ParserFactoryError e) {
|
} catch (ParserFactoryError e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
LinkedList names = scanForNames( scanner, null );
|
LinkedList names = scanForNames( scanner, null, nameArray );
|
||||||
|
|
||||||
LinkedList params = scanForParameters( paramString );
|
LinkedList params = scanForParameters( paramString );
|
||||||
|
|
||||||
|
@ -334,21 +336,14 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
orPattern.addPattern( createClassPattern( patternString, STRUCT, limitTo, matchMode, caseSensitive ) );
|
orPattern.addPattern( createClassPattern( patternString, STRUCT, limitTo, matchMode, caseSensitive ) );
|
||||||
return orPattern;
|
return orPattern;
|
||||||
}
|
}
|
||||||
// else if( searchFor == TYPE ){
|
|
||||||
// OrPattern orPattern = new OrPattern();
|
char [] patternArray = patternString.toCharArray();
|
||||||
// orPattern.addPattern( createClassPattern( patternString, CLASS, limitTo, matchMode, caseSensitive ) );
|
|
||||||
// orPattern.addPattern( createClassPattern( patternString, STRUCT, limitTo, matchMode, caseSensitive ) );
|
|
||||||
// orPattern.addPattern( createClassPattern( patternString, UNION, limitTo, matchMode, caseSensitive ) );
|
|
||||||
// orPattern.addPattern( createClassPattern( patternString, ENUM, limitTo, matchMode, caseSensitive ) );
|
|
||||||
// orPattern.addPattern( createClassPattern( patternString, TYPEDEF, limitTo, matchMode, caseSensitive ) );
|
|
||||||
// return orPattern;
|
|
||||||
// }
|
|
||||||
|
|
||||||
IScanner scanner =null;
|
IScanner scanner =null;
|
||||||
try {
|
try {
|
||||||
scanner =
|
scanner =
|
||||||
ParserFactory.createScanner(
|
ParserFactory.createScanner(
|
||||||
new CodeReader(patternString.toCharArray()),
|
new CodeReader(patternArray),
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
@ -379,11 +374,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
} else {
|
} else {
|
||||||
nullifyToken = false;
|
nullifyToken = false;
|
||||||
}
|
}
|
||||||
if( nullifyToken )
|
if( nullifyToken ){
|
||||||
|
patternArray = CharOperation.subarray( patternArray, token.getLength() + 1, -1 );
|
||||||
token = null;
|
token = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LinkedList list = scanForNames( scanner, token );
|
LinkedList list = scanForNames( scanner, token, patternArray );
|
||||||
|
|
||||||
char[] name = (char [])list.removeLast();
|
char[] name = (char [])list.removeLast();
|
||||||
char [][] qualifications = new char[0][];
|
char [][] qualifications = new char[0][];
|
||||||
|
@ -393,13 +390,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
|
|
||||||
|
|
||||||
private static CSearchPattern createDerivedPattern(String patternString, SearchFor searchFor, LimitTo limitTo, int matchMode, boolean caseSensitive) {
|
private static CSearchPattern createDerivedPattern(String patternString, SearchFor searchFor, LimitTo limitTo, int matchMode, boolean caseSensitive) {
|
||||||
|
char [] patternArray = patternString.toCharArray();
|
||||||
|
|
||||||
IScanner scanner =null;
|
IScanner scanner =null;
|
||||||
try {
|
try {
|
||||||
scanner =
|
scanner =
|
||||||
ParserFactory.createScanner(
|
ParserFactory.createScanner(
|
||||||
new CodeReader(patternString.toCharArray()),
|
new CodeReader(patternArray),
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
@ -409,7 +406,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
|
|
||||||
searchFor = DERIVED;
|
searchFor = DERIVED;
|
||||||
|
|
||||||
LinkedList list = scanForNames( scanner, null );
|
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||||
|
|
||||||
char[] name = (char [])list.removeLast();
|
char[] name = (char [])list.removeLast();
|
||||||
char [][] qualifications = new char[0][];
|
char [][] qualifications = new char[0][];
|
||||||
|
@ -419,12 +416,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
|
|
||||||
private static CSearchPattern createFriendPattern(String patternString, SearchFor searchFor, LimitTo limitTo, int matchMode, boolean caseSensitive) {
|
private static CSearchPattern createFriendPattern(String patternString, SearchFor searchFor, LimitTo limitTo, int matchMode, boolean caseSensitive) {
|
||||||
|
|
||||||
|
char [] patternArray = patternString.toCharArray();
|
||||||
IScanner scanner =null;
|
IScanner scanner =null;
|
||||||
try {
|
try {
|
||||||
scanner =
|
scanner =
|
||||||
ParserFactory.createScanner(
|
ParserFactory.createScanner(
|
||||||
new CodeReader(patternString.toCharArray()),
|
new CodeReader(patternArray),
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
@ -434,7 +431,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
|
|
||||||
searchFor = FRIEND;
|
searchFor = FRIEND;
|
||||||
|
|
||||||
LinkedList list = scanForNames( scanner, null );
|
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||||
|
|
||||||
char[] name = (char [])list.removeLast();
|
char[] name = (char [])list.removeLast();
|
||||||
char [][] qualifications = new char[0][];
|
char [][] qualifications = new char[0][];
|
||||||
|
@ -511,10 +508,11 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
static private LinkedList scanForNames( IScanner scanner, IToken unusedToken ){
|
static private LinkedList scanForNames( IScanner scanner, IToken unusedToken, char[] pattern ){
|
||||||
LinkedList list = new LinkedList();
|
LinkedList list = new LinkedList();
|
||||||
|
|
||||||
String name = new String(""); //$NON-NLS-1$
|
String name = new String(""); //$NON-NLS-1$
|
||||||
|
int idx = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
IToken token = ( unusedToken != null ) ? unusedToken : scanner.nextToken();
|
IToken token = ( unusedToken != null ) ? unusedToken : scanner.nextToken();
|
||||||
|
@ -531,33 +529,49 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
list.addLast( name.toCharArray() );
|
list.addLast( name.toCharArray() );
|
||||||
name = new String(""); //$NON-NLS-1$
|
name = new String(""); //$NON-NLS-1$
|
||||||
lastTokenWasOperator = false;
|
lastTokenWasOperator = false;
|
||||||
|
idx += token.getLength();
|
||||||
|
while( idx < pattern.length && CharOperation.isWhitespace( pattern[idx] ) ){ idx++; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IToken.t_operator :
|
case IToken.t_operator :
|
||||||
name += token.getImage() + " "; //$NON-NLS-1$
|
name += token.getImage();
|
||||||
|
name += ' ';
|
||||||
lastTokenWasOperator = true;
|
lastTokenWasOperator = true;
|
||||||
|
idx += token.getLength();
|
||||||
|
while( idx < pattern.length && CharOperation.isWhitespace( pattern[idx] ) ){ idx++; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if( token.getType() == IToken.tSTAR ||
|
if( token.getType() == IToken.tSTAR ||
|
||||||
token.getType() == IToken.tQUESTION
|
token.getType() == IToken.tQUESTION
|
||||||
){
|
)
|
||||||
|
{
|
||||||
|
if( idx > 0 && idx < pattern.length && CharOperation.isWhitespace( pattern[ idx - 1 ] ) && !lastTokenWasOperator )
|
||||||
|
name += ' ';
|
||||||
encounteredWild = true;
|
encounteredWild = true;
|
||||||
} else if( !encounteredWild && !lastTokenWasOperator && name.length() > 0 &&
|
} else if( !encounteredWild && !lastTokenWasOperator && name.length() > 0 &&
|
||||||
prev.getType() != IToken.tIDENTIFIER &&
|
prev.getType() != IToken.tIDENTIFIER &&
|
||||||
prev.getType() != IToken.tLT &&
|
prev.getType() != IToken.tLT &&
|
||||||
prev.getType() != IToken.tCOMPL &&
|
prev.getType() != IToken.tCOMPL &&
|
||||||
|
prev.getType() != IToken.tARROW &&
|
||||||
prev.getType() != IToken.tLBRACKET &&
|
prev.getType() != IToken.tLBRACKET &&
|
||||||
token.getType() != IToken.tRBRACKET &&
|
token.getType() != IToken.tRBRACKET &&
|
||||||
token.getType()!= IToken.tGT
|
token.getType()!= IToken.tGT
|
||||||
){
|
){
|
||||||
name += " "; //$NON-NLS-1$
|
name += ' ';
|
||||||
} else {
|
} else {
|
||||||
encounteredWild = false;
|
encounteredWild = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
name += token.getImage();
|
name += token.getImage();
|
||||||
|
|
||||||
|
if( encounteredWild && idx < pattern.length - 1 && CharOperation.isWhitespace( pattern[ idx + 1 ] ) )
|
||||||
|
{
|
||||||
|
name += ' ';
|
||||||
|
}
|
||||||
|
idx += token.getLength();
|
||||||
|
while( idx < pattern.length && CharOperation.isWhitespace( pattern[idx] ) ){ idx++; }
|
||||||
|
|
||||||
lastTokenWasOperator = false;
|
lastTokenWasOperator = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -570,8 +584,9 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
} catch ( ScannerException e ){
|
} catch ( ScannerException e ){
|
||||||
if( e.getProblem().getID() == IProblem.SCANNER_BAD_CHARACTER ){
|
if( e.getProblem().getID() == IProblem.SCANNER_BAD_CHARACTER ){
|
||||||
//TODO : This may not be \\, it could be another bad character
|
//TODO : This may not be \\, it could be another bad character
|
||||||
if( !encounteredWild && !lastTokenWasOperator ) name += " "; //$NON-NLS-1$
|
if( !encounteredWild && !lastTokenWasOperator && prev.getType() != IToken.tARROW ) name += " "; //$NON-NLS-1$
|
||||||
name += "\\"; //$NON-NLS-1$
|
name += "\\"; //$NON-NLS-1$
|
||||||
|
idx++;
|
||||||
encounteredWild = true;
|
encounteredWild = true;
|
||||||
lastTokenWasOperator = false;
|
lastTokenWasOperator = false;
|
||||||
prev = null;
|
prev = null;
|
||||||
|
|
Loading…
Add table
Reference in a new issue