Fixed Bug 39556 : 'restrict' qualifier is not supported (ANSI C99)
Fixed Bug 43126 : ISourceElementRequestor.acceptParameterReference accesses internal class
Fixed Bug 43062 : Outline is confused on operator methods containing spaces
Cleaned up some warnings in the parser.
TESTS
Moved ASTFailedTests::testBug39556() to QuickParseASTTests.
Cleaned up some warnings in parser tests.
Core:
In completeParseASTFactory.getExpressionResultType()
- Added the handling of some more expression types.
See CompleteParseASTExpressionTest for details.
Tests:
- Added lots of test cases to CompleteParseASTExpressionTest
Fixed Bug 42985 : Search: Qualified function call is treated as a declaration
Fixed Bug 40419 : parser fails on heavily templated expressions
TESTS
Created QuickParseASTTests::testBug42985().
Moved LokiFailures::testBug40419() to QuickParseASTTests.
Deleted LokiFailures as it was empty.
This is my previous patch updated with a test and resubmitted.
It fixes some NPE's in function resolution if the parameter information is
bad.
It also tries to clarify conversion sequence ranking with comments and
constants.
Core:
- Solved the double reference problem
- solution to bugs #42822, #42823, & #42822B
Tests:
Moved three failed tests (bugs #42822, #42823, & #42822B)
from FailedCompleteParseASTExpressionTest to CompleteParseASTExpressionTest
CORE
-Added more IASTExpression.Kind handling to CompleteParseASTFactory.getExpressionResultType()
TESTS
-Seperated the Expression result type test in a new file : completeParseASTExpressionTests.
-Added more test cases for simple types.
-Added FailedCompleteParseASTExpressionTest for failed reference tests.
Updated ScannerException to be more precise and include more information.
Updated Parser to be more careful of how it handles particular Scanner errors in COMPLETE_PARSE mode.
TESTS
Updated ScannerTestCase to keep up to date wrt ScannerException updates.
- Hooked up the Indexer to the dependency tree. Everytime a header file
gets modified, the including source files get reindexed.
- Automated dependency calcuations - each time a file gets modified, its
tree gets updated.
- Added error logging via the PDE Error Log (Views->PDE Runtime->Error
Log) - the indexer reports unsuccesful index attempts and the preprocessor
reports unsuccesful inclusion resolution attempts
UI
- Changed the names on the search popup mens
Made scoping support more robust in CompleteParse mode.
Refactored ISourceElementRequestor (enter|exit)CodeBlock() to take IASTCodeScope rather than IASTScope.
Removed the now obsolete DOM.
Added enumerator references to ISourceElementRequestor.
TESTS
Added CompleteParseASTTest::testThrowStatement(), testScoping(), testEnumeratorReferences().
Removed LineNumberTest source as it is obsolete.
Core :
- Create ParserLanguage.java
- Modified ParserFactory functions to take ParserLanguage as parameter
- Modifier Parser, Scanner & ParserSymbolTable to use new ParserLanguage
class
- Update call to ParserFactory in Indexer, Search, CModelBuilder &
Dependency Tree
Core.tests:
- Updated calls to ParserFactory to specify which language to use
UI:
-CStructorCreator uses the parser, modified call to ParserFactory to
specify CPP language.
(this is the same behaviour as before)
Core :
Added references to variables with pointers in solution of bug#42453:Expression result types not computed
Tests:
Added tests to CompleteParseASTTest to test the expression result type for function calls that reference variables with pointers (bug#42453).
Continue to add support for parsing within function bodies.
Add workaround for 1.2 for inline function declaration-before-use chicken-and-egg.
TESTS
Added CompleteParseASTTest::testSimpleIfStatement(), testSimpleWhileStatement().
testSimpleSwitchStatement(), testSimpleDoStatement().
- Added references to variables in solution of bug#42453:Expression result types not computed
- Solution to bug#42560: Class Cast Exception during Method definition
First pass of parsing function bodies with X-Reference information.
Updated IASTFactory/ISourceElementRequestor to include IASTCodeScope
constructs, clients should keep this in mind and update their implementations.
TESTS
Updated ASTFailedTests::testBug39702() to fail more accurately.
Added testSimpleFunctionBody(), testSimpleForLoop() to CompleteParseASTTest.java.
Core:
- Changed the ASTExpression of the complete package to store the
whole ITokenDuple for the typeId instead of just the string.
- Changed the ASTExpression in both quick and complete packages and
deleted the "id" parameter.
- Added partial solution to bug #42453: Exception result types not computed.
Now they are computed for simple types only.
Tests:
Call to ASTExpression getTypeId() changed to getTypeIdString().
UI:
Solution to bug#42414 :Extraneous semi-colons in generated class methods
fix bug in PST that causes parse failure on > 2 constructors for a given
class
Modified ParserSymbolTableTest.testConstructors to test > 2 constructors
Added support to the parser symbol table for namespace aliases.
tests:
added ParserSymbolTableTest.testNamespaceAlias()
added ParserSymbolTableTest.testUsingNamespaceAlias()
- Added resolving references in a method's qualified name in Complete parse mode.
Example (.cpp file ):
The method "A::B::C::aMethod(){};" used to be an IASTFunction, with name = "A::B::C::aMethod".
Now is an IASTMethod, with name = "aMethod", and references to class A, class B and class C.
- Added the checking for "isConstructor" and "isDestructor" for an IASTMethod in complete parse mode.
Indexer
=======
- Changed file extensions to prevent header files from being indexed (they will be indexed via inclusion)
Search
=======
- Added scope checking to MatchLocator
- Modified CSearchPattern to allow for destructor searches
- Added debug tracing statements to SearchEngine
- Added debug tracing statements to MatchLocator
UI
==
- Converted CTags based OpenOnSelectionAction to OpenDeclarationsAction. For now, we do a search on all types with the selected name.
- Hooked up OpenDeclarationsAction to search engine
General
=======
- Modified start up code to set debug trace options (which are defined from the launcher). I've added the following trace components:
- dependency
- indexer
- indexmanager
- matchlocator
- model
- search
- parser
- Added trace debug statements to CModelBuilder
- Modified Util.java to make use of IDebugLogConstants
Fixed bug39526 - Parser doesn't handle initializers correctly.
Fixed bug41520 - FullParse : Constructor Initializer is mistaken as function prototype
TESTS
Moved testBug39526() from ASTFailedTests.java to QuickParseASTTests.java.
Moved testBug41520() from FullParseFailedTests.java to CompleteParseASTTest.java
Fixed Bug 39530 - More problems with initializers.
Fixed Bug 37424 - Crash when opening big files
Refactored pointerOperators & cvQualifiers to not throw backtracks in optional case.
Added tracing support to cdt.core plugin via .options file.
TESTS
Added QuickParseASTTests::testBug39530().
Core:
Modified the parser's newExpression() to send all its sub expressions to the newDescriptor and check on each expression to find references in the CompleteParserASTFactory.createExpression().
Core Tests:
Added testNewExpressions() to CompleteParseASTTest to test new expression's references.
This patch contains some minor UI changes and a big chunk of work to add
built-in symbols and includes search paths to a tool specification.
The UI change is a switch from dynamically resizing the property page when
an option category is selected from the list, but rather using a scrolled
edit area. Now, if the option set is larger than the viewable area, a
horizontal and/or vertical scrollbar is displayed.
In terms of built-ins, there is no UI support to change the values just
yet. That is coming, but I wanted to get the framework and some
definitions in place so that the indexer and scanner can start using them.
Added X-Reference support for ArrayModifiers and Exception Specifications.
Fixed Bug 41551 - HandleInclusion always throws ScannerException on local includes.
TESTS
Added CompleteParseASTTest::testArrayModExpression(), testPointerVariable() &
testExceptionSpecification().
Added constructor expression support for variables.
Added constructor chain x-reference support for methods.
TESTS
Added testBug41520() to FullParseFailedTests.java.
Added testConstructorChain() to CompleteParseASTTest.java
Added Expression x-reference support into Parser.
TESTS
Added testSimpleExpression(), testParameterExpressions() &&
testNestedNamespaceExpression() to CompleteParseASTTest.java.
In order to work through CExtensionPoint mechanism, I have to change the
existing extension point entries for the Managed and Standard builders to
the following (all future builders will have to conform to this as well):
<extension
id="ManagedBuildManager"
point="org.eclipse.cdt.core.ScannerInfoProvider">
<cextension>
<run
class="org.eclipse.cdt.core.build.managed.ManagedBuildManager">
</run>
</cextension>
</extension>
<extension
id="StandardBuildManager"
point="org.eclipse.cdt.core.ScannerInfoProvider">
<cextension>
<run
class="org.eclipse.cdt.core.build.standard.StandardBuildManager">
</run>
</cextension>
</extension>
As well, the ManagedBuildManager and StandardBuildManager must extend
AbstractCExtension.
The new project wizards for managed and standard projects have to be
modified to register the right class as the scanner info providers for the
project. The example below shows the managed project wizard code, but the
standard project wizard is similar.
try {
ICDescriptor desc =
CCorePlugin.getDefault().getCProjectDescription(project);
desc.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID);
desc.create(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID,
ManagedBuildManager.INTERFACE_IDENTITY);
} <snip>
Clients use a new method defined in CCorePlugin
public IScannerInfoProvider getScannerInfoProvider(IProject project) {
IScannerInfoProvider provider = null;
if (project != null) {
try {
ICDescriptor desc = (ICDescriptor)
getCProjectDescription(project);
ICExtensionReference[] extensions =
desc.get(BUILD_SCANNER_INFO_UNIQ_ID);
if (extensions.length > 0)
provider = (IScannerInfoProvider)
extensions[0].createExtension();
} catch (CoreException e) {
}
}
return provider;
}
to get the information provider as shown in the updated JUnit test code
below:
// Find the first IScannerInfoProvider that supplies build info for the
project
IScannerInfoProvider provider =
CCorePlugin.getDefault().getScannerInfoProvider(project);
assertNotNull(provider);
As is the case now, clients implement the IScannerInfoChangeListener
interface and pass themselves to the provider in a subscription message.
There is also a new method on the IScannerInfoProvider interface that
allows the client to get information immediately as shown below:
IScannerInfo currentSettings = provider.getScannerInformation(project);
The ManagedBuildManager::getScannerInfo(IResource) method will be
deprecated, then removed before the end of this release cycle.
Added Complete Parse support for ASM Definitions.
Added isVolatile() to abstract declarations.
Added Complte Parse support for elaborated types / forward declaration of classes.
Fixed some robustness issues.
TESTS
Cleaned up Junit parser-related tests so that failed tests are now expected failures w/defects associated with them.
Updated CompleteParseTests for forward declaration/elaborated types.
Added Search/ParseTestOnSearchFiles to AutomatedSuite.
Updated Search tests to workaround bug 41445.
Core:
- refactor symbol table function names to start with lower case letters
- added better constructor support :
- IDerivableContainerSymbol.addConstructor
- IDerivableContainerSymbol.lookupConstructor
- IDerivableContainerSymbol.getConstructors
- implicit user-defined conversion sequences now only use constructors not
marked explicit
- user-defined conversion sequences are now only applied at most once
(12.3-4 in spec)
- changed ParserSymbolTableException.r_Unspecified to r_InternalError
which is thrown on internal symbol table inconsistancies (likely from bugs
rather than semantic problems with the parsed code)
Core.tests:
- updated tests to reflect function name refactoring
- added ParserSymbolTableTest.testConstructors
Updated AST to better represent pointers to functions/methods.
Implemented typedef declaration/x-ref infrastructure.
TESTS
Updated QuickParseASTTests for pointer to function updates.
Updated CompleteParseASTTests for typedef work.