diff options
author | Bogdan Gheorghe | 2004-08-11 20:05:35 +0000 |
---|---|---|
committer | Bogdan Gheorghe | 2004-08-11 20:05:35 +0000 |
commit | 4fd44238b9a7f360c715b7a944ed17f6a65e07dd (patch) | |
tree | 3cc9b086d420845856fe1655c2bff3756985b3cf | |
parent | 16258395c2c28f6140b1b490df9412793b537231 (diff) | |
download | org.eclipse.cdt-4fd44238b9a7f360c715b7a944ed17f6a65e07dd.tar.gz org.eclipse.cdt-4fd44238b9a7f360c715b7a944ed17f6a65e07dd.tar.xz org.eclipse.cdt-4fd44238b9a7f360c715b7a944ed17f6a65e07dd.zip |
Fix for Bug 59493: need to refine index query for open-type (2.0 Stream)
12 files changed, 509 insertions, 418 deletions
diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index e987b504d50..37c95a4b8d5 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,6 @@ +2004-08-11 Bogdan Gheorghe
+ Modified indexer test to work with new forward declaration encoding.
+
2004-08-03 Bogdan Gheorghe
Updated indexer and dependency tests to work for indexing standalone headers
diff --git a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java index 4519f15cbdc..18352cc1c5e 100644 --- a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java +++ b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java @@ -425,7 +425,7 @@ public class IndexManagerTests extends TestCase { IIndex ind = indexManager.getIndex(testProjectPath,true,true); assertTrue("Index exists for project",ind != null); - String [] typeRefEntryResultModel ={"EntryResult: word=typeRef/C/C/B/A, refs={ 1 }", "EntryResult: word=typeRef/C/ForwardA/A, refs={ 1 }", "EntryResult: word=typeRef/E/e1/B/A, refs={ 1 }", "EntryResult: word=typeRef/V/x/B/A, refs={ 1 }"}; + String [] typeRefEntryResultModel ={"EntryResult: word=typeRef/C/C/B/A, refs={ 1 }", "EntryResult: word=typeRef/E/e1/B/A, refs={ 1 }", "EntryResult: word=typeRef/G/ForwardA/A, refs={ 1 }", "EntryResult: word=typeRef/V/x/B/A, refs={ 1 }"}; IEntryResult[] typerefresults = ind.queryEntries(IIndexConstants.TYPE_REF); assertTrue("Entry exists",typerefresults != null); @@ -558,10 +558,10 @@ public class IndexManagerTests extends TestCase { assertTrue("Index exists for project",ind != null); //IEntryResult[] fwdDclResults = ind.queryEntries("typeDecl/C/ForwardA/A".toCharArray()); - IEntryResult[] fwdDclResults = ind.queryEntries("typeDecl/C/ForwardA/A".toCharArray()); + IEntryResult[] fwdDclResults = ind.queryEntries("typeDecl/G/ForwardA/A".toCharArray()); assertTrue("Entry exists",fwdDclResults != null); - String [] fwdDclModel = {"EntryResult: word=typeDecl/C/ForwardA/A, refs={ 1 }"}; + String [] fwdDclModel = {"EntryResult: word=typeDecl/G/ForwardA/A, refs={ 1 }"}; if (fwdDclResults.length != fwdDclModel.length) fail("Entry Result length different from model for forward declarations"); @@ -571,10 +571,10 @@ public class IndexManagerTests extends TestCase { assertEquals(fwdDclModel[i],fwdDclResults[i].toString()); } - IEntryResult[] fwdDclRefResults = ind.queryEntries("typeRef/C/ForwardA/A".toCharArray()); + IEntryResult[] fwdDclRefResults = ind.queryEntries("typeRef/G/ForwardA/A".toCharArray()); assertTrue("Entry exists", fwdDclRefResults!= null); - String [] fwdDclRefModel = {"EntryResult: word=typeRef/C/ForwardA/A, refs={ 1 }"}; + String [] fwdDclRefModel = {"EntryResult: word=typeRef/G/ForwardA/A, refs={ 1 }"}; if (fwdDclRefResults.length != fwdDclRefModel.length) fail("Entry Result length different from model for forward declarations refs"); diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index 0688f6eff76..cfa848230ed 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,3 +1,10 @@ +2004-08-11 Bogdan Gheorghe
+ Fix for Bug 59493: need to refine index query for open-type
+
+ * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java
+ * index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java
+ * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java
+
2004-08-03 Bogdan Gheorghe
Fix for Bug 60948: Indexer should pick up all headers in include path
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java index 51bd4e9d0fc..459d22d8c4f 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java @@ -51,6 +51,9 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe final static int TYPEDEF = 6; final static int DERIVED = 7; final static int FRIEND = 8; + final static int FWD_CLASS = 9; + final static int FWD_STRUCT = 10; + final static int FWD_UNION = 11; public static boolean VERBOSE = false; @@ -241,15 +244,15 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe public void addElaboratedForwardDeclaration(IASTElaboratedTypeSpecifier elaboratedType) { if (elaboratedType.getClassKind().equals(ASTClassKind.CLASS)) { - this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),CLASS, ICSearchConstants.DECLARATIONS)); + this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),FWD_CLASS, ICSearchConstants.DECLARATIONS)); } else if (elaboratedType.getClassKind().equals(ASTClassKind.STRUCT)) { - this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),STRUCT, ICSearchConstants.DECLARATIONS)); + this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),FWD_STRUCT, ICSearchConstants.DECLARATIONS)); } else if (elaboratedType.getClassKind().equals(ASTClassKind.UNION)) { - this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),UNION, ICSearchConstants.DECLARATIONS)); + this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),FWD_UNION, ICSearchConstants.DECLARATIONS)); } } @@ -336,6 +339,32 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe this.output.addRef(encodeTypeEntry(fullyQualifiedName,UNION,ICSearchConstants.REFERENCES)); } } + public void addForwardClassReference(IASTTypeSpecifier reference){ + char[][] fullyQualifiedName = null; + ASTClassKind classKind = null; + + if (reference instanceof IASTElaboratedTypeSpecifier){ + IASTElaboratedTypeSpecifier typeRef = (IASTElaboratedTypeSpecifier) reference; + fullyQualifiedName = typeRef.getFullyQualifiedNameCharArrays(); + classKind = typeRef.getClassKind(); + } + + if (classKind == null) + return; + + if (classKind.equals(ASTClassKind.CLASS)) + { + this.output.addRef(encodeTypeEntry(fullyQualifiedName,FWD_CLASS, ICSearchConstants.REFERENCES)); + } + else if (classKind.equals(ASTClassKind.STRUCT)) + { + this.output.addRef(encodeTypeEntry(fullyQualifiedName,FWD_STRUCT,ICSearchConstants.REFERENCES)); + } + else if (classKind.equals(ASTClassKind.UNION)) + { + this.output.addRef(encodeTypeEntry(fullyQualifiedName,FWD_UNION,ICSearchConstants.REFERENCES)); + } + } /** * Type entries are encoded as follow: 'typeDecl/' ('C' | 'S' | 'U' | 'E' ) '/' TypeName ['/' Qualifier]* */ @@ -391,6 +420,18 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe case(FRIEND): result[pos++]=FRIEND_SUFFIX; break; + + case(FWD_CLASS): + result[pos++]=FWD_CLASS_SUFFIX; + break; + + case (FWD_STRUCT): + result[pos++]=FWD_STRUCT_SUFFIX; + break; + + case (FWD_UNION): + result[pos++]=FWD_UNION_SUFFIX; + break; } result[pos++] = SEPARATOR; //Encode in the following manner @@ -509,6 +550,12 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe classType = DERIVED_SUFFIX; } else if ( searchFor == ICSearchConstants.FRIEND){ classType = FRIEND_SUFFIX; + } else if ( searchFor == ICSearchConstants.FWD_CLASS) { + classType = FWD_CLASS_SUFFIX; + } else if ( searchFor == ICSearchConstants.FWD_STRUCT) { + classType = FWD_STRUCT_SUFFIX; + } else if ( searchFor == ICSearchConstants.FWD_UNION) { + classType = FWD_UNION_SUFFIX; } else { //could be TYPE or CLASS_STRUCT, best we can do for these is the prefix return prefix; diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java index 9b175d51bfd..e76b9da5640 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java @@ -105,6 +105,9 @@ public interface IIndexConstants { char TYPEDEF_SUFFIX = 'T'; char DERIVED_SUFFIX = 'D'; char FRIEND_SUFFIX = 'F'; + char FWD_CLASS_SUFFIX = 'G'; + char FWD_STRUCT_SUFFIX = 'H'; + char FWD_UNION_SUFFIX = 'I'; char TYPE_SUFFIX = 0; char SEPARATOR= '/'; diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java index 06693d557f9..c56ba9d7045 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java @@ -364,8 +364,8 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo indexer.addClassReference((IASTClassSpecifier)reference.getReferencedElement()); else if (reference.getReferencedElement() instanceof IASTElaboratedTypeSpecifier) { - indexer.addClassReference((IASTTypeSpecifier) reference.getReferencedElement()); - } + indexer.addForwardClassReference((IASTTypeSpecifier) reference.getReferencedElement()); + } } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/search/ChangeLog b/core/org.eclipse.cdt.core/search/ChangeLog index 92d3a9bd9ad..df7c8d659b5 100644 --- a/core/org.eclipse.cdt.core/search/ChangeLog +++ b/core/org.eclipse.cdt.core/search/ChangeLog @@ -1,399 +1,408 @@ -2004-06-25 Bogdan Gheorghe - Indirect fix for Bug 65551: [Search] Search for Variable references should not include parameters - Instead of excluding parameter references from searches, added parm declarations to the index (for - both functions and methods) - - * search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java - * index/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java - -2004-06-25 Bogdan Gheorghe - Fix for 68550: [Indexer] Cannot restart indexer by touching .c/.cpp/.cc files - - * search/org/eclipse/cdt/internal/core/search/processing/JobManager.java - * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java - -2004-06-24 Bogdan Gheorghe - Fix for 66695: [Indexer] Manually add an include path to a file/folder - is ignored by indexer - - * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java - -2004-06-22 Alain Magloire - Part of PR 68246. - Close the inputstream to release resource handle - when we done with it, we can not rely on the GC to do it for us. - - * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java - -2004-06-21 Bogdan Gheorghe - Modified JobManager to change state from waiting to enabled on a job request. - -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 - -2004-05-26 Andrew Niefer - Modified search to use ASTUtil.getFunctionParameterTypes to get the strings to search for - functions with specific parameters. - -2004-05-21 Andrw Niefer - fix bug 63478 - -2004-05-21 Andrew Niefer - Indexer problems reporting: group problems under the indexer job in progress view - -2004-05-21 Andrew Niefer - bug 62731 - [Search] typedefs are appearing as union declarations - * search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java - -2004-05-21 Bogdan Gheorghe - bug 63320 - Search does not consider working copies - Added a check to turn off indexer timer thread, if number entered is <= 0 - -2004-05-18 Andrew Niefer - bug 62651 - indexer job hangs if project deleted from workspace - When we discard jobs, we must downtick the indexing job as well. - * search/org/eclipse/cdt/internal/core/search/processing/IndexingJob.java - * search/org/eclipse/cdt/internal/core/search/processing/JobManager.java - -2004-05-17 Bogdan Gheorghe - Added matching routine to IncludePattern - -2004-05-17 Andrew Niefer - bug 61044 - report search matches at the end of each compilation unit - -2004-05-14 Bogdan Gheorghe - bug 60491 - Added working copy filtering to search engine - From now on only relevent working copies are considered for search - If no index paths are found then search will return no results regardless of any working copies passed in - -2004-05-14 Andrew Niefer - bug 56411 - Added IndexingJob show that indexing shows up in the process view - - this allows for the index job to be cancelled, which pauses indexing until someone requests something - - if a request was waiting on the indexer and the indexer gets paused from a user canceling it, then the - request is forced immediate. - -2004-05-06 Bogdan Gheorghe - Added friend to ICSearchConstants - Created IMatchLocator to allow search users to pass in their own match locators - Modified CSearchPattern to create friend search pattern - Added Friend pattern - Modified MatchLocator to check for class specifiers upon class exit - -2004-04-19 Andrew Niefer - speed up BasicSearchMatch.compareTo and .hashCode by reducing number of string objects created. - -2004-04-12 Bogdan Gheorghe - Modified FieldDeclarationPattern to work with new Enumerator type, added - DerivedTypesPattern. - -2004-04-05 Andrew Niefer - fix bug 54169, TYPE includes enum & typedef, handle that in ClassDeclarationPattern.matchLevel - -2004-03-24 Bogdan Gheorghe - Modified BasicSearchMatch to keep track of what files contained the match in order - to create file links to support external file markers. - - Modified MatchLocator to pass in the referring file path to BasicSearchMatch if the - match has no resource attached to it (ie. the match is external). - - * search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java - * search/org/eclipse/cdt/core/search/BasicSearchMatch.java - * search/org/eclipse/cdt/core/search/ICSearchResultCollector.java - * search/org/eclipse/cdt/core/search/IMatch.java - * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java - - -2004-03-08 Bogdan Gheorghe - BasicSearchResultCollector patch from Chris Wiebe - adds setProgressMonitor method, - cleans up some of the CoreException warnings - -2004-02-16 Andrew Niefer - fixed a couple of warnings - moved OrPattern from org.eclipse.cdt.internal.core.search.matching to org.eclipse.cdt.core.search - changed SearchEngine.search & MatchLocator.locateMatches to throw InterruptedException when cancelled - updates calls to search to handle InterruptedException - -2004-02-13 Bogdan Gheorghe - - Added error handling to MatchLocator.locateMatches to handle possible - parser failures. - -2004-02-06 Bogdan Gheorghe - - - Modified CSearchPattern.scanforParameters. If no parameters are passed in - as part of a function/method search, void is assigned as a parameter type. - - - Modified MethodDeclarationPattern to check for void parameter types - -2004-02-05 Alain Magloire - PR 51221 - Reformat Patch from Bogdan base on Thomas Fletcher original patch - In a nutshell, it moves the search operation into a runnable which - can be passed to a progress dialog. - - * search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java - -2004-01-26 John Camelon - Updated clients to use new Scanner logging service. - -2003-10-23 Bogdan Gheorghe - - - Added AcceptMatchOperation to get around Bug 45324. The search - operation is no longer a WorkspaceModifyOperation (which used to - lock the workspace for the duration of search). Instead, we now - lock the workspace only when we tag the resources with markers. - - - Modified SearchEngine : we now receive a list of matches - from the search that we pass into the AcceptMatchOperation. - - - Modified MatchLocator to add matches to passed in list instead - of reporting them right away - - - Modified JobManager: -added in jobToIgnore parm to unblock dependency - jobs - - -2003-10-06 Bogdan Gheorghe - - added createCFileSearchScope() to SearchEngine.java to improve - code complete performance - -2003-10-01 Andrew Niefer - - fix bug 44026 by checking scope before reporting match in MatchLocator.report - -2003-10-01 Andrew Niefer - - fix BasicSearchMatch.equals() for bug43988 - -2003-09-30 Bogdan Gheorghe - - changed logging in JobManager to use new ICLogConstants - -2003-09-30 Andrew Niefer - -fix bug43862 - Cannot find macro delcarations using all occurences. - * modified CSearchPattern.createMacroPattern - -2003-09-29 Andrew Niefer - - fix bug 43062 outline is confused on operator methods containing spaces - - modify CSearchPattern.scanForNames to use same naming convention as TokenDuple.toString() - - modify MatchLocator.report to use IASTOffsetableNamedElement.getNameEndOffset() - -2003-09-29 Andrew Niefer - -bug42911 - Search: cannot find beyond use of data member - - fix NPE's in BasicSearchMatch.equals & hashCode - -2003-09-29 Andrew Niefer - -fix NPE if IScannerInfoProvider returns null IScannerInfo - -2003-09-25 Andrew Niefer - - bug43129 - Cannot search for definitions of global variables - - check definitions for variables, fields, enumerators and namespaces - - handle enter/exitLinkageSpecification - * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java - * search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java - -2003-09-25 Bogdan Gheorghe - - added SearchFor INCLUDE in ICSearchConstants - - added acceptIncludeDeclaration to IIndexSearchRequestor - - modified PathCollector to acceptIncludeDeclarations - - modified CSearchPattern to create an IncludePattern - - added IncludePattern.java - -2003-09-25 Andrew Niefer - - partial fix for 43664 Modify Matchlocator to not try and create a link if we have no - resource, instead just use the path - -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 - - modified SearchEngine.search to take an additional parameter "excludeLocalDeclarations" - -2003-09-15 Andrew Niefer - - modify CSearchPattern to handle escaping wildcards (bug43063) - - modify enterFunctionBody and enterMethodBody to fix bug42979 - - search for Parameter References - -2003-09-13 Andrew Niefer - -Searching for Typedefs: (bug42902) - - modified setElementInfo in BasicSearchResultCollector - - added TYPEDEF to ICSearchConstants - - modified CSearchPattern & ClassDeclarationPattern - - implemented acceptTypedef* in MatchLocator - - modified BasicSearchMatch to implement Comparable - -2003-09-11 Andrew Niefer - - Modified ICSearchResultCollector.createMatch to not take a parent parameter - - modified BasicSearchResultCollector to create the parent string from the fully qualified name of the node - - modified MatchLocator to keep track of most recent declaration for reporting purposes - - modified MatchLocator.report to use the most recent declaration - -2003-09-09 Andrew Niefer - pattern matching on function parameters: - - modified scanForParameters in CSearchPattern - - added getParamString in CSearchPattern - - modified matchLevel in MethodDeclarationPattern - - Enumeration references - - modified acceptEnumeratorReference in MatchLocator - -2003-09-05 Andrew Niefer - - fix searching for enumerators - -2003-09-03 Andrew Niefer - - added CLASS_STRUCT to the SearchFor constants - - Modified CSearchPattern to handle CLASS_STRUCT - -2003-08-26 Bogdan Gheorghe - - Added debug tracing statements to SearchEngine - - Modified scanForNames in CSearchPattern to treat append - a token after "~" to allow for destructors search - - Added scope checking to MatchLocator - - Added debug trace statements to MatchLocator - -2003-08-20 Bogdan Gheorghe - - Changed matching and reporting functions to handle nodes - of type IElaboratedTypeSpecifier - -2003-08-12 Bogdan Gheorghe - - Rolled field and variable search patterns into one pattern, in - order to allow for qualified var searches - -2003-08-11 Andrew Niefer - - Added Macro ICSearchConstant - - Added acceptMacro to IIndexSearchRequestor and PathCollector - - Added MacroDeclaration Pattern - - Rolled method and function patterns into one method pattern - - Added WorkingCopy support to search - -2003-08-08 Bogdan Gheorghe - - Added CreateSearchScope to create a search scope out of - CElements - - Filled out CSearchScope to enable: - - adding a project to scope, include referenced projects - - adding individual CElements to scope - -2003-08-08 Andrew Niefer - - add function parameter information to search results - -2003-08-06 Andrew Niefer - - Create OrPattern which matches for search if any of its constituent patterns matches - - modified MatchLocator to support the OrPattern - - searching for All occurences now uses the OrPattern - -2003-08-01 Andrew Niefer - - Modified BasicSearchResultCollector to only accept matches it has not already seen - - fixed bug in finding a resource when entering includes - -2003-07-29 Andrew Niefer - Refactoring Search result collection: - - Modified ICSearchResultCollector - - Modified IMatch - - Modified MatchLocator to reflect changes in ICSearchResultCollector - - Created BasicSearchMatch implements IMatch - - Created BasicSearchResultCollector implements ICSearchResultCollector - -2003-07-28 Andrew Niefer - - added abstract CSearchPattern.resetIndexInfo fix bug with searching with globally - qualified names - - fixed bug in CSearchPattern.matchQualifications to do with globally qualified names - - fixed bug in CSearchPattern.createFunctionPattern to do with parameter lists. - -2003-07-25 Bogdan Gheorghe - - Added refs to PathCollector - - Filled in feedIndexRequestor for the new search patterns - - Fixed the FunctionDeclarationPattern to work with no parms - -2003-07-24 Andrew Niefer - - Implemented decodeIndexEntry & matchIndexEntry for all patterns - - changed MatchLocator to use a COMPLETE_PARSE. - -2003-07-23 Andrew Niefer - -Changed ICSearchPattern.matchLevel to take a ISourceElementCallbackDelegate - -Changed ICSearchResultCollector.createMatch to take a ISourceElementCallbackDelegate - -first implementations of: - -CSearchPattern.createFunctionPattern - -CSearchPattern.createVariablePattern - -CSearchPattern.createMethodPattern - -preliminary matching for remaining patterns - -handling of remaining parser callbacks - -generating index Prefixes for the patterns - -2003-07-14 Andrew Niefer - -Modified SearchFor instances in ICSearchConstants to more closely match what we are searching for - -added IMatch interface, it represents matches found by the search engine, implementors can store - whatever information they like, see ICSearchResultCollector::createMatch - -added createMatch to the ICSearchResultCollector interface, the result collector is responsible for - implementing IMatch to store whatever data they want out of the AST nodes. - -added skeleton patterns: - search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java - search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java - search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java - search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java - search/org/eclipse/cdt/internal/core/search/matching/VariableDeclarationPattern.java - -added beginnings of CSearchPattern::create*Pattern functions - -modifications to MatchLocator to keep track of current scope - -added CSearchPattern::matchQualifications - -2003-07-10 Bogdan Gheorghe - Provided implementation for ICSearchScope.java, CSearchScope.java - - Hooked up new CWorkspaceScope, PathCollector, PatternSearchJob in SearchEngine.java - - Provided implementation for PatternSearchJob.java - PatternSearchJob is where the first part - of the search occurs - using an IndexSelector to filter the indexes, it gets the indexes from - the IndexManager and then uses the passed in pattern to find the index matched. Once it finds - an index match it adds the file path to the PathCollector. - - Modified CSearchPattern - added support to find index entries. - - Modified ClassDeclarationPattern - added support to decode, match and report - index entries. - - - Added: - * search/org/eclipse/cdt/internal/core/search/CWorkspaceScope.java - * search/org/eclipse/cdt/internal/core/search/IIndexSearchRequestor.java - * search/org/eclipse/cdt/internal/core/search/IndexSelector.java - * search/org/eclipse/cdt/internal/core/search/PathCollector.java - - Modified: - * search/org/eclipse/cdt/core/search/ICSearchScope.java - * search/org/eclipse/cdt/core/search/SearchEngine.java - * search/org/eclipse/cdt/internal/core/search/CSearchScope.java - * search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java - * search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java - * search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java - -2003-07-04 Andrew Niefer - Modified ICSearchConstants to use new nested classes SearchFor and LimitTo instead of int - for stronger type safety - - Updated MatchLocator to invoke parser to do actual search. - -2003-06-27 Andrew Niefer - Modified: - search/org.eclipse.cdt.core.search.matching/MatchLocator.java - - enter/exitInclusion - - enterClassSpecifier - search/org.eclipse.cdt.core.search.matching/CSearchPattern.java - - createClassPattern - - matchesName - search/org.eclipse.cdt.core.search.matching/ClassDeclarationPattern.java - - matchLevel - search/org.eclipse.cdt.core.search/ICSearchPattern.java - search/org.eclipse.cdt.core.search/ICSearchResultCollector.java - search/org.eclipse.cdt.core.search/SearchEngine.java - -2003-06-25 Bogdan Gheorghe - Modified: - * search/org/eclipse/cdt/core/search/ICSearchConstants.java - * search/org/eclipse/cdt/internal/core/search/Utils.java - - moved to index/org/eclipse/cdt/internal/core/search/Utils.java - * search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java - * search/org/eclipse/cdt/internal/core/search/processing/IJob.java +2004-08-11 Bogdan Gheorghe
+ Fix for Bug 59493: need to refine index query for open-type
+
+ * search/org/eclipse/cdt/internal/core/search/ICSearchConstants.java
+ * search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
+ * search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
+ * search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java
+ * search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java
+
+2004-06-25 Bogdan Gheorghe
+ Indirect fix for Bug 65551: [Search] Search for Variable references should not include parameters
+ Instead of excluding parameter references from searches, added parm declarations to the index (for
+ both functions and methods)
+
+ * search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
+ * index/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
+
+2004-06-25 Bogdan Gheorghe
+ Fix for 68550: [Indexer] Cannot restart indexer by touching .c/.cpp/.cc files
+
+ * search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
+ * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
+
+2004-06-24 Bogdan Gheorghe
+ Fix for 66695: [Indexer] Manually add an include path to a file/folder
+ is ignored by indexer
+
+ * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
+
+2004-06-22 Alain Magloire
+ Part of PR 68246.
+ Close the inputstream to release resource handle
+ when we done with it, we can not rely on the GC to do it for us.
+
+ * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
+
+2004-06-21 Bogdan Gheorghe
+ Modified JobManager to change state from waiting to enabled on a job request.
+
+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
+
+2004-05-26 Andrew Niefer
+ Modified search to use ASTUtil.getFunctionParameterTypes to get the strings to search for
+ functions with specific parameters.
+
+2004-05-21 Andrw Niefer
+ fix bug 63478
+
+2004-05-21 Andrew Niefer
+ Indexer problems reporting: group problems under the indexer job in progress view
+
+2004-05-21 Andrew Niefer
+ bug 62731 - [Search] typedefs are appearing as union declarations
+ * search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
+
+2004-05-21 Bogdan Gheorghe
+ bug 63320 - Search does not consider working copies
+ Added a check to turn off indexer timer thread, if number entered is <= 0
+
+2004-05-18 Andrew Niefer
+ bug 62651 - indexer job hangs if project deleted from workspace
+ When we discard jobs, we must downtick the indexing job as well.
+ * search/org/eclipse/cdt/internal/core/search/processing/IndexingJob.java
+ * search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
+
+2004-05-17 Bogdan Gheorghe
+ Added matching routine to IncludePattern
+
+2004-05-17 Andrew Niefer
+ bug 61044 - report search matches at the end of each compilation unit
+
+2004-05-14 Bogdan Gheorghe
+ bug 60491
+ Added working copy filtering to search engine
+ From now on only relevent working copies are considered for search
+ If no index paths are found then search will return no results regardless of any working copies passed in
+
+2004-05-14 Andrew Niefer
+ bug 56411 - Added IndexingJob show that indexing shows up in the process view
+ - this allows for the index job to be cancelled, which pauses indexing until someone requests something
+ - if a request was waiting on the indexer and the indexer gets paused from a user canceling it, then the
+ request is forced immediate.
+
+2004-05-06 Bogdan Gheorghe
+ Added friend to ICSearchConstants
+ Created IMatchLocator to allow search users to pass in their own match locators
+ Modified CSearchPattern to create friend search pattern
+ Added Friend pattern
+ Modified MatchLocator to check for class specifiers upon class exit
+
+2004-04-19 Andrew Niefer
+ speed up BasicSearchMatch.compareTo and .hashCode by reducing number of string objects created.
+
+2004-04-12 Bogdan Gheorghe
+ Modified FieldDeclarationPattern to work with new Enumerator type, added
+ DerivedTypesPattern.
+
+2004-04-05 Andrew Niefer
+ fix bug 54169, TYPE includes enum & typedef, handle that in ClassDeclarationPattern.matchLevel
+
+2004-03-24 Bogdan Gheorghe
+ Modified BasicSearchMatch to keep track of what files contained the match in order
+ to create file links to support external file markers.
+
+ Modified MatchLocator to pass in the referring file path to BasicSearchMatch if the
+ match has no resource attached to it (ie. the match is external).
+
+ * search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
+ * search/org/eclipse/cdt/core/search/BasicSearchMatch.java
+ * search/org/eclipse/cdt/core/search/ICSearchResultCollector.java
+ * search/org/eclipse/cdt/core/search/IMatch.java
+ * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
+
+
+2004-03-08 Bogdan Gheorghe
+ BasicSearchResultCollector patch from Chris Wiebe - adds setProgressMonitor method,
+ cleans up some of the CoreException warnings
+
+2004-02-16 Andrew Niefer
+ fixed a couple of warnings
+ moved OrPattern from org.eclipse.cdt.internal.core.search.matching to org.eclipse.cdt.core.search
+ changed SearchEngine.search & MatchLocator.locateMatches to throw InterruptedException when cancelled
+ updates calls to search to handle InterruptedException
+
+2004-02-13 Bogdan Gheorghe
+ - Added error handling to MatchLocator.locateMatches to handle possible
+ parser failures.
+
+2004-02-06 Bogdan Gheorghe
+
+ - Modified CSearchPattern.scanforParameters. If no parameters are passed in
+ as part of a function/method search, void is assigned as a parameter type.
+
+ - Modified MethodDeclarationPattern to check for void parameter types
+
+2004-02-05 Alain Magloire
+ PR 51221
+ Reformat Patch from Bogdan base on Thomas Fletcher original patch
+ In a nutshell, it moves the search operation into a runnable which
+ can be passed to a progress dialog.
+
+ * search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
+
+2004-01-26 John Camelon
+ Updated clients to use new Scanner logging service.
+
+2003-10-23 Bogdan Gheorghe
+
+ - Added AcceptMatchOperation to get around Bug 45324. The search
+ operation is no longer a WorkspaceModifyOperation (which used to
+ lock the workspace for the duration of search). Instead, we now
+ lock the workspace only when we tag the resources with markers.
+
+ - Modified SearchEngine : we now receive a list of matches
+ from the search that we pass into the AcceptMatchOperation.
+
+ - Modified MatchLocator to add matches to passed in list instead
+ of reporting them right away
+
+ - Modified JobManager: -added in jobToIgnore parm to unblock dependency
+ jobs
+
+
+2003-10-06 Bogdan Gheorghe
+ - added createCFileSearchScope() to SearchEngine.java to improve
+ code complete performance
+
+2003-10-01 Andrew Niefer
+ - fix bug 44026 by checking scope before reporting match in MatchLocator.report
+
+2003-10-01 Andrew Niefer
+ - fix BasicSearchMatch.equals() for bug43988
+
+2003-09-30 Bogdan Gheorghe
+ - changed logging in JobManager to use new ICLogConstants
+
+2003-09-30 Andrew Niefer
+ -fix bug43862 - Cannot find macro delcarations using all occurences.
+ * modified CSearchPattern.createMacroPattern
+
+2003-09-29 Andrew Niefer
+ - fix bug 43062 outline is confused on operator methods containing spaces
+ - modify CSearchPattern.scanForNames to use same naming convention as TokenDuple.toString()
+ - modify MatchLocator.report to use IASTOffsetableNamedElement.getNameEndOffset()
+
+2003-09-29 Andrew Niefer
+ -bug42911 - Search: cannot find beyond use of data member
+ - fix NPE's in BasicSearchMatch.equals & hashCode
+
+2003-09-29 Andrew Niefer
+ -fix NPE if IScannerInfoProvider returns null IScannerInfo
+
+2003-09-25 Andrew Niefer
+ - bug43129 - Cannot search for definitions of global variables
+ - check definitions for variables, fields, enumerators and namespaces
+ - handle enter/exitLinkageSpecification
+ * search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
+ * search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
+
+2003-09-25 Bogdan Gheorghe
+ - added SearchFor INCLUDE in ICSearchConstants
+ - added acceptIncludeDeclaration to IIndexSearchRequestor
+ - modified PathCollector to acceptIncludeDeclarations
+ - modified CSearchPattern to create an IncludePattern
+ - added IncludePattern.java
+
+2003-09-25 Andrew Niefer
+ - partial fix for 43664 Modify Matchlocator to not try and create a link if we have no
+ resource, instead just use the path
+
+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
+ - modified SearchEngine.search to take an additional parameter "excludeLocalDeclarations"
+
+2003-09-15 Andrew Niefer
+ - modify CSearchPattern to handle escaping wildcards (bug43063)
+ - modify enterFunctionBody and enterMethodBody to fix bug42979
+ - search for Parameter References
+
+2003-09-13 Andrew Niefer
+ -Searching for Typedefs: (bug42902)
+ - modified setElementInfo in BasicSearchResultCollector
+ - added TYPEDEF to ICSearchConstants
+ - modified CSearchPattern & ClassDeclarationPattern
+ - implemented acceptTypedef* in MatchLocator
+ - modified BasicSearchMatch to implement Comparable
+
+2003-09-11 Andrew Niefer
+ - Modified ICSearchResultCollector.createMatch to not take a parent parameter
+ - modified BasicSearchResultCollector to create the parent string from the fully qualified name of the node
+ - modified MatchLocator to keep track of most recent declaration for reporting purposes
+ - modified MatchLocator.report to use the most recent declaration
+
+2003-09-09 Andrew Niefer
+ pattern matching on function parameters:
+ - modified scanForParameters in CSearchPattern
+ - added getParamString in CSearchPattern
+ - modified matchLevel in MethodDeclarationPattern
+
+ Enumeration references
+ - modified acceptEnumeratorReference in MatchLocator
+
+2003-09-05 Andrew Niefer
+ - fix searching for enumerators
+
+2003-09-03 Andrew Niefer
+ - added CLASS_STRUCT to the SearchFor constants
+ - Modified CSearchPattern to handle CLASS_STRUCT
+
+2003-08-26 Bogdan Gheorghe
+ - Added debug tracing statements to SearchEngine
+ - Modified scanForNames in CSearchPattern to treat append
+ a token after "~" to allow for destructors search
+ - Added scope checking to MatchLocator
+ - Added debug trace statements to MatchLocator
+
+2003-08-20 Bogdan Gheorghe
+ - Changed matching and reporting functions to handle nodes
+ of type IElaboratedTypeSpecifier
+
+2003-08-12 Bogdan Gheorghe
+ - Rolled field and variable search patterns into one pattern, in
+ order to allow for qualified var searches
+
+2003-08-11 Andrew Niefer
+ - Added Macro ICSearchConstant
+ - Added acceptMacro to IIndexSearchRequestor and PathCollector
+ - Added MacroDeclaration Pattern
+ - Rolled method and function patterns into one method pattern
+ - Added WorkingCopy support to search
+
+2003-08-08 Bogdan Gheorghe
+ - Added CreateSearchScope to create a search scope out of
+ CElements
+ - Filled out CSearchScope to enable:
+ - adding a project to scope, include referenced projects
+ - adding individual CElements to scope
+
+2003-08-08 Andrew Niefer
+ - add function parameter information to search results
+
+2003-08-06 Andrew Niefer
+ - Create OrPattern which matches for search if any of its constituent patterns matches
+ - modified MatchLocator to support the OrPattern
+ - searching for All occurences now uses the OrPattern
+
+2003-08-01 Andrew Niefer
+ - Modified BasicSearchResultCollector to only accept matches it has not already seen
+ - fixed bug in finding a resource when entering includes
+
+2003-07-29 Andrew Niefer
+ Refactoring Search result collection:
+ - Modified ICSearchResultCollector
+ - Modified IMatch
+ - Modified MatchLocator to reflect changes in ICSearchResultCollector
+ - Created BasicSearchMatch implements IMatch
+ - Created BasicSearchResultCollector implements ICSearchResultCollector
+
+2003-07-28 Andrew Niefer
+ - added abstract CSearchPattern.resetIndexInfo fix bug with searching with globally
+ qualified names
+ - fixed bug in CSearchPattern.matchQualifications to do with globally qualified names
+ - fixed bug in CSearchPattern.createFunctionPattern to do with parameter lists.
+
+2003-07-25 Bogdan Gheorghe
+ - Added refs to PathCollector
+ - Filled in feedIndexRequestor for the new search patterns
+ - Fixed the FunctionDeclarationPattern to work with no parms
+
+2003-07-24 Andrew Niefer
+ - Implemented decodeIndexEntry & matchIndexEntry for all patterns
+ - changed MatchLocator to use a COMPLETE_PARSE.
+
+2003-07-23 Andrew Niefer
+ -Changed ICSearchPattern.matchLevel to take a ISourceElementCallbackDelegate
+ -Changed ICSearchResultCollector.createMatch to take a ISourceElementCallbackDelegate
+ -first implementations of:
+ -CSearchPattern.createFunctionPattern
+ -CSearchPattern.createVariablePattern
+ -CSearchPattern.createMethodPattern
+ -preliminary matching for remaining patterns
+ -handling of remaining parser callbacks
+ -generating index Prefixes for the patterns
+
+2003-07-14 Andrew Niefer
+ -Modified SearchFor instances in ICSearchConstants to more closely match what we are searching for
+ -added IMatch interface, it represents matches found by the search engine, implementors can store
+ whatever information they like, see ICSearchResultCollector::createMatch
+ -added createMatch to the ICSearchResultCollector interface, the result collector is responsible for
+ implementing IMatch to store whatever data they want out of the AST nodes.
+ -added skeleton patterns:
+ search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java
+ search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java
+ search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java
+ search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java
+ search/org/eclipse/cdt/internal/core/search/matching/VariableDeclarationPattern.java
+ -added beginnings of CSearchPattern::create*Pattern functions
+ -modifications to MatchLocator to keep track of current scope
+ -added CSearchPattern::matchQualifications
+
+2003-07-10 Bogdan Gheorghe
+ Provided implementation for ICSearchScope.java, CSearchScope.java
+
+ Hooked up new CWorkspaceScope, PathCollector, PatternSearchJob in SearchEngine.java
+
+ Provided implementation for PatternSearchJob.java - PatternSearchJob is where the first part
+ of the search occurs - using an IndexSelector to filter the indexes, it gets the indexes from
+ the IndexManager and then uses the passed in pattern to find the index matched. Once it finds
+ an index match it adds the file path to the PathCollector.
+
+ Modified CSearchPattern - added support to find index entries.
+
+ Modified ClassDeclarationPattern - added support to decode, match and report
+ index entries.
+
+
+ Added:
+ * search/org/eclipse/cdt/internal/core/search/CWorkspaceScope.java
+ * search/org/eclipse/cdt/internal/core/search/IIndexSearchRequestor.java
+ * search/org/eclipse/cdt/internal/core/search/IndexSelector.java
+ * search/org/eclipse/cdt/internal/core/search/PathCollector.java
+
+ Modified:
+ * search/org/eclipse/cdt/core/search/ICSearchScope.java
+ * search/org/eclipse/cdt/core/search/SearchEngine.java
+ * search/org/eclipse/cdt/internal/core/search/CSearchScope.java
+ * search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java
+ * search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
+ * search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
+
+2003-07-04 Andrew Niefer
+ Modified ICSearchConstants to use new nested classes SearchFor and LimitTo instead of int
+ for stronger type safety
+
+ Updated MatchLocator to invoke parser to do actual search.
+
+2003-06-27 Andrew Niefer
+ Modified:
+ search/org.eclipse.cdt.core.search.matching/MatchLocator.java
+ - enter/exitInclusion
+ - enterClassSpecifier
+ search/org.eclipse.cdt.core.search.matching/CSearchPattern.java
+ - createClassPattern
+ - matchesName
+ search/org.eclipse.cdt.core.search.matching/ClassDeclarationPattern.java
+ - matchLevel
+ search/org.eclipse.cdt.core.search/ICSearchPattern.java
+ search/org.eclipse.cdt.core.search/ICSearchResultCollector.java
+ search/org.eclipse.cdt.core.search/SearchEngine.java
+
+2003-06-25 Bogdan Gheorghe
+ Modified:
+ * search/org/eclipse/cdt/core/search/ICSearchConstants.java
+ * search/org/eclipse/cdt/internal/core/search/Utils.java
+ - moved to index/org/eclipse/cdt/internal/core/search/Utils.java
+ * search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
+ * search/org/eclipse/cdt/internal/core/search/processing/IJob.java
* search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
\ No newline at end of file diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java index 1fe7a46064a..7ea7302bae9 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java @@ -107,6 +107,12 @@ public interface ICSearchConstants { public static final SearchFor FRIEND = new SearchFor( 16 ); + public static final SearchFor FWD_CLASS = new SearchFor ( 17 ); + + public static final SearchFor FWD_STRUCT = new SearchFor ( 18 ); + + public static final SearchFor FWD_UNION = new SearchFor ( 19 ); + /* Nature of match */ /** diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java index dc801f1f3cf..46f4d8bfeb3 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java @@ -110,6 +110,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte CSearchPattern pattern = null; if( searchFor == TYPE || searchFor == CLASS || searchFor == STRUCT || + searchFor == FWD_CLASS || searchFor == FWD_STRUCT || searchFor == FWD_UNION || searchFor == ENUM || searchFor == UNION || searchFor == CLASS_STRUCT || searchFor == TYPEDEF ) { @@ -344,6 +345,11 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte return orPattern; } + boolean isForward = false; + if (searchFor == FWD_CLASS || searchFor == FWD_STRUCT || searchFor == FWD_UNION){ + isForward = true; + } + char [] patternArray = patternString.toCharArray(); IScanner scanner =null; @@ -393,7 +399,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte char[] name = (char [])list.removeLast(); char [][] qualifications = new char[0][]; - return new ClassDeclarationPattern( name, (char[][])list.toArray( qualifications ), searchFor, limitTo, matchMode, caseSensitive ); + return new ClassDeclarationPattern( name, (char[][])list.toArray( qualifications ), searchFor, limitTo, matchMode, caseSensitive, isForward ); } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java index 3538e945944..b696dba2946 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java @@ -42,9 +42,10 @@ public class ClassDeclarationPattern extends CSearchPattern { // super( matchMode, caseSensitive, DECLARATIONS ); // } - public ClassDeclarationPattern( char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive ){ + public ClassDeclarationPattern( char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive, boolean isForward ){ super( mode, caseSensitive, limit ); + this.isForward = isForward; simpleName = caseSensitive ? name : CharOperation.toLowerCase( name ); if( caseSensitive || containers == null ){ qualifications = containers; @@ -58,13 +59,13 @@ public class ClassDeclarationPattern extends CSearchPattern { this.searchFor = searchFor; - if( searchFor == CLASS ){ + if( searchFor == CLASS || searchFor == FWD_CLASS ){ classKind = ASTClassKind.CLASS; - } else if( searchFor == STRUCT ) { + } else if( searchFor == STRUCT || searchFor == FWD_STRUCT) { classKind = ASTClassKind.STRUCT; } else if ( searchFor == ENUM ) { classKind = ASTClassKind.ENUM; - } else if ( searchFor == UNION ) { + } else if ( searchFor == UNION || searchFor == FWD_UNION ) { classKind = ASTClassKind.UNION; } else { classKind = null; @@ -86,6 +87,11 @@ public class ClassDeclarationPattern extends CSearchPattern { if( ! canAccept( limit ) ) return IMPOSSIBLE_MATCH; + if ((node instanceof IASTElaboratedTypeSpecifier &&!isForward)|| + (node instanceof IASTClassSpecifier && isForward)){ + return IMPOSSIBLE_MATCH; + } + char[] nodeName = null; if (node instanceof IASTElaboratedTypeSpecifier) { @@ -145,6 +151,7 @@ public class ClassDeclarationPattern extends CSearchPattern { protected char[] decodedSimpleName; private char[][] decodedContainingTypes; protected char decodedType; + protected boolean isForward; public void feedIndexRequestor(IIndexSearchRequestor requestor, int detailLevel, int[] references, IndexInput input, ICSearchScope scope) throws IOException { @@ -213,15 +220,18 @@ public class ClassDeclarationPattern extends CSearchPattern { return false; } } else if( classKind == ASTClassKind.CLASS ) { - if( decodedType != CLASS_SUFFIX ){ + if( decodedType != CLASS_SUFFIX && + decodedType != FWD_CLASS_SUFFIX){ return false; } } else if ( classKind == ASTClassKind.STRUCT ) { - if( decodedType != STRUCT_SUFFIX ){ + if( decodedType != STRUCT_SUFFIX && + decodedType != FWD_STRUCT_SUFFIX){ return false; } } else if ( classKind == ASTClassKind.UNION ) { - if( decodedType != UNION_SUFFIX ){ + if( decodedType != UNION_SUFFIX && + decodedType != FWD_UNION_SUFFIX){ return false; } } else if ( classKind == ASTClassKind.ENUM ) { diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java index 69ca402e0c6..00997a2ce5c 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java @@ -42,7 +42,7 @@ public class DerivedTypesPattern extends ClassDeclarationPattern { * @param caseSensitive */ public DerivedTypesPattern(char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive) { - super(name, containers, searchFor, limit, mode, caseSensitive); + super(name, containers, searchFor, limit, mode, caseSensitive, false); } public char[] indexEntryPrefix() { diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java index 83ebc71881d..bf1255bd066 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java @@ -41,7 +41,7 @@ public class FriendPattern extends ClassDeclarationPattern { * @param caseSensitive */ public FriendPattern(char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive) { - super(name, containers, searchFor, limit, mode, caseSensitive); + super(name, containers, searchFor, limit, mode, caseSensitive, false); } public char[] indexEntryPrefix() { |