1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 10:16:03 +02:00

fix bugs 43063 & 43498

This commit is contained in:
Andrew Niefer 2004-06-11 18:29:03 +00:00
parent 7a8f06f905
commit 75fee20f69
3 changed files with 99 additions and 69 deletions

View file

@ -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 );

View file

@ -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

View file

@ -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;