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(){
|
||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "c()", FUNCTION, DECLARATIONS, true );
|
||||
ICSearchPattern pattern = SearchEngine.createSearchPattern( "c()", FUNCTION, DECLARATIONS, true ); //$NON-NLS-1$
|
||||
|
||||
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 );
|
||||
assertEquals( CharOperation.compareWith( "functionDecl/rt".toCharArray(), functionPattern.indexEntryPrefix() ), 0);
|
||||
functionPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "rt*()", FUNCTION, DECLARATIONS, true ); //$NON-NLS-1$
|
||||
assertEquals( CharOperation.compareWith( "functionDecl/rt".toCharArray(), functionPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||
|
||||
functionPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "Ac", FUNCTION, REFERENCES, false );
|
||||
assertEquals( CharOperation.compareWith( "functionRef/".toCharArray(), functionPattern.indexEntryPrefix() ), 0);
|
||||
functionPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "Ac", FUNCTION, REFERENCES, false ); //$NON-NLS-1$
|
||||
assertEquals( CharOperation.compareWith( "functionRef/".toCharArray(), functionPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
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 );
|
||||
assertEquals( CharOperation.compareWith( "methodDecl/c/B/A/".toCharArray(), methodPattern.indexEntryPrefix() ), 0);
|
||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "::*::A::B::c", METHOD, DECLARATIONS, true ); //$NON-NLS-1$
|
||||
assertEquals( CharOperation.compareWith( "methodDecl/c/B/A/".toCharArray(), methodPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||
|
||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "::RT*::c", METHOD, REFERENCES, true );
|
||||
assertEquals( CharOperation.compareWith( "methodRef/c/RT".toCharArray(), methodPattern.indexEntryPrefix() ), 0);
|
||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "::RT*::c", METHOD, REFERENCES, true ); //$NON-NLS-1$
|
||||
assertEquals( CharOperation.compareWith( "methodRef/c/RT".toCharArray(), methodPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||
|
||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "A::B::c", METHOD, REFERENCES, false );
|
||||
assertEquals( CharOperation.compareWith( "methodRef/".toCharArray(), methodPattern.indexEntryPrefix() ), 0);
|
||||
methodPattern = (MethodDeclarationPattern) SearchEngine.createSearchPattern( "A::B::c", METHOD, REFERENCES, false ); //$NON-NLS-1$
|
||||
assertEquals( CharOperation.compareWith( "methodRef/".toCharArray(), methodPattern.indexEntryPrefix() ), 0); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
|
@ -78,7 +78,7 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
|||
}
|
||||
|
||||
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 );
|
||||
|
||||
|
@ -88,37 +88,37 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
|||
}
|
||||
|
||||
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 );
|
||||
Set matches = resultCollector.getSearchResults();
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
assertEquals( matches.size(), 1 );
|
||||
}
|
||||
|
||||
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 );
|
||||
Set matches = resultCollector.getSearchResults();
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
|
@ -127,14 +127,14 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
|||
}
|
||||
|
||||
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 );
|
||||
Set matches = resultCollector.getSearchResults();
|
||||
assertEquals( matches.size(), 1 );
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
assertEquals( matches.size(), 1 );
|
||||
|
@ -142,13 +142,13 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
|||
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
assertEquals( matches.size(), 1 );
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
assertEquals( matches.size(), 1 );
|
||||
|
@ -156,14 +156,20 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
|||
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
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(){
|
||||
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 );
|
||||
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'};
|
||||
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 );
|
||||
methodPattern = (MethodDeclarationPattern) pattern;
|
||||
string = new char[] {'o','p','e','r','a','t','o','r',' ','d','e','l','e','t','e'};
|
||||
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 );
|
||||
methodPattern = (MethodDeclarationPattern) pattern;
|
||||
|
||||
string = new char[] {'w','o','r','d','?','w','o','r','d'};
|
||||
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(){
|
||||
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',' ','&' };
|
||||
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' };
|
||||
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' };
|
||||
assertTrue( CharOperation.equals( string, pattern.getSimpleName() ) );
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
Set matches = resultCollector.getSearchResults();
|
||||
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 );
|
||||
|
||||
matches = resultCollector.getSearchResults();
|
||||
|
@ -214,19 +226,19 @@ public class FunctionMethodPatternTests extends BaseSearchTest {
|
|||
}
|
||||
|
||||
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 );
|
||||
Set matches = resultCollector.getSearchResults();
|
||||
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 );
|
||||
matches = resultCollector.getSearchResults();
|
||||
assertEquals( matches.size(), 0 );
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
|
|
|
@ -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
|
||||
fix bug 64986 - handle Containers in CSearchScope
|
||||
|
||||
|
|
|
@ -175,11 +175,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
return orPattern;
|
||||
}
|
||||
|
||||
char [] patternArray = patternString.toCharArray();
|
||||
IScanner scanner = null;
|
||||
try {
|
||||
scanner =
|
||||
ParserFactory.createScanner(
|
||||
new CodeReader(patternString.toCharArray()),
|
||||
new CodeReader(patternArray),
|
||||
new ScannerInfo(),
|
||||
ParserMode.QUICK_PARSE,
|
||||
ParserLanguage.CPP,
|
||||
|
@ -188,7 +189,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
} catch (ParserFactoryError e) {
|
||||
|
||||
}
|
||||
LinkedList list = scanForNames( scanner, null );
|
||||
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||
|
||||
char [] name = (char []) list.removeLast();
|
||||
char [][] qualifications = new char [0][];
|
||||
|
@ -245,11 +246,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
return orPattern;
|
||||
}
|
||||
|
||||
char [] patternArray = patternString.toCharArray();
|
||||
IScanner scanner=null;
|
||||
try {
|
||||
scanner =
|
||||
ParserFactory.createScanner(
|
||||
new CodeReader(patternString.toCharArray()),
|
||||
new CodeReader(patternArray),
|
||||
new ScannerInfo(),
|
||||
ParserMode.QUICK_PARSE,
|
||||
ParserLanguage.CPP,
|
||||
|
@ -257,7 +259,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
} catch (ParserFactoryError e) {
|
||||
|
||||
}
|
||||
LinkedList list = scanForNames( scanner, null );
|
||||
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||
|
||||
char [] name = (char []) list.removeLast();
|
||||
char [][] qualifications = new char[0][];
|
||||
|
@ -285,12 +287,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
int index = patternString.indexOf( '(' );
|
||||
String paramString = ( index == -1 ) ? "" : patternString.substring( index ); //$NON-NLS-1$
|
||||
String nameString = ( index == -1 ) ? patternString : patternString.substring( 0, index );
|
||||
|
||||
char [] nameArray = nameString.toCharArray();
|
||||
IScanner scanner=null;
|
||||
try {
|
||||
scanner =
|
||||
ParserFactory.createScanner(
|
||||
new CodeReader(nameString.toCharArray()),
|
||||
new CodeReader(nameArray),
|
||||
new ScannerInfo(),
|
||||
ParserMode.QUICK_PARSE,
|
||||
ParserLanguage.CPP,
|
||||
|
@ -298,7 +300,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
} catch (ParserFactoryError e) {
|
||||
}
|
||||
|
||||
LinkedList names = scanForNames( scanner, null );
|
||||
LinkedList names = scanForNames( scanner, null, nameArray );
|
||||
|
||||
LinkedList params = scanForParameters( paramString );
|
||||
|
||||
|
@ -334,21 +336,14 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
orPattern.addPattern( createClassPattern( patternString, STRUCT, limitTo, matchMode, caseSensitive ) );
|
||||
return orPattern;
|
||||
}
|
||||
// else if( searchFor == TYPE ){
|
||||
// OrPattern orPattern = new OrPattern();
|
||||
// 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;
|
||||
// }
|
||||
|
||||
char [] patternArray = patternString.toCharArray();
|
||||
|
||||
IScanner scanner =null;
|
||||
try {
|
||||
scanner =
|
||||
ParserFactory.createScanner(
|
||||
new CodeReader(patternString.toCharArray()),
|
||||
new CodeReader(patternArray),
|
||||
new ScannerInfo(),
|
||||
ParserMode.QUICK_PARSE,
|
||||
ParserLanguage.CPP,
|
||||
|
@ -379,11 +374,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
} else {
|
||||
nullifyToken = false;
|
||||
}
|
||||
if( nullifyToken )
|
||||
if( nullifyToken ){
|
||||
patternArray = CharOperation.subarray( patternArray, token.getLength() + 1, -1 );
|
||||
token = null;
|
||||
}
|
||||
}
|
||||
|
||||
LinkedList list = scanForNames( scanner, token );
|
||||
LinkedList list = scanForNames( scanner, token, patternArray );
|
||||
|
||||
char[] name = (char [])list.removeLast();
|
||||
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) {
|
||||
|
||||
char [] patternArray = patternString.toCharArray();
|
||||
|
||||
IScanner scanner =null;
|
||||
try {
|
||||
scanner =
|
||||
ParserFactory.createScanner(
|
||||
new CodeReader(patternString.toCharArray()),
|
||||
new CodeReader(patternArray),
|
||||
new ScannerInfo(),
|
||||
ParserMode.QUICK_PARSE,
|
||||
ParserLanguage.CPP,
|
||||
|
@ -409,7 +406,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
|
||||
searchFor = DERIVED;
|
||||
|
||||
LinkedList list = scanForNames( scanner, null );
|
||||
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||
|
||||
char[] name = (char [])list.removeLast();
|
||||
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) {
|
||||
|
||||
|
||||
char [] patternArray = patternString.toCharArray();
|
||||
IScanner scanner =null;
|
||||
try {
|
||||
scanner =
|
||||
ParserFactory.createScanner(
|
||||
new CodeReader(patternString.toCharArray()),
|
||||
new CodeReader(patternArray),
|
||||
new ScannerInfo(),
|
||||
ParserMode.QUICK_PARSE,
|
||||
ParserLanguage.CPP,
|
||||
|
@ -434,7 +431,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
|
||||
searchFor = FRIEND;
|
||||
|
||||
LinkedList list = scanForNames( scanner, null );
|
||||
LinkedList list = scanForNames( scanner, null, patternArray );
|
||||
|
||||
char[] name = (char [])list.removeLast();
|
||||
char [][] qualifications = new char[0][];
|
||||
|
@ -511,10 +508,11 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
return list;
|
||||
}
|
||||
|
||||
static private LinkedList scanForNames( IScanner scanner, IToken unusedToken ){
|
||||
static private LinkedList scanForNames( IScanner scanner, IToken unusedToken, char[] pattern ){
|
||||
LinkedList list = new LinkedList();
|
||||
|
||||
String name = new String(""); //$NON-NLS-1$
|
||||
int idx = 0;
|
||||
|
||||
try {
|
||||
IToken token = ( unusedToken != null ) ? unusedToken : scanner.nextToken();
|
||||
|
@ -531,33 +529,49 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
list.addLast( name.toCharArray() );
|
||||
name = new String(""); //$NON-NLS-1$
|
||||
lastTokenWasOperator = false;
|
||||
idx += token.getLength();
|
||||
while( idx < pattern.length && CharOperation.isWhitespace( pattern[idx] ) ){ idx++; }
|
||||
break;
|
||||
|
||||
case IToken.t_operator :
|
||||
name += token.getImage() + " "; //$NON-NLS-1$
|
||||
name += token.getImage();
|
||||
name += ' ';
|
||||
lastTokenWasOperator = true;
|
||||
idx += token.getLength();
|
||||
while( idx < pattern.length && CharOperation.isWhitespace( pattern[idx] ) ){ idx++; }
|
||||
break;
|
||||
|
||||
default:
|
||||
if( token.getType() == IToken.tSTAR ||
|
||||
token.getType() == IToken.tQUESTION
|
||||
){
|
||||
)
|
||||
{
|
||||
if( idx > 0 && idx < pattern.length && CharOperation.isWhitespace( pattern[ idx - 1 ] ) && !lastTokenWasOperator )
|
||||
name += ' ';
|
||||
encounteredWild = true;
|
||||
} else if( !encounteredWild && !lastTokenWasOperator && name.length() > 0 &&
|
||||
prev.getType() != IToken.tIDENTIFIER &&
|
||||
prev.getType() != IToken.tLT &&
|
||||
prev.getType() != IToken.tCOMPL &&
|
||||
prev.getType() != IToken.tARROW &&
|
||||
prev.getType() != IToken.tLBRACKET &&
|
||||
token.getType() != IToken.tRBRACKET &&
|
||||
token.getType()!= IToken.tGT
|
||||
){
|
||||
name += " "; //$NON-NLS-1$
|
||||
name += ' ';
|
||||
} else {
|
||||
encounteredWild = false;
|
||||
}
|
||||
|
||||
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;
|
||||
break;
|
||||
}
|
||||
|
@ -570,8 +584,9 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
|||
} catch ( ScannerException e ){
|
||||
if( e.getProblem().getID() == IProblem.SCANNER_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$
|
||||
idx++;
|
||||
encounteredWild = true;
|
||||
lastTokenWasOperator = false;
|
||||
prev = null;
|
||||
|
|
Loading…
Add table
Reference in a new issue