[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] bug43498 - Search fails with ? on first letter of second word
|
core:
- modifications to CSearchPattern.scanForNames()
- add getSimpleName to MethodDeclarationPattern
tests:
- Added FunctionMethodPatternTests.testBug43498()
Suite tests passed on windows & Linux
-Andrew
Index: search/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/search/ChangeLog,v
retrieving revision 1.26
diff -u -r1.26 ChangeLog
--- search/ChangeLog 22 Sep 2003 18:38:24 -0000 1.26
+++ search/ChangeLog 23 Sep 2003 21:04:15 -0000
@@ -1,3 +1,8 @@
+2003-09-23 Andrew Niefer
+ fix bug 43498 Search with ? fails on first letter of second word
+ -modifications to CSearchPattern.scanForNames()
+ -add getSimpleName to MethodDeclarationPattern
+
2003-09-19 Andrew Niefer
fix bug 43327 Code Complete finds local variables
- modified MatchLocator to not report local declarations when boolean is set
Index: search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java,v
retrieving revision 1.22
diff -u -r1.22 CSearchPattern.java
--- search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java 18 Sep 2003 15:15:08 -0000 1.22
+++ search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java 23 Sep 2003 21:04:16 -0000
@@ -417,27 +417,37 @@
IToken token = ( unusedToken != null ) ? unusedToken : scanner.nextToken();
scanner.setThrowExceptionOnBadCharacterRead( true );
- boolean lastTokenWasWild = false;
+ boolean encounteredWild = false;
+ boolean lastTokenWasOperator = false;
while( true ){
switch( token.getType() ){
case IToken.tCOLONCOLON :
list.addLast( name.toCharArray() );
name = new String("");
+ lastTokenWasOperator = false;
break;
+
+ case IToken.t_operator :
+ name += token.getImage() + " ";
+ lastTokenWasOperator = true;
+ break;
+
default:
if( token.getType() == IToken.tSTAR ||
token.getType() == IToken.tQUESTION ||
token.getType() == IToken.tCOMPL //Need this for destructors
){
- lastTokenWasWild = true;
- } else if( !lastTokenWasWild && name.length() > 0 ) {
+ encounteredWild = true;
+ } else if( !encounteredWild && !lastTokenWasOperator && name.length() > 0 ) {
name += " ";
} else {
- lastTokenWasWild = false;
+ encounteredWild = false;
}
name += token.getImage();
+
+ lastTokenWasOperator = false;
break;
}
token = null;
@@ -446,9 +456,10 @@
token = scanner.nextToken();
} catch ( ScannerException e ){
if( e.getErrorCode() == ScannerException.ErrorCode.INVALID_ESCAPE_CHARACTER_SEQUENCE ){
- if( !lastTokenWasWild ) name += " ";
+ if( !encounteredWild && !lastTokenWasOperator ) name += " ";
name += "\\";
- lastTokenWasWild = true;
+ encounteredWild = true;
+ lastTokenWasOperator = false;
}
}
}
Index: search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java,v
retrieving revision 1.10
diff -u -r1.10 MethodDeclarationPattern.java
--- search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java 18 Sep 2003 15:15:08 -0000 1.10
+++ search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java 23 Sep 2003 21:04:16 -0000
@@ -57,7 +57,10 @@
searchFor = search;
}
-
+ public char [] getSimpleName(){
+ return simpleName;
+ }
+
public int matchLevel(ISourceElementCallbackDelegate node, LimitTo limit ) {
if( node instanceof IASTMethod ){
if( searchFor != METHOD || !canAccept( limit ) ){
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.107
diff -u -r1.107 ChangeLog
--- ChangeLog 23 Sep 2003 20:46:12 -0000 1.107
+++ ChangeLog 23 Sep 2003 21:04:01 -0000
@@ -1,3 +1,6 @@
+2003-09-23 Andrew Niefer
+ Added FunctionMethodPatternTests.testBug43498()
+
2003-09-23 Hoda Amer
Added CompleteParseASTTest.testBug43373()
Added QuickParseASTTests.testBug43371()
Index: search/org/eclipse/cdt/core/search/tests/FunctionMethodPatternTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/FunctionMethodPatternTests.java,v
retrieving revision 1.9
diff -u -r1.9 FunctionMethodPatternTests.java
--- search/org/eclipse/cdt/core/search/tests/FunctionMethodPatternTests.java 19 Sep 2003 16:00:44 -0000 1.9
+++ search/org/eclipse/cdt/core/search/tests/FunctionMethodPatternTests.java 23 Sep 2003 21:04:01 -0000
@@ -140,4 +140,27 @@
matches = resultCollector.getSearchResults();
assertEquals( matches.size(), 3 ); //3 in classDecl.cpp
}
+
+ public void testBug43498(){
+ ICSearchPattern pattern = SearchEngine.createSearchPattern( "operator ?elete", METHOD, DECLARATIONS, true );
+
+ assertTrue( pattern instanceof MethodDeclarationPattern );
+ MethodDeclarationPattern methodPattern = (MethodDeclarationPattern) pattern;
+
+ 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 );
+ 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 );
+ assertTrue( pattern instanceof MethodDeclarationPattern );
+ methodPattern = (MethodDeclarationPattern) pattern;
+
+ string = new char[] {'w','o','r','d','?','w','o','r','d'};
+ assertTrue( CharOperation.equals( string, methodPattern.getSimpleName() ) );
+ }
}