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() {