Parser updates: Added IToken.getLineNumber() to facilitate adding line numbers to AST. Added line number support into IASTOffsetableElement. Updated all implementations to use this. Updated Parser and IASTFactory to populate IASTOffsetableElement with the values retrieved from IToken. Removed IScanner.getLineNumberForOffset().
Model updates: Updated CModelBuilder to access line number information from IASTOffsetableElement.
org.eclipse.cdt.core.tests
Updated ParserSymbolTableTest to accommodate new constructors for COMPLETE_PARSE ASTNodes (line # info). Updated CModelElementsTest to enable testing for line numbers. Removed CModelElementsFailedTests.testBug36379() as it is redundant due to CModelElementTests.testCModelElements() is complete. Removed CModelElementsFailedTests from AutomatedIntegrationSuite as it is empty.
- assert project create/deletion failure with detailed messages
- use common (were possible) project create/deletion methods in CProjectHelper.
- fixed problem with dep test when generating code the file was never closed causing project deletion to fail on win32
This patch implements an iterator on all the contents of IContainerSymbol.
This is a first step to an iterator on the IAST nodes.
Core:
Created IExtensibleSymbol, which is a new base class for the symbol interfaces
Created IUsingDirectiveSymbol and UsingDirectiveSymbol
Modified ASTUsingDirective to use IUsingDirectiveSymbol
Modified CompleteParseASTFactory.createUsingDirective
Added IContainerSymbol.getContentsIterator()
Implemented getContentsIterator in ContainerSymbol
Core.tests:
Modified CompleteParseASTTest.testUsingClauses
Added ParserSymbolTableTest.testIterator_1 & testIterator_2
For normal lookups in the symbol table, a HashMap is faster than the tree
map, but for prefix lookups the TreeMap is faster. So we are now using
the HashMap for normal parses, and we use the TreeMap in the parse mode
used by content assist.
Note that with these changes the results returned by the IASTNode.lookup
function used by content assist are now in predictable order: they are
first sorted in the order of the scopes visited during the lookup and then
they are sorted alphabetically
Core:
Modified symbol table constructor to take a ParseMode as a parameter.
Modified symbol table to use a TreeMap instead of HashMap when ParseMode is COMPLETION_PARSE.
Modified ASTNode.lookup to throw ASTNotImplementedException if called when ParseMode is not CONTEXTUAL_PARSE.
Core.tests:
Moved testBug48307_FriendFunction_1 & testBug48307_FriendFunction_2 to ContextualParseTest.
Updated ContextualParseTest now that the order of prefix lookup results is predictable.
UI:
Updated CompletionEngine to catch ASTNotImplementedException from IASTNode.lookup.
====================
Renamed IASTNode.LookupResult IASTNode.ILookupResult.
Introduced new ParseError exception for contextual parse() methods.
Renamed ParserFactoryException ParserFactoryError.
Replaced ParserNotImplementedException with a variant of ParseError.
Updated IScanner & IParser to not reference OffsetLimitReachedException explicitly.
Renamed ParserMode.CONTEXTUAL_PARSE to COMPLETION_PARSE.
Cleaned up IMacroDescriptor and made Scanner definitions table consistent.
Added IScanner.getDefinitions() to return the entire Map of definitions to a client.
Removed most of the warnings from parser source directory.
Removed the unused SyntaxErrorException.
Provided partial fix for Bug 44370 IASTMacro requires more information for clients.
org.eclipse.cdt.core.tests
==========================
Updated references to LookupResult as it was renamed to ILookupResult.
Removed some warnings from parser tests.
Updated Scanner & QuickParseTests to accommodate new errors and signatures.
Added QuickParseASTTests.testBug44370().
org.eclipse.cdt.ui
==================
Updated references to LookupResult as it was renamed to ILookupResult.
Updated references of ParserFactoryException to ParserFactoryError.
Updated references of ParserNotImplementedException to ParseError.
Updated references of CONTEXTUAL_PARSE to COMPLETION_PARSE.
Fixed bug 48909 - Wrong completion node after a . or an ->
Fixed bug 49702 - Wrong completion kind sent in const/dest and code blocks
Added new CompletionKind - STATEMENT_START to indicate the beginning of a statement line.
TESTS
Updated ContextualParseTest to accommodate bugfixes 48909 & 49702.
UI
Updated CompletionEngine to handle IASTCompletionKind.CompletionKind.STATEMENT_START
Core:
Added IDerivableContainerSymbol.lookupFunctionForFriendship.
Modified IASTFactory.createMethod to take an ITokenDuple for the
method name.
Added LookupType.FORFRIENDSHIP and use it in LookupElement.
Modified CompleteParseASTFactory.createMethod to handle friend
functions.
Tests:
Added CompleteParseASTTest::testBug48307_FriendFunction_1
Added CompleteParseASTTest::testBug48307_FriendFunction_2
CORE
Support the content assist lookup kind LookupKind.THIS, where the lookup
looks in the class of the this pointer.
Fix a bug where the forward declared functions/methods appeared twice in
the content assist results .
TESTS
Added ContextualParseTest::testCompletionLookup_LookupKindTHIS
Renamed IToken::tELIPSE to IToken::tELLIPSIS
Partially fixed Bug 43110 : Parser support needed for functions with ellipses
TESTS
Added CompleteParseASTTest::testBug43110() and QuickParseASTTests::testBug43110().
Added preliminary keyword support into IASTCompletionNode::getKeywords().
Refactored parser to put keyword string literals in one utility class.
TESTS
Updated testBaseCase_SimpleDeclaration() for keyword assertions.
Added OffsetLimitReachedException and restructured Parser exceptions.
Continued support for code assist/selection search parser.
Ensured all source in parser/ have copyright notices.
TESTS
Expanded ContextualParseTest::testBaseCase().
Updated tests to deal with new signatures/exceptions.
UI
Updated CompletionEngine to deal with new signatures/exceptions in parser.
Fixed Bug 47234 : new ParserMode required for a better CModel
Updated IASTCompletionNode to include a scope as well as a context.
Begun parser updates to support code assist & selection search.
TESTS
Added ContextualParseTest.java and some test cases.
Removed some warnings.
Fixed Bug 39678 : Scanner doesn't support concatenation of different-type string literals (GCC)
Refactored ScannerContext to use constructors rather than initializers.
Refactored IScannerContext to use enumeration-esque kinds.
Added code assist/selection search support to Scanner.
TESTS
Removed some warnings.
Moved testBug39678() from ASTFailedTests to QuickParseASTTests.
This patch changes the handling of ambiguities during prefix lookup.
It also addresses problems in the symbol table to do with qualified
lookup. Fixing these revealed problems caused by the
CompleteParseASTFactory not always using the correct lookup functions. So
the factory has been modified to call the appropriate lookups.
The following tests have been created:
FailedCompleteParseASTTest.testBug47926
CompleteParseASTTest.testQualifiedLookup
ParserSymbolTableTest.testPrefixLookup_Ambiguities
ParserSymbolTableTest.testQualifiedUnqualifiedLookup
FunctionMethodPatternTests.testLookupForDefinition
CompleteParseASTFactory should use the symbol table's elaboratedLookup
instead of qualifiedLookup when it encounters an elaborated type
specifier.
Core:
change createElaboratedTypeSpecifier to call
IContainerSymbol.elaboratedLookup
Core.tests
add CompleteParseASTTest.testBug47624
Core:
In prefix lookup, the lookup does not stop when a symbol is found, also abiguity resolution is modified.
Add IContainerSymbol.prefixLookup (signature subject to change)
Add ParserSymbolTable.LookupMode, an enum with 2 values: NORMAL, PREFIX
In prefix mode, the lookup does not stop when a symbol is found.
Tests:
ParserSymbolTableTest.testBug46882
ParserSymbolTableTest.testPrefixLookup_Unqualified
ParserSymbolTableTest.testPrefixLookup_Qualified
ParserSymbolTableTest.testPrefixLookup_Inheritance
- upgrade plugin.xml files
- use PDE containers
- apply Eclipse 3.0 porting items, in particular openEditor and gotoMarker
- remove TestWorkbenches from test plugins
Refactor the symbol table by splitting the ParserSymbolTable.Declaration
class in 4 classes and moving it to not be nested
Tests have been updated and tested on windows & Linux
Fixed Bug 44838 : exception when resolving parameter references in a constructor
Fixed Bug 46165 : fields referenced in constructor chains are not called back upon
Fixed Bug 45551 : Macro replacement in #include <file.h> directives
TESTS
Added CompleteParseASTTest::testBug44838().
Added CompleteParseASTTest::testBug46165().
Added ScannerTestCase::testBug45551().
Cleaned up the ParserFactory interface to check for validity of input arguments.
Moved NullSourceElementRequestor and ScannerInfo to public interface as requested.
Restructured code so that no Eclipse/CDT source outside the parser source directory is used.
Updated parser clients to use new ParserFactory (stand-alone parser work item).
UI & TESTS
Updated parser clients to use new ParserFactory (stand-alone parser work item).
Removed warnings from parser source tree.
Removed preliminary task tags support to clean up parser interfaces and implementation.
Added preliminary IProblem support to
UI
Updated parser clients to use new IProblem strategy.
TESTS
Updated parser clients to use new IProblem strategy.
core:
Fixed Bug 44925 : Search: Elaborated type specifier
Partially Fixed Bug 44510 : C/C++ Search gives wrong results
ui:
Fixed Bug 44337 : Disabling of "definition" not making sense in Search
dialog
Fixed Bug 44947 : Navigate from Outline: Enumeration type not
pre-populated
Fixed Bug 44948 : Navigate via Open Declarations: typedef decl not found
- Moved off all dependency calculations to the Indexer thread,
created a new UpdateDependency job
- Modified CSearchOperation to only lock the workspace when
tagging resources with markers.
Fixed Bug 39542 : Parser fails on 'struct' parameter types
Fixed Bug 39549 : Designated initializers are not supported (ANSI C99)
Fixed Bug 39551 : Complex and imaginary numbers are not supported (ANSI C99)
TESTS
Moved testBug39542() from ASTFailedTests to QuickParseASTTests.
Moved testBug39549() from ASTFailedTests to QuickParseASTTests.
Added testCDesignatedInitializers() to CompleteParseASTTests.
Moved testBug39551A() from ASTFailedTests to QuickParseASTTests.
Moved testBug39551B() from ASTFailedTests to QuickParseASTTests.
Added testCBool() to QuickParseASTTests.
Added testBug39551A(), testBug39551B() and testCBool to CompleteParseTests.
Fixed Bug 40007 : Parser reports success when it fails
Fixed Bug 44305 : Scanner/preprocessor fails on conditionals using hexidecimal
Fixed Bug 41935 : parser provides wrong name on namespace aliases
Fixed Bug 39525 : Parser fails on expressions that take address of overloaded operators
Fixed Bug 45287 : Scanner does not accept character sequence literals
Fixed Bug 36550 : Error recovery with unterminated string is weak
Fixed Bug 41063 : Remove unused K&R C support from ANSI Parser
Fixed Bug 39528 : Function try-blocks are not supported by the parser (ANSI C++)
Fixed Bug 39538 : Parser fails on explicit instantiation of templated operators
Fixed Bug 39536 : Parser fails on templated constructors/conversion operators
Refactored Scanner to make it easier to debug.
TESTS
Moved testBug40007() from ASTFailedTests to QuickParseASTTests.
Added QuickParseASTTests::testBug40759().
Added QuickParseASTTests::testBug44633().
Added ScannerTestCase::testBug44305().
Added QuickParseASTTests::testBug41935().
Moved testBug39525() from ASTFailedTests to QuickParseASTTests.
Added ScannerTestCase::testBug45287().
Moved testBug39528() from ASTFailedTests to QuickParseASTTests.
Moved testBug39538() from ASTFailedTests to QuickParseASTTests.
Added QuickParseASTTests::testBug39536().
Moved testBug39536A() from ASTFailedTests to QuickParseASTTests.
Moved testBug39536B() from ASTFailedTests to QuickParseASTTests.