Patch for C++ Search to support searching for class declarations
Interface changes:
- modified search Interfaces :
- ICSearchConstants - changed SearchFor instantiations to more
closely match what we can search for.
- ICSearchPattern - added getLimitTo()
- ICSearchResultCollector - added createMatch(), which should
return an object implementing the new IMatch interface, these store the
any data needed to keep found matches.
These interfaces are still new and its too early for anyone other than
search and the indexer to be using them.
- added search interface IMatch.
Changes to core.search had to do with keeping track of the current scope
during the search, as well as other modifications for matching class
declarations, and the start of the patterns for matching other things.
Changes to ui.search had to do with creating IMatch objects to store the
information needed by the label provider to display icons and sort the
results.
Added support for long long and wide char literals.
Fix for PR 39349 : Scanner fails on long long literals.
Fix for PR 39544 : Scanner fails on wide char literals.
cdtproject file.
- Used to store the data that had been put in the
cdtbuild file for Standard Make projects.
- Cleaned up some of the exception handling in the
StandardBuildManager.
Filled out IASTMethod & IASTFunction & added implementations.
Updated IScanner, clients & implementations to use IScannerInfo.
Finished SimpleDeclaration porting to new architecture, only thing left is templates.
TESTS
Updated IScanner, clients & implementations to use IScannerInfo.
The change logs contain an overview of what has been done to implement a new interface between a build model (any build model)
and clients of the model that need to extract include search paths and defined symbols. For the most part, I have tried to leave the
old build system as unchanged as possible. For example, project properties like the make search path, and whether or not to continue
on build failures are still stored as persistent properties on the project through the CNature (ugh). The new information I have added
is managed by a new build manager on a per-project basis and is associated with a project as a session property. The information is
persisted in the 'cdtbuild' file introduced by the new managed build system.
cdt.core:
- Modified ICSearchConstants to use classes (SearchFor & LimitTo) instead of int for constants
- Modified MatchLocator to actually invoke the parser to do the search
cdt.core.tests:
- Added new source Folder search
- Added search/ClassDeclarationPatternTests::testMatchSimpleDeclaration
- Added search/ClassDeclarationPatternTests::testMatchNamespaceNestedDeclaration
- Added new resource folder search & containing file classDecl.cpp
- Added new failures package ord.eclipse.cdt.core.search.failedTests
- Added new failing test PatternsFailedTests::testBug39652
* Note that both the ClassDeclarationPatternTests and PatternsFailedTests must be run as Plugin Tests *
cdt.ui:
- Updated Search classes to reflect changes to ICSearchConstants.
Further restructuring of Parser for ISourceElementRequestor.
Added interfaces/implementation for Simple Declarations.
Cleaned up DOM's representation of Constructor chains.
TESTS
Added DOMTests::testAssignmentExpression()
Added PreprocessorConditionalTest to ParserTestSuite.