diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 852a4e9576e..4c555791597 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,6 @@ +2003-12-09 John Camelon + Added ContextualParseTest.java and some test cases. + 2003-12-04 John Camelon Removed some warnings. Moved testBug39678() from ASTFailedTests to QuickParseASTTests. diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ContextualParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ContextualParseTest.java new file mode 100644 index 00000000000..c78b401da1c --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ContextualParseTest.java @@ -0,0 +1,69 @@ +/* + * Created on Dec 8, 2003 + * + * To change the template for this generated file go to Window - Preferences - + * Java - Code Generation - Code and Comments + */ +package org.eclipse.cdt.core.parser.tests; + +import java.io.StringReader; + +import junit.framework.TestCase; + +import org.eclipse.cdt.core.parser.IParser; +import org.eclipse.cdt.core.parser.IParserLogService; +import org.eclipse.cdt.core.parser.ISourceElementRequestor; +import org.eclipse.cdt.core.parser.NullSourceElementRequestor; +import org.eclipse.cdt.core.parser.ParserFactory; +import org.eclipse.cdt.core.parser.ParserLanguage; +import org.eclipse.cdt.core.parser.ParserMode; +import org.eclipse.cdt.core.parser.ScannerInfo; +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; +import org.eclipse.cdt.internal.core.parser.ParserLogService; + +/** + * @author jcamelon + * + * To change the template for this generated type comment go to Window - + * Preferences - Java - Code Generation - Code and Comments + */ +public class ContextualParseTest extends TestCase { + + public ContextualParseTest(String name) { + super(name); + } + + protected IASTCompletionNode parse(String code, int offset) + throws Exception { + ISourceElementRequestor requestor = new NullSourceElementRequestor(); + IParserLogService log = new ParserLogService(); + + IParser parser = null; + + parser = + ParserFactory.createParser( + ParserFactory.createScanner( + new StringReader(code), + "completion-test", + new ScannerInfo(), + ParserMode.CONTEXTUAL_PARSE, + ParserLanguage.CPP, + requestor, + log), + requestor, + ParserMode.CONTEXTUAL_PARSE, + ParserLanguage.CPP, + log); + + return parser.parse( offset ); + + } + + public void testBaseCase() throws Exception + { + IASTCompletionNode node = parse( "class ABC { }; AB\n\n", 17); + assertNotNull( node ); + assertNotNull( node.getCompletionPrefix() ); + assertEquals( node.getCompletionPrefix(), "AB"); + } +} diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java index c8b06aec365..2c5d9b82ce7 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java @@ -31,6 +31,7 @@ public class ParserTestSuite extends TestCase { suite.addTestSuite(QuickParseASTTests.class); suite.addTestSuite(ParserSymbolTableTest.class); suite.addTestSuite(CModelElementsTests.class); +// suite.addTestSuite(ContextualParseTest.class); // suite.addTestSuite(MacroTests.class); suite.addTestSuite( PreprocessorTest.class ); suite.addTestSuite( PreprocessorConditionalTest.class ); diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog-parser similarity index 97% rename from core/org.eclipse.cdt.core/parser/ChangeLog rename to core/org.eclipse.cdt.core/parser/ChangeLog-parser index 00840428790..9b5476fcaba 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog-parser @@ -1,854 +1,859 @@ -2003-12-05 John Camelon - Broke the Parser up into separate classes per ParserMode. - -2003-12-04 John Camelon - 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. - -2003-12-03 Andrew Niefer - - Symbol table - modify prefix lookup handling of ambiguities - - fix up qualified lookup - - add IContainerSymbol.lookupMethodForDefinition - - Parser - modify Complete parse AST factory to use the correct lookups in different situations - - Created a LookupType enum to specify what kind of lookup is needed (Qualified, unqualified, for definition) - - -2003-11-27 Andrew Niefer - fix bug 47264: Parse fails when using struct s foo; and int s; in function bodies - -2003-11-18 Andrew Niefer - Refactor PST: Split Declaration into 4 classes : ContainerSymbol, DerivableContainerSymbol, ParameterizedContainerSymbol, - SpecializedSymbol. Move these along with BasicSymbol & TemplateInstance to no longer be nested in ParserSymbolTable. - -2003-11-13 Hoda Amer - Changed the getExpressionResultType() in the complete factory to return - an object of type ExpressionResult. - Solved bug#44342: Failure to dereference function calls after a . or an -> - -2003-11-07 John Camelon - Fixed Bug 39554 : _Pragma directive is not supported (ANSI C99) - -2003-11-06 John Camelon - Removed one last remainder of core.model.Util in parser to unbreak 2.0 build. - -2003-11-05 John Camelon - 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 directives - -2003-11-05 John Camelon - 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). - -2003-11-05 John Camelon - Removed warnings from parser source tree. - Removed preliminary task tags support to clean up parser interfaces and implementation. - Added preliminary IProblem support to - -2003-11-03 John Camelon - Added in preliminary interface for code completion mode. - -2003-10-28 Andrew Niefer - Fixed Bug 44925 : Search: Elaborated type specifier - Patially fixed Bug 44510 : C/C++ Search gives wrong results - -2003-10-24 John Camelon - Fixed Bug 45476 : preprocessor macro "defined" not handled correctly - Fixed Bug 45477 : macro redefines prevent further parsing - -2003-10-24 John Camelon - 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) - -2003-10-21 John Camelon - 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. - -2003-10-01 John Camelon - Fixed Bug 43987 : Search results: Declaration of class not highlighted when selected - Fixed Bug 43997 : Search results: selection includes preceding whitespace - Fixed Bug 44034 : Scanner failure on #undef - -2003-10-01 Andrew Niefer - bug43951 - search on ctor declarations returns definition too. - PST changes: - - modify lookupConstructor to copy the constructor list before resolving on it - - modify checkUserDefinedConversionSequence the same way - - modify isValidFunctionOverload to check for forward declarations - -2003-10-01 Bogdan Gheorghe - Modified CDT log dump in Parser.fetchToken to include error message - -2003-10-01 Andrew Niefer - bug43450 - Scanner needs to handle include paths that contain quotes - -2003-09-30 Bogdan Gheorghe - Added CDT log dump in Parser.fetchToken to catch HandleInclusion failures - -2003-09-30 John Camelon - Fixed Bug 43503 : Search:f_SD_01 cannot be found in ManyClasses20 Project - Fixed Bug 43680 : Fix Parser Error Handling - -2003-09-30 Hoda Amer - -Solution to [Bug 43053] require reference cleanup for expressions - Added purgeReferences() at the end of ASTExpression::acceptElement() - -2003-09-30 Andrew Niefer - PST changes for bug 43503 - parser needs to know the different between ambiguous functions - and no functions when no parameter information is provided - - throw r_UnableToResolveFunction if we have more than 1 function and no parameter info was given - - handle this case in addUsingDeclaration. - * note that r_UnableToResolveFunction doesn't necessarily mean ambiguous if we had enough information - -2003-09-29 Hoda Amer - Solution to bug#43679 : Exceptions in indexer - -2003-09-29 Andrew Niefer - fixed bug 43834 : Empty Parameter list and parameter list taking one void do not match - -2003-09-29 John Camelon - Continued work on Bug 43062 : Outline is confused on operator methods containing spaces - Partial fix for Bug 43680 : Fix Parser Error Handling - -2003-09-26 John Camelon - Fixed Bug 43644 : 6 triangle icons appearing in outline viewer when typing an error - Fixed Bug 43062 : Outline is confused on operator methods containing spaces - Fixed Bug 39531 : Problems with type conversion operators - -2003-09-25 Hoda Amer - - Last part of solution to bug#42453: Expression result types not computed - Added the handling of POSTFIX_TYPENAME_IDENTIFIER - Completed bug#43221: POSTFIX_TYPENAME_IDENTIFIER not implemented - - Solution to bug#43644 : 6 triangle icons appearing in outline viewer when typing ... - -2003-09-24 Hoda Amer - Partial solution to bug#42453: Expression result types not computed - Added the handling of the NEW_TYPEID, CASTEXPRESSION, POSTFIX_DYNAMIC_CAST, - POSTFIX_REINTERPRET_CAST, POSTFIX_STATIC_CAST, and POSTFIX_CONST_CAST - -2003-09-25 John Camelon - Partial fix for Bug 43221 : POSTFIX_TYPENAME_IDENTIFIER not implemented - -2003-09-24 John Camelon - Fixed Bug 43106 : Symbol Table support needed to resolve types - Fixed Bug 43375 : isExtern not returning true for extern declarations - -2003-09-23 John Camelon - Fixed Bug 43084 : need to restructure TypeId to allow dynamic_cast<> type expression references. - Fixed Bug 39504 : sizeof-expressions are not handled properly - -2003-09-23 Hoda Amer - Solution to bug#43373: No reference to static member in definition - Solution to bug#43371: constructor incorrectly marked private - -2003-09-18 Andrew Niefer - - modified Symbol table interfaces to use Lists & Maps instead of LinkedList and HashMap - - fixed warnings in ParserSymbolTable - - fixed bug43106 - Symbol Table support needed to resolve types - - fixed bug43156 - require ability to add implicit inheritance copy constructor - - fixed bug43159 - TypeInfo.equals() not working properly - - fixed bug43238 - Postfix_Subscript expressions confuse function resolution - -2003-09-16 Andrew Niefer - - added setThrowExceptionOnBadCharacterRead to IScanner to help with wildcard bug43063 - -2003-09-17 Hoda Amer - In completeParseASTFactory.getExpressionResultType(): Added the support - for expression types: PM_DOTSTAR, PM_ARROWSTAR, CONDITIONALEXPRESSION - -2003-09-16 John Camelon - Implement CompleteParse IASTFunction::previouslyDeclared(). - -2003-09-16 Hoda Amer - In completeParseASTFactory.getExpressionResultType(): Added the support - for expression type PRIMARY_THIS. - In createMethod(): changed the scope of a method definition to point to - the parent class. - -2003-09-15 John Camelon - 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. - -2003-09-15 Andrew Niefer - bug43106 - added getConditionalOperand to ParserSymbolTable - -2003-09-15 John Camelon - Partially fixed Bug 42979 : Cannot search for operator overloaders - -2003-09-12 Hoda Amer - In completeParseASTFactory.getExpressionResultType() - - Added the handling of some more expression types. - See CompleteParseASTExpressionTest for details. - -2003-09-12 John Camelon - Fixed Bug 42985 : Search: Qualified function call is treated as a declaration - Fixed Bug 40419 : parser fails on heavily templated expressions - -2003-09-12 John Camelon - Fixed Bug 43013 : IASTParameterDeclaration does not derive from IASTOffsetableNamedElement - -2003-09-12 Andrew Niefer - Fixed some NPEs in ParserSymbolTable.getFlatTypeInfo - Added some comments and created some constants to help clarify ranking of conversion sequences - -2003-09-11 John Camelon - Fixed Bug 42840 : Search: Cannot find things after double declarations - Fixed Bug 42798 : Selected #include off by 1 char - Fixed Bug 42872 : dynamic cast not parsed properly - Partially fixed Bug 39504 : sizeof-expressions are not handled properly - Updated SourceElementRequestor callbacks to include IASTParameterReference callbacks. - -2003-09-09 Hoda Amer - - Solved the double reference problem - - solution to bugs #42822, #42823, & #42822B - -2003-09-09 John Camelon - 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. - -2003-09-08 Bogdan Gheorghe - Added ScannerExceptions in Preprocessor.java to PDE Error - Log - -2003-09-09 Hoda Amer - Added more IASTExpression.Kind handling to CompleteParseASTFactory.getExpressionResultType() - -2003-09-08 John Camelon - 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. - -2003-09-08 Andrew Niefer - - Created ParserLanguage.java - - Updated Factories to take language as parameter when create scanner & parser - - Updated Parser, Scanner & ParserSymbolTable to take language in their constructor - -2003-09-05 Hoda Amer - - Added references to variables with pointers in solution - of bug#42453:Expression result types not computed - - -2003-09-05 John Camelon - Continue to add support for parsing within function bodies. - Add workaround for 1.2 for inline function declaration-before-use chicken-and-egg. - -2003-09-05 John Camelon - Fixed NPE on nested declarations in code blocks. - -2003-09-04 John Camelon - 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. - -2003-09-04 Andrew Niefer - Fix bug42541 - Anonymous structures cause NPE in full parse - -2003-09-03 Andrew Niefer - fix bug in PST that prevents > 2 constructors - -2003-09-03 John Camelon - Fixed bug41445 - QualifiedLookup succeeds where it should fail. - -2003-09-02 Andrew Niefer - bug41935 - Modifications to PST to allow for namespace aliases - -2003-08-28 John Camelon - Fixed bug39535 - Parser fails on namesapce aliases - -2003-08-26 Bogdan Gheorghe - Added parser constant to all debugLog tracing statements. - -2003-08-25 John Camelon - Fixed bug39526 - Parser doesn't handle initializers correctly. - Fixed bug41520 - FullParse : Constructor Initializer is mistaken as function prototype - -2003-08-25 John Camelon - 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. - -2003-08-14 John Camelon - Removed warnings from SymbolTable & QuickParseCallback (removing implicit accessor generation). - Made IASTElaboratedTypeSpecifier derive from IASTOffsetableNamedElement (as it should). - -2003-08-14 John Camelon - Added X-Reference support for ArrayModifiers and Exception Specifications. - Fixed Bug 41551 - HandleInclusion always throws ScannerException on local includes. - -2003-08-13 John Camelon - Added constructor expression support for variables. - Added constructor chain x-reference support for methods. - -2003-08-13 John Camelon - Added Expression x-reference support into Parser. - -2003-08-12 John Camelon - Added X-Ref/Elaborated type support w/element requestor callbacks. - -2003-08-11 John Camelon - 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. - -2003-08-05 Andrew Niefer - - Refactor symbol table functions to start with lower case letters - - Added better constructor support : - IDerivableContainerSymbol.addConstructor - IDerivableContainerSymbol.lookupConstructor - IDerivableContainerSymbol.getConstructors - - Changed ParserSymbolTableException.r_Unspecified to r_InternalError - - 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) - -2003-07-31 Andrew Niefer - Added better support to the parser symbol table for forward declarations - -2003-07-31 Victor Mozgin - Fixed PR 39540 : Parser fails on const qualifier after class specifier. - -2003-07-30 Victor Mozgin - Fixed PR 39532 : Parser fails on fully-qualified class names. - -2003-07-29 John Camelon - Updated AST to better represent pointers to functions/methods. - Implemented typedef declaration/x-ref infrastructure. - -2003-07-29 Victor Mozgin - Fixed PR 39546 : Parser fails on 'signed' casts. - -2003-07-28 John Camelon - Fixed Bug 40842 - Parser: NPE while parsing class declaration in full parse mode - Fixed Bug 40843 - Parser: failParse doesn't set parsePassed = false on EOF. - Fixed Miscellaneous overrides issues involving parameters & functions. - -2003-07-28 John Camelon - Fixed Bug 40730 : Parser is not searching the include path for #include"" - -2003-07-28 Victor Mozgin - Fixed PR 39537 : Parser fails if template parameters contain '>' or '<' characters. - -2003-07-25 Victor Mozgin - Fixed PR 39553 : Macros are not expanded in #include statements. - -2003-07-24 John Camelon - Added COMPLETE_PARSE support for Method and Field declarations and cross-references. - Fixed some small ParserSymbolTable bugs. - Added support for linkage specification under COMPLETE_PARSE. - -2003-07-24 John Camelon - Added CompleteParse - UsingDirective & UsingDeclarations w/namespace/class/field variable references. - Added CompleteParse support for enumeration specifiers and references in variables & fields. - Stubbed out other Scopes/Declarations for COMPLETE_PARSE mode to allow indexer team to switch over ASAP. - -2003-07-22 John Camelon - Added in preliminary support for Field/Variable w/cross references on their types. - -2003-07-21 John Camelon - Addded in support for BaseSpecifier & class/namespace reference callbacks upon those. - -2003-07-21 John Camelon - Fleshed out basic declarations for FullParse AST. - Fixed Bug 40554 - Fields coming back as Vars - Fixed Bug 40555 - Methods come back as Functions - -2003-07-18 John Camelon - Added ISourceElementCallbackDelegate interface for AST constructs to allow the Parser to delegate callback's to the nodes themselves. - Got rid of ParserMode.STRUCTURAL_PARSE for the time being. - Removed org.eclipse.cdt.internal.core.parser.ast.full. - Created org.eclipse.cdt.internal.core.parser.ast.complete. - Updated ParserFactory.createScanner() to force the user to provide a callback and a ParserMode. - Introduced ASTSemanticException for COMPLETE_PARSE mode. - Fleshed out preliminary IASTReference interfaces and added callbacks to ISourceElementRequestor. - Removed acceptElaboratedTypeSpecifier() from ISourceElementRequestor. - -2003-07-18 John Camelon - Removed DeclaratorDuple as it was obsolete. - Fixed offsets in quickParse's IASTTypedefDeclaration implementation. - Fixed Bug 40436 - Fully Qualified Names Needed (for Indexer/Search features) - -2003-07-17 John Camelon - Removed IParserCallback. - Partially converted DOM to ISourceElementRequestor (requires refactoring of CModelBuilder & StuctureComparator modules in near future). - Completely finished ISourceElementRequestor/IASTFactory work for QuickParse mode. - Added pointer to methods/functions into AST callback structure. - Restructured AST class hierarchy. - Removed the old IParserCallback return Objects from every Parser method. - -2003-07-17 Victor Mozgin - Added support for digraphs and trigraphs. - Added support for hex floating point literals. - Fixed stack overflow problem with string literals concatenation. - Fixed problem with token pasting in macros. - This solves PR 39523, 39550, 39552. - -2003-07-15 Victor Mozgin - Fixed PR 39349 : Scanner fails on long long literals. - Fixed PR 39544 : Scanner fails on wide char literals. - -2003-07-10 John Camelon - Added in template support to IAST hierarchy. - Updated instantiation & specialization hierarchy. - Removed ASTTemplateDeclarationType. - Added full requestor callbacks for fields, variables, functions, methods & typedefs. - -2003-07-08 John Camelon - Filled out IASTMethod & IASTFunction & added implementations. - Updated IScanner, clients & implementations to use IScannerInfo. - Finished SimpleDeclaration porting to new architecture, only thing left is templates. - -2003-07-07 John Camelon - Bug 39652 - AST: Nested Classes incorrectly report null qualified Names - Fuller specification of Field/Method interfaces. - -2003-07-04 John Camelon - Fixed NPE in Parser::declarator(). - Bug 39652 - AST: Nested Classes incorrectly report null qualified Names - -2003-07-04 Victor Mozgin - Added CTaskTagsReconciler. - Extended ParserFactory with createProblemReporter() and createTranslationResult(). - -2003-07-02 Victor Mozgin - Fixed PR 39501 : Parser problems with throw clauses. - -2003-06-30 John Camelon - Further restructuring of Parser for ISourceElementRequestor. - Added interfaces/implementation for Simple Declarations. - Cleaned up DOM's representation of Constructor chains. - -2003-06-28 John Camelon - Completed Quickparse expression representation. - Updated ExpressionEvaluation and associated tests. - -2003-06-26 John Camelon - Update IASTExpression. - Move Parser.Backtrack and Parser.EndOfFile to external interface. - -2003-06-26 Victor Mozgin - Task tags support in C/C++ comments (initial revision). - Infrastructure to support problem reporting during translation. - Additional infrastructure for options/preferences handling. - -2003-06-25 John Camelon - Fixed bug39348 - sizeof elaborated types fail in parsing expression - -2003-06-25 John Camelon - Create new interface and support for calculating lineNumber/offset mapping. - Updated IASTClassSpecifier for qualified name query. - Began structuring expressions and declarators in Parser for ISourceElementRequestor. - Updated other packages to use new interfaces. - -2003-06-24 John Camelon - Updates for ISourceElementRequestor - elaborated types & enumerations. - -2003-06-23 John Camelon - Updating SimpleDeclarations to move towards new Callback structure. - -2003-06-23 John Camelon - Updated Factory infrastructure, constructors, etc. - Introduced Preprocessor class for transitive closure calc. client. - -2003-06-20 Victor Mozgin - Fixed PR 36463 : Offsets of macros are incorrect. - -2003-06-17 Victor Mozgin - Implemented correct handling of nested declarators in CModelBuilder. - Added proper support for function pointers as parameters. - This fixes PR 38921 and 39002. - -2003-06-16 Victor Mozgin - Implemented support for old K&R-style C function declarations. - Added oldKRParametersBegin() and oldKRParametersEnd() to IParserCallback. - Added getParameterTypes() with support of K&R to CModelBuilder. - Fixed ExpressionEvaluator and NullSourceElementRequestor for additions to IParserCallback. - Added handling of K&R syntax to the parser. - This fixes PR 7541, 35320 and 38434. - -2003-06-14 Victor Mozgin - Fixed handling of parameter lists for typedefs for functions. - More errorhandling in CModelBuilder. - Added handling of pointers to members. - Added handling of declarations for nested scopes (like A::B::C). - This fixes PR 36290, 36931 and partially 38920. - -2003-06-13 John Camelon - Added Class/Base infrastructure to public interfaces & requestor callback. - Moved many internal interfaces to external packages. - Organized imports. - -2003-06-13 Victor Mozgin - Renamed NullParserCallback into NullSourceElementRequester. - NullSourceElementRequester now dummy-implements both IParserCallback and ISourceElementRequester. - -2003-06-13 John Camelon - Merged ParserSymbolTable branch back into HEAD. - -2003-06-12 John Camelon - Get rest of JUnit tests working, will merge back to HEAD branch. - -2003-06-12 John Camelon - Introduction of ASTFactory strategy, some restructuring of packages and interfaces. - -2003-06-10 John Camelon - Futher pursuit of the golden hammer, symbol table integration. - -2003-06-09 John Camelon - First step in replacing IParserCallback with ISourceElementRequestor. - -2003-06-05 Andrew Niefer - Begin implementation of functions for template specializations: deduceTemplateArgument, - classTemplateSpecializationToFunctionTemplate, transformFunctionTemplateForOrdering - -2003-06-09 Victor Mozgin - Fixed for conversion operator declarations. - This fixes PR 36769 (finally) and PR 38657. - -2003-06-09 Victor Mozgin - Fixed Bug 36932 - RTS: Parser fails on "new" in ctor initializer - Improved handling of new-expressions: placements, arrays and - multiple parameters in initializers are now parsed. - -2003-06-09 Victor Mozgin - Fixed Bug 36701 - Scanner looses non-token chars while macro stringizing - -2003-06-07 Victor Mozgin - Fixes for templated constructor/destructor/operator declarations. - This fixed PR 36766, 36767, 36769 (STL parsing problems). - -2003-06-06 Victor Mozgin - Fixed Bug 38065 - Scanner skipped backslashes inside the code - -2003-06-05 John Camelon - Fix Bug 38380 "Include" class public methods fails JUnit tests - -2003-05-29 Andrew Niefer - new Class eType for stronger type safety in TypeInfo - new class PtrOp for better handling of pointer operators and cv qualifiers - new class TemplateInstance to support templates - Start of implementation for templates & specializations - -2003-05-29 John Camelon - Remove all AST components. - -2003-05-26 John Camelon - Rollback PST/Parser integration. - -2003-05-13 Andrew Niefer - Moved symbol table to org.eclipse.cdt.internal.core.pst - Created interface for symbol table: ISymbol, IContainerSymbol, IDerivableContainerSymbol, - IParameterizedSymbol, and ISpecializedSymbol. These are all implemented by Declaration - The symbol table itself uses this interface instead of using its Declaration directly - (with the exception of the undo command framework) - -2003-05-08 Andrew Niefer - Added a basic command structure to support rollbacks - -2003-05-06 John Camelon - Further integration of SymbolTable into Parser, some refactoring. - -2003-05-05 John Camelon/Andrew Niefer - Added Symboltable infrastructure into main parser. - -2003-05-05 Andrew Niefer - Structural changes to ParserSymbolTable: - - moved TypeInfo & Declaration inside ParserSymbolTable - - removed the stack & push/pop/peek - - moved nonstatic add/lookup fuctions from the table to Declaration - - began undo framework: added AddDeclarationCommand - -2003-05-01 Andrew Niefer - Fixed Bug 36287 - Parser failure with new CDT 1.1 parser - Fixed Bug 37011 - Scanner: #define A "//" not properly handled - -2003-04-30 John Camelon - Added some Javadoc to IParser.java and Parser.java. - -2003-04-28 John Camelon - Fixed Bug 37019 - RTS: Parser fails on variable defn using constructor - Fixed Bug 36767 - STL Testing: Parser is confused and goes into template function body - -2003-04-28 John Camelon - Partial fix for Bug37002 - Order of Offsetables is wrong - -2003-04-27 John Camelon - Partial fix for Bug 36932 - RTS: Parser fails on "new" in ctor initializer - Fixed Bug 36704 - Problem parsing Loki's Reference Typelist.h - Fixed Bug 36699 - Problem parsing Loki's Reference SmartPtr.h Impl - Fixed Bug 36691 - Problem parsing Loki's Reference HierarchyGenerators.h Impl - -2003-04-25 Andrew Niefer - Fixed bug36771 - Outline view shows include with no name - Fixed bug36714 - Parser fails on initial assignment using floating-suffix - Revisted bug36816 - Incomplete #include stops outline view - -2003-04-25 John Camelon - Fixed bug36852 - outline window doesn't show all functions - Fixed bug36764 - Bit fields cause parse errors - Fixed bug36702 - Parser error when having function pointers as parameters - -2003-04-24 John Camelon - Fixed Bug36799 STL Testing: Parser fails on Variable Definition - -2003-04-24 John Camelon - Fixed bug36693 - Problem parsing Loki's Reference SmallObj.cpp Impl - Fixed bug36696 - Problem parsing Loki's Reference SmartPtr.h Impl - Improved our error handling robustness. - Fixed bug36713 - Parser fails on definitions of pointers to functions - Fixed Dave's performance test parse failure. - Fixed bug36811 - The using directive causes parser to fail - Fixed bug36794 - ClassCastException for A template with no parameters - -2003-04-24 Andrew Niefer - Fixed Bug36816 Scanner infinite loop on incomplete #include - Fixed Bug36255 Parser hangs/goes infinite - -2003-04-21 John Camelon - Revisited bug36247 Parser confused by symbols #defined elsewhere - Fixed Bug36708 Problem parsing Loki's Reference TypeTraits.h - Fixed Bug36690 Problem parsing Loki's Reference Functor.h Implementation - Fixed Bug36692 Problem parsing Loki's Reference Singleton.h Impl - Fixed Bug36703 Problem parsing Loki's Reference TypeInfo.h Impl - Fixed Bug36689 Problem parsing Loki's Reference AbstractFactory.h Implementation - Fixed Bug36707 Problem parsing Loki's Reference TypeManip.h - -2003-04-21 Andrew Niefer - Fixed Bug36475 - Scanner does not concatenate strings - Fixed Bug36509 - Scanner turns strings into identifiers when expanding macros - Fixed Bug36521 - Scanner gets confused over commas in function like macros - Fixed Bug36695 - Scanner looses escaping on chars (ie '\4' to '4') - -2003-04-20 John Camelon - Fixed Bug36551 Bad parse on attached file. - Partial Fix for Bug36631 remove linear search algorithm from OffsetMapping - Some debunking of line numbers. - -2003-04-17 John Camelon - Fixed error in Elaborated Enumeration Types. - Fixed Bug36559 - Parsing Templates... - Fixed Bug36634 - Enum start line error - -2003-04-16 John Camelon - Fixed Bug36532 - Hang on partial template definition. - Fixed Bug36432 - Trying to open attached source code hangs Eclipse. - Fixed Bug36594 - Parser Stack Overflow on unaryExpression - Fixed Bug36600 - Elaborated Enumerated Types Parse Incorrectly. - -2003-04-15 John Camelon - Fixed bug36434 - Broken outline in winbase.h - Partial Fix for bug36379 - The parser to set Line informations when scanning. - Fixed CModelManager to include header files with .H extension as C++ headers. - Fixed bug36448 - Parser fails for C programs containing C++ keywords as identifiers - -2003-04-15 Andrew Niefer - Added scanner support to fix Bug36047 - -2003-04-13 John Camelon - Minor cleanup of callbacks due to removal of NewModelBuilder. - Added parser support to partially fix bug36416 & bug36294. Also added minimal C-Model support for these fixes. - -2003-04-11 John Camelon - Minimized the number of objects being returned from Parser callbacks. - Fixed CModelBuilder to handle errors better. - Reorganized the DOM Hierarchy to ensure that nodes were added to the tree on End() callbacks. - Fixed defect 36247(). - -2003-04-11 John Camelon - Fixed Bug 36243 DomBuilder Offsetable List - -2003-04-10 John Camelon - Fixed Bug36237 Parser fails on casts in ctor initializer. - Added AccessSpecifier to TemplateDeclaration. - -2003-04-10 John Camelon - Updated callbacks and parser to add offset information to template declarations, - thus making TemplateDeclaration implement IOffsetable. - -2003-04-09 John Camelon - Removed all the old Code Model Builder source that was no longer being used (NewModelBuilder.java, etc.). - Moved all the files in parser.util directory to the dom. - Organized imports. - Fixed bug36250 Parser ignores functions with default parameters that have no name. - Fixed bug36240 Parser incorrectly parses operator= - Fixed bug36254 Parser doesn't recognize unsigned as a type by itself. - -2003-04-09 John Camelon - Added timing printout for CModelTests. - Provided partial fix for bug36255 to get past infinite loop, will leave defect open. - Fixed bug36045 (Again). - Fixed bug36287. - -2003-04-06 Andrew Niefer - Added ParserSymbolTable::Cost and used it to fix up the conversion sequence ranking - -2003-04-06 John Camelon - Fixed defect 36073. - Fixed error handling for unterminated strings in Scanner. - Significantly updated callback structure to better suite the nature of the Code Model. - Updated all callbacks and parser to accommodate altered callbacks. - -2003-04-04 John Camelon - Fixed defect 35939. Proper CElement::pos() is set on Simple Declarations, - Class Specifications, Namespaces, Enumerations and Enumerators, Macros and Inclusions. - -2003-04-03 John Camelon - Fixed defects 36019, 36020, 36045. - Finished template declarations and their callbacks for the DOM (not the Code Model). - -2003-04-01 John Camelon - Updated Scanner to convert control-characters to ' '. - Fixed logic error in SimpleDeclarationWrapper. - Added operator support to grammar. - Fixed Name.toString() to support non-qualified yet multi-part names. - -2003-04-01 Andrew Niefer - Parser Symbol Table, modified lookup with respect to resolving ambiguous names, - reducing the number of temporary lists/sets. Modified adding using declarations - to properly support overloaded functions. Added initial support for user defined - conversion sequences when resolving overloaded functions. - -2003-04-01 John Camelon - Fixed bug35906 - Udated Scanner to not puke on certain control characters. - -2003-03-31 John Camelon - Fixed unsigned short SimpleDeclarations not showing up in the outline view. - Fixed default visibilities for structs in outline view. - Fixed bug35892. - Added icon-less typedefs and enums to the outline view. - Fixed NPEs relating to anonymous structs, unions, enums in outline view. - -2003-03-31 Andrew Niefer - Parser Symbol Table, better support for function resolution with pointers and - references as parameters. Also support for typedefs as function parameters - -2003-03-31 John Camelon - Updated NewModelBuilder to work for ElaboratedTypeSpecifiers, PointerOperators, Const Methods. - Fixed bug35878. - -2003-03-31 John Camelon - Updated Scanner to work for Strings literals like L"this string" - Updated Scanner to work for floating points literals. - Updated Scanner to be more forgiving on errors in QuickScan mode. - Got template instantiation and specialization working (w/callbacks and DOM). - Updated Parser/Callbacks for handle pure virtual function declarations. - Added callback support for some template declarations (not all branches). - -2003-03-28 John Camelon - Added AccessSpecifier and ClassKind to parser.util package and refactored callbacks. - Better encapsulated ExceptionSpecification in the DOM. - Updated DOM structures to return unmodifiable collections. - Added callback support for asmdefinitions. - Added callback support for constructor initializer chains. - Fixed bug 35781 and updated parser to catch all exceptions from callbacks to ensure best-effort parsing. - Removed Main.java from Parser package. - -2003-03-26 Andrew Niefer - Moved type information and ParameterInfo from Declaration into util.TypeInfo - Initial implementation of standard conversion sequences for function resolution - -2003-03-24 John Camelon - Added callback support for namespace definitions. - Updated Parser exception hierarchy. - Added callback support for linkage specifications. - Added callback support for using declarations and directives. - -2003-03-23 John Camelon - Added callback support for class member visibility. - Added callback support for pointer and reference operators on declarators. - Added callback support for throws clauses an const operations. - Added callback support for array declarators. - -2003-03-20 Andrew Niefer - Parser Symbol Table updates for: - * friends - * "this" pointer - * enumerators - * Argument dependent lookup - * adding parameters to functions & function overloading - -2003-03-19 John Camelon - Updated Parser method visibility to solidify external interface. - Solved and removed TODO's from Scanner implementation. - Updated Parser and callbacks to handle basic expressions. - -2003-03-18 John Camelon - Updated IParserCallback (and implementations) to add a typeName to DeclSpecifier. - Updated IParserCallback and NewModelBuilder to distinguish between Function declarations and definitions. - -2003-03-17 Doug Schaefer - Changed EOF to be a Backtrack exception instead of a token so simplify - error handling. - -2003-03-13 John Camelon - Moved ## token to IScanner from Scanner. - Updated IParserCallback and implementations to deal with Elaborated Type Specifiers. - Moved IScope into the internal DOM package. - -2003-03-11 John Camelon - added ChangeLog to parser directory - updated IParserCallback (and all implementors) for expressions - removed inheritance relationship between ExpressionEvaluator and NullParserCallback - removed redundant assignmentOperator() calls in Parser::initDeclarator - removed class util.DeclarationSpecifier, merged Container interface into util.DeclSpecifier - organized imports on the parser folder - * dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java - * dom/org/eclipse/cdt/internal/core/dom/Declarator.java - * dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java - * dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java - * parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java - * parser/org/eclipse/cdt/internal/core/model/Parameter.java - * parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java - * parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java - * parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java - * parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java - * parser/org/eclipse/cdt/internal/core/parser/Parser.java - * parser/org/eclipse/cdt/internal/core/parser/util/DeclSpecifier.java - -2003-03-10 John Camelon - added in support for detecting and reporting circular inclusions - added optimization by caching inclusion directories - added macro pasting capabilities - updated inclusion searching algorithm for local inclusions - -2003-03-07 John Camelon - fixed initDeclarators for the outline view. - -2003-03-06 Doug Schaefer - Some minor fixes to get constructors/destructors parsing as well as some minor clean up and robustness. - -2003-03-06 John Camelon - added quickParse heuristic to Scanner for handling #if conditionals to avoid throwing - ScannerExceptions on undefined preprocessor symbols - added minimal enum support to Parser (though not to DOM or CModel) - -2003-03-06 Andrew Niefer - Implementation of Namespaces & using directives in new parser's symbol table - -2003-03-05 Doug Schaefer - Some minor fixes to the parser. - -2003-03-04 Doug Schaefer - Added Parser in the "parser" source folder in cdt.core - Preference in the C/C++ preference page to enable/disable use of the new parser (disabled by default) - Start on the DOM which we are using to test the parser (source folder "dom") - Start on a new Model Builder for creating CElements using the new parser (currently in source folder "parser") +2003-15-09 John Camelon + 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. + +2003-12-05 John Camelon + Broke the Parser up into separate classes per ParserMode. + +2003-12-04 John Camelon + 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. + +2003-12-03 Andrew Niefer + - Symbol table - modify prefix lookup handling of ambiguities + - fix up qualified lookup + - add IContainerSymbol.lookupMethodForDefinition + - Parser - modify Complete parse AST factory to use the correct lookups in different situations + - Created a LookupType enum to specify what kind of lookup is needed (Qualified, unqualified, for definition) + + +2003-11-27 Andrew Niefer + fix bug 47264: Parse fails when using struct s foo; and int s; in function bodies + +2003-11-18 Andrew Niefer + Refactor PST: Split Declaration into 4 classes : ContainerSymbol, DerivableContainerSymbol, ParameterizedContainerSymbol, + SpecializedSymbol. Move these along with BasicSymbol & TemplateInstance to no longer be nested in ParserSymbolTable. + +2003-11-13 Hoda Amer + Changed the getExpressionResultType() in the complete factory to return + an object of type ExpressionResult. + Solved bug#44342: Failure to dereference function calls after a . or an -> + +2003-11-07 John Camelon + Fixed Bug 39554 : _Pragma directive is not supported (ANSI C99) + +2003-11-06 John Camelon + Removed one last remainder of core.model.Util in parser to unbreak 2.0 build. + +2003-11-05 John Camelon + 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 directives + +2003-11-05 John Camelon + 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). + +2003-11-05 John Camelon + Removed warnings from parser source tree. + Removed preliminary task tags support to clean up parser interfaces and implementation. + Added preliminary IProblem support to + +2003-11-03 John Camelon + Added in preliminary interface for code completion mode. + +2003-10-28 Andrew Niefer + Fixed Bug 44925 : Search: Elaborated type specifier + Patially fixed Bug 44510 : C/C++ Search gives wrong results + +2003-10-24 John Camelon + Fixed Bug 45476 : preprocessor macro "defined" not handled correctly + Fixed Bug 45477 : macro redefines prevent further parsing + +2003-10-24 John Camelon + 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) + +2003-10-21 John Camelon + 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. + +2003-10-01 John Camelon + Fixed Bug 43987 : Search results: Declaration of class not highlighted when selected + Fixed Bug 43997 : Search results: selection includes preceding whitespace + Fixed Bug 44034 : Scanner failure on #undef + +2003-10-01 Andrew Niefer + bug43951 - search on ctor declarations returns definition too. + PST changes: + - modify lookupConstructor to copy the constructor list before resolving on it + - modify checkUserDefinedConversionSequence the same way + - modify isValidFunctionOverload to check for forward declarations + +2003-10-01 Bogdan Gheorghe + Modified CDT log dump in Parser.fetchToken to include error message + +2003-10-01 Andrew Niefer + bug43450 - Scanner needs to handle include paths that contain quotes + +2003-09-30 Bogdan Gheorghe + Added CDT log dump in Parser.fetchToken to catch HandleInclusion failures + +2003-09-30 John Camelon + Fixed Bug 43503 : Search:f_SD_01 cannot be found in ManyClasses20 Project + Fixed Bug 43680 : Fix Parser Error Handling + +2003-09-30 Hoda Amer + -Solution to [Bug 43053] require reference cleanup for expressions + Added purgeReferences() at the end of ASTExpression::acceptElement() + +2003-09-30 Andrew Niefer + PST changes for bug 43503 - parser needs to know the different between ambiguous functions + and no functions when no parameter information is provided + - throw r_UnableToResolveFunction if we have more than 1 function and no parameter info was given + - handle this case in addUsingDeclaration. + * note that r_UnableToResolveFunction doesn't necessarily mean ambiguous if we had enough information + +2003-09-29 Hoda Amer + Solution to bug#43679 : Exceptions in indexer + +2003-09-29 Andrew Niefer + fixed bug 43834 : Empty Parameter list and parameter list taking one void do not match + +2003-09-29 John Camelon + Continued work on Bug 43062 : Outline is confused on operator methods containing spaces + Partial fix for Bug 43680 : Fix Parser Error Handling + +2003-09-26 John Camelon + Fixed Bug 43644 : 6 triangle icons appearing in outline viewer when typing an error + Fixed Bug 43062 : Outline is confused on operator methods containing spaces + Fixed Bug 39531 : Problems with type conversion operators + +2003-09-25 Hoda Amer + - Last part of solution to bug#42453: Expression result types not computed + Added the handling of POSTFIX_TYPENAME_IDENTIFIER + Completed bug#43221: POSTFIX_TYPENAME_IDENTIFIER not implemented + - Solution to bug#43644 : 6 triangle icons appearing in outline viewer when typing ... + +2003-09-24 Hoda Amer + Partial solution to bug#42453: Expression result types not computed + Added the handling of the NEW_TYPEID, CASTEXPRESSION, POSTFIX_DYNAMIC_CAST, + POSTFIX_REINTERPRET_CAST, POSTFIX_STATIC_CAST, and POSTFIX_CONST_CAST + +2003-09-25 John Camelon + Partial fix for Bug 43221 : POSTFIX_TYPENAME_IDENTIFIER not implemented + +2003-09-24 John Camelon + Fixed Bug 43106 : Symbol Table support needed to resolve types + Fixed Bug 43375 : isExtern not returning true for extern declarations + +2003-09-23 John Camelon + Fixed Bug 43084 : need to restructure TypeId to allow dynamic_cast<> type expression references. + Fixed Bug 39504 : sizeof-expressions are not handled properly + +2003-09-23 Hoda Amer + Solution to bug#43373: No reference to static member in definition + Solution to bug#43371: constructor incorrectly marked private + +2003-09-18 Andrew Niefer + - modified Symbol table interfaces to use Lists & Maps instead of LinkedList and HashMap + - fixed warnings in ParserSymbolTable + - fixed bug43106 - Symbol Table support needed to resolve types + - fixed bug43156 - require ability to add implicit inheritance copy constructor + - fixed bug43159 - TypeInfo.equals() not working properly + - fixed bug43238 - Postfix_Subscript expressions confuse function resolution + +2003-09-16 Andrew Niefer + - added setThrowExceptionOnBadCharacterRead to IScanner to help with wildcard bug43063 + +2003-09-17 Hoda Amer + In completeParseASTFactory.getExpressionResultType(): Added the support + for expression types: PM_DOTSTAR, PM_ARROWSTAR, CONDITIONALEXPRESSION + +2003-09-16 John Camelon + Implement CompleteParse IASTFunction::previouslyDeclared(). + +2003-09-16 Hoda Amer + In completeParseASTFactory.getExpressionResultType(): Added the support + for expression type PRIMARY_THIS. + In createMethod(): changed the scope of a method definition to point to + the parent class. + +2003-09-15 John Camelon + 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. + +2003-09-15 Andrew Niefer + bug43106 - added getConditionalOperand to ParserSymbolTable + +2003-09-15 John Camelon + Partially fixed Bug 42979 : Cannot search for operator overloaders + +2003-09-12 Hoda Amer + In completeParseASTFactory.getExpressionResultType() + - Added the handling of some more expression types. + See CompleteParseASTExpressionTest for details. + +2003-09-12 John Camelon + Fixed Bug 42985 : Search: Qualified function call is treated as a declaration + Fixed Bug 40419 : parser fails on heavily templated expressions + +2003-09-12 John Camelon + Fixed Bug 43013 : IASTParameterDeclaration does not derive from IASTOffsetableNamedElement + +2003-09-12 Andrew Niefer + Fixed some NPEs in ParserSymbolTable.getFlatTypeInfo + Added some comments and created some constants to help clarify ranking of conversion sequences + +2003-09-11 John Camelon + Fixed Bug 42840 : Search: Cannot find things after double declarations + Fixed Bug 42798 : Selected #include off by 1 char + Fixed Bug 42872 : dynamic cast not parsed properly + Partially fixed Bug 39504 : sizeof-expressions are not handled properly + Updated SourceElementRequestor callbacks to include IASTParameterReference callbacks. + +2003-09-09 Hoda Amer + - Solved the double reference problem + - solution to bugs #42822, #42823, & #42822B + +2003-09-09 John Camelon + 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. + +2003-09-08 Bogdan Gheorghe + Added ScannerExceptions in Preprocessor.java to PDE Error + Log + +2003-09-09 Hoda Amer + Added more IASTExpression.Kind handling to CompleteParseASTFactory.getExpressionResultType() + +2003-09-08 John Camelon + 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. + +2003-09-08 Andrew Niefer + - Created ParserLanguage.java + - Updated Factories to take language as parameter when create scanner & parser + - Updated Parser, Scanner & ParserSymbolTable to take language in their constructor + +2003-09-05 Hoda Amer + - Added references to variables with pointers in solution + of bug#42453:Expression result types not computed + + +2003-09-05 John Camelon + Continue to add support for parsing within function bodies. + Add workaround for 1.2 for inline function declaration-before-use chicken-and-egg. + +2003-09-05 John Camelon + Fixed NPE on nested declarations in code blocks. + +2003-09-04 John Camelon + 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. + +2003-09-04 Andrew Niefer + Fix bug42541 - Anonymous structures cause NPE in full parse + +2003-09-03 Andrew Niefer + fix bug in PST that prevents > 2 constructors + +2003-09-03 John Camelon + Fixed bug41445 - QualifiedLookup succeeds where it should fail. + +2003-09-02 Andrew Niefer + bug41935 - Modifications to PST to allow for namespace aliases + +2003-08-28 John Camelon + Fixed bug39535 - Parser fails on namesapce aliases + +2003-08-26 Bogdan Gheorghe + Added parser constant to all debugLog tracing statements. + +2003-08-25 John Camelon + Fixed bug39526 - Parser doesn't handle initializers correctly. + Fixed bug41520 - FullParse : Constructor Initializer is mistaken as function prototype + +2003-08-25 John Camelon + 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. + +2003-08-14 John Camelon + Removed warnings from SymbolTable & QuickParseCallback (removing implicit accessor generation). + Made IASTElaboratedTypeSpecifier derive from IASTOffsetableNamedElement (as it should). + +2003-08-14 John Camelon + Added X-Reference support for ArrayModifiers and Exception Specifications. + Fixed Bug 41551 - HandleInclusion always throws ScannerException on local includes. + +2003-08-13 John Camelon + Added constructor expression support for variables. + Added constructor chain x-reference support for methods. + +2003-08-13 John Camelon + Added Expression x-reference support into Parser. + +2003-08-12 John Camelon + Added X-Ref/Elaborated type support w/element requestor callbacks. + +2003-08-11 John Camelon + 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. + +2003-08-05 Andrew Niefer + - Refactor symbol table functions to start with lower case letters + - Added better constructor support : + IDerivableContainerSymbol.addConstructor + IDerivableContainerSymbol.lookupConstructor + IDerivableContainerSymbol.getConstructors + - Changed ParserSymbolTableException.r_Unspecified to r_InternalError + - 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) + +2003-07-31 Andrew Niefer + Added better support to the parser symbol table for forward declarations + +2003-07-31 Victor Mozgin + Fixed PR 39540 : Parser fails on const qualifier after class specifier. + +2003-07-30 Victor Mozgin + Fixed PR 39532 : Parser fails on fully-qualified class names. + +2003-07-29 John Camelon + Updated AST to better represent pointers to functions/methods. + Implemented typedef declaration/x-ref infrastructure. + +2003-07-29 Victor Mozgin + Fixed PR 39546 : Parser fails on 'signed' casts. + +2003-07-28 John Camelon + Fixed Bug 40842 - Parser: NPE while parsing class declaration in full parse mode + Fixed Bug 40843 - Parser: failParse doesn't set parsePassed = false on EOF. + Fixed Miscellaneous overrides issues involving parameters & functions. + +2003-07-28 John Camelon + Fixed Bug 40730 : Parser is not searching the include path for #include"" + +2003-07-28 Victor Mozgin + Fixed PR 39537 : Parser fails if template parameters contain '>' or '<' characters. + +2003-07-25 Victor Mozgin + Fixed PR 39553 : Macros are not expanded in #include statements. + +2003-07-24 John Camelon + Added COMPLETE_PARSE support for Method and Field declarations and cross-references. + Fixed some small ParserSymbolTable bugs. + Added support for linkage specification under COMPLETE_PARSE. + +2003-07-24 John Camelon + Added CompleteParse - UsingDirective & UsingDeclarations w/namespace/class/field variable references. + Added CompleteParse support for enumeration specifiers and references in variables & fields. + Stubbed out other Scopes/Declarations for COMPLETE_PARSE mode to allow indexer team to switch over ASAP. + +2003-07-22 John Camelon + Added in preliminary support for Field/Variable w/cross references on their types. + +2003-07-21 John Camelon + Addded in support for BaseSpecifier & class/namespace reference callbacks upon those. + +2003-07-21 John Camelon + Fleshed out basic declarations for FullParse AST. + Fixed Bug 40554 - Fields coming back as Vars + Fixed Bug 40555 - Methods come back as Functions + +2003-07-18 John Camelon + Added ISourceElementCallbackDelegate interface for AST constructs to allow the Parser to delegate callback's to the nodes themselves. + Got rid of ParserMode.STRUCTURAL_PARSE for the time being. + Removed org.eclipse.cdt.internal.core.parser.ast.full. + Created org.eclipse.cdt.internal.core.parser.ast.complete. + Updated ParserFactory.createScanner() to force the user to provide a callback and a ParserMode. + Introduced ASTSemanticException for COMPLETE_PARSE mode. + Fleshed out preliminary IASTReference interfaces and added callbacks to ISourceElementRequestor. + Removed acceptElaboratedTypeSpecifier() from ISourceElementRequestor. + +2003-07-18 John Camelon + Removed DeclaratorDuple as it was obsolete. + Fixed offsets in quickParse's IASTTypedefDeclaration implementation. + Fixed Bug 40436 - Fully Qualified Names Needed (for Indexer/Search features) + +2003-07-17 John Camelon + Removed IParserCallback. + Partially converted DOM to ISourceElementRequestor (requires refactoring of CModelBuilder & StuctureComparator modules in near future). + Completely finished ISourceElementRequestor/IASTFactory work for QuickParse mode. + Added pointer to methods/functions into AST callback structure. + Restructured AST class hierarchy. + Removed the old IParserCallback return Objects from every Parser method. + +2003-07-17 Victor Mozgin + Added support for digraphs and trigraphs. + Added support for hex floating point literals. + Fixed stack overflow problem with string literals concatenation. + Fixed problem with token pasting in macros. + This solves PR 39523, 39550, 39552. + +2003-07-15 Victor Mozgin + Fixed PR 39349 : Scanner fails on long long literals. + Fixed PR 39544 : Scanner fails on wide char literals. + +2003-07-10 John Camelon + Added in template support to IAST hierarchy. + Updated instantiation & specialization hierarchy. + Removed ASTTemplateDeclarationType. + Added full requestor callbacks for fields, variables, functions, methods & typedefs. + +2003-07-08 John Camelon + Filled out IASTMethod & IASTFunction & added implementations. + Updated IScanner, clients & implementations to use IScannerInfo. + Finished SimpleDeclaration porting to new architecture, only thing left is templates. + +2003-07-07 John Camelon + Bug 39652 - AST: Nested Classes incorrectly report null qualified Names + Fuller specification of Field/Method interfaces. + +2003-07-04 John Camelon + Fixed NPE in Parser::declarator(). + Bug 39652 - AST: Nested Classes incorrectly report null qualified Names + +2003-07-04 Victor Mozgin + Added CTaskTagsReconciler. + Extended ParserFactory with createProblemReporter() and createTranslationResult(). + +2003-07-02 Victor Mozgin + Fixed PR 39501 : Parser problems with throw clauses. + +2003-06-30 John Camelon + Further restructuring of Parser for ISourceElementRequestor. + Added interfaces/implementation for Simple Declarations. + Cleaned up DOM's representation of Constructor chains. + +2003-06-28 John Camelon + Completed Quickparse expression representation. + Updated ExpressionEvaluation and associated tests. + +2003-06-26 John Camelon + Update IASTExpression. + Move Parser.Backtrack and Parser.EndOfFile to external interface. + +2003-06-26 Victor Mozgin + Task tags support in C/C++ comments (initial revision). + Infrastructure to support problem reporting during translation. + Additional infrastructure for options/preferences handling. + +2003-06-25 John Camelon + Fixed bug39348 - sizeof elaborated types fail in parsing expression + +2003-06-25 John Camelon + Create new interface and support for calculating lineNumber/offset mapping. + Updated IASTClassSpecifier for qualified name query. + Began structuring expressions and declarators in Parser for ISourceElementRequestor. + Updated other packages to use new interfaces. + +2003-06-24 John Camelon + Updates for ISourceElementRequestor - elaborated types & enumerations. + +2003-06-23 John Camelon + Updating SimpleDeclarations to move towards new Callback structure. + +2003-06-23 John Camelon + Updated Factory infrastructure, constructors, etc. + Introduced Preprocessor class for transitive closure calc. client. + +2003-06-20 Victor Mozgin + Fixed PR 36463 : Offsets of macros are incorrect. + +2003-06-17 Victor Mozgin + Implemented correct handling of nested declarators in CModelBuilder. + Added proper support for function pointers as parameters. + This fixes PR 38921 and 39002. + +2003-06-16 Victor Mozgin + Implemented support for old K&R-style C function declarations. + Added oldKRParametersBegin() and oldKRParametersEnd() to IParserCallback. + Added getParameterTypes() with support of K&R to CModelBuilder. + Fixed ExpressionEvaluator and NullSourceElementRequestor for additions to IParserCallback. + Added handling of K&R syntax to the parser. + This fixes PR 7541, 35320 and 38434. + +2003-06-14 Victor Mozgin + Fixed handling of parameter lists for typedefs for functions. + More errorhandling in CModelBuilder. + Added handling of pointers to members. + Added handling of declarations for nested scopes (like A::B::C). + This fixes PR 36290, 36931 and partially 38920. + +2003-06-13 John Camelon + Added Class/Base infrastructure to public interfaces & requestor callback. + Moved many internal interfaces to external packages. + Organized imports. + +2003-06-13 Victor Mozgin + Renamed NullParserCallback into NullSourceElementRequester. + NullSourceElementRequester now dummy-implements both IParserCallback and ISourceElementRequester. + +2003-06-13 John Camelon + Merged ParserSymbolTable branch back into HEAD. + +2003-06-12 John Camelon + Get rest of JUnit tests working, will merge back to HEAD branch. + +2003-06-12 John Camelon + Introduction of ASTFactory strategy, some restructuring of packages and interfaces. + +2003-06-10 John Camelon + Futher pursuit of the golden hammer, symbol table integration. + +2003-06-09 John Camelon + First step in replacing IParserCallback with ISourceElementRequestor. + +2003-06-05 Andrew Niefer + Begin implementation of functions for template specializations: deduceTemplateArgument, + classTemplateSpecializationToFunctionTemplate, transformFunctionTemplateForOrdering + +2003-06-09 Victor Mozgin + Fixed for conversion operator declarations. + This fixes PR 36769 (finally) and PR 38657. + +2003-06-09 Victor Mozgin + Fixed Bug 36932 - RTS: Parser fails on "new" in ctor initializer + Improved handling of new-expressions: placements, arrays and + multiple parameters in initializers are now parsed. + +2003-06-09 Victor Mozgin + Fixed Bug 36701 - Scanner looses non-token chars while macro stringizing + +2003-06-07 Victor Mozgin + Fixes for templated constructor/destructor/operator declarations. + This fixed PR 36766, 36767, 36769 (STL parsing problems). + +2003-06-06 Victor Mozgin + Fixed Bug 38065 - Scanner skipped backslashes inside the code + +2003-06-05 John Camelon + Fix Bug 38380 "Include" class public methods fails JUnit tests + +2003-05-29 Andrew Niefer + new Class eType for stronger type safety in TypeInfo + new class PtrOp for better handling of pointer operators and cv qualifiers + new class TemplateInstance to support templates + Start of implementation for templates & specializations + +2003-05-29 John Camelon + Remove all AST components. + +2003-05-26 John Camelon + Rollback PST/Parser integration. + +2003-05-13 Andrew Niefer + Moved symbol table to org.eclipse.cdt.internal.core.pst + Created interface for symbol table: ISymbol, IContainerSymbol, IDerivableContainerSymbol, + IParameterizedSymbol, and ISpecializedSymbol. These are all implemented by Declaration + The symbol table itself uses this interface instead of using its Declaration directly + (with the exception of the undo command framework) + +2003-05-08 Andrew Niefer + Added a basic command structure to support rollbacks + +2003-05-06 John Camelon + Further integration of SymbolTable into Parser, some refactoring. + +2003-05-05 John Camelon/Andrew Niefer + Added Symboltable infrastructure into main parser. + +2003-05-05 Andrew Niefer + Structural changes to ParserSymbolTable: + - moved TypeInfo & Declaration inside ParserSymbolTable + - removed the stack & push/pop/peek + - moved nonstatic add/lookup fuctions from the table to Declaration + - began undo framework: added AddDeclarationCommand + +2003-05-01 Andrew Niefer + Fixed Bug 36287 - Parser failure with new CDT 1.1 parser + Fixed Bug 37011 - Scanner: #define A "//" not properly handled + +2003-04-30 John Camelon + Added some Javadoc to IParser.java and Parser.java. + +2003-04-28 John Camelon + Fixed Bug 37019 - RTS: Parser fails on variable defn using constructor + Fixed Bug 36767 - STL Testing: Parser is confused and goes into template function body + +2003-04-28 John Camelon + Partial fix for Bug37002 - Order of Offsetables is wrong + +2003-04-27 John Camelon + Partial fix for Bug 36932 - RTS: Parser fails on "new" in ctor initializer + Fixed Bug 36704 - Problem parsing Loki's Reference Typelist.h + Fixed Bug 36699 - Problem parsing Loki's Reference SmartPtr.h Impl + Fixed Bug 36691 - Problem parsing Loki's Reference HierarchyGenerators.h Impl + +2003-04-25 Andrew Niefer + Fixed bug36771 - Outline view shows include with no name + Fixed bug36714 - Parser fails on initial assignment using floating-suffix + Revisted bug36816 - Incomplete #include stops outline view + +2003-04-25 John Camelon + Fixed bug36852 - outline window doesn't show all functions + Fixed bug36764 - Bit fields cause parse errors + Fixed bug36702 - Parser error when having function pointers as parameters + +2003-04-24 John Camelon + Fixed Bug36799 STL Testing: Parser fails on Variable Definition + +2003-04-24 John Camelon + Fixed bug36693 - Problem parsing Loki's Reference SmallObj.cpp Impl + Fixed bug36696 - Problem parsing Loki's Reference SmartPtr.h Impl + Improved our error handling robustness. + Fixed bug36713 - Parser fails on definitions of pointers to functions + Fixed Dave's performance test parse failure. + Fixed bug36811 - The using directive causes parser to fail + Fixed bug36794 - ClassCastException for A template with no parameters + +2003-04-24 Andrew Niefer + Fixed Bug36816 Scanner infinite loop on incomplete #include + Fixed Bug36255 Parser hangs/goes infinite + +2003-04-21 John Camelon + Revisited bug36247 Parser confused by symbols #defined elsewhere + Fixed Bug36708 Problem parsing Loki's Reference TypeTraits.h + Fixed Bug36690 Problem parsing Loki's Reference Functor.h Implementation + Fixed Bug36692 Problem parsing Loki's Reference Singleton.h Impl + Fixed Bug36703 Problem parsing Loki's Reference TypeInfo.h Impl + Fixed Bug36689 Problem parsing Loki's Reference AbstractFactory.h Implementation + Fixed Bug36707 Problem parsing Loki's Reference TypeManip.h + +2003-04-21 Andrew Niefer + Fixed Bug36475 - Scanner does not concatenate strings + Fixed Bug36509 - Scanner turns strings into identifiers when expanding macros + Fixed Bug36521 - Scanner gets confused over commas in function like macros + Fixed Bug36695 - Scanner looses escaping on chars (ie '\4' to '4') + +2003-04-20 John Camelon + Fixed Bug36551 Bad parse on attached file. + Partial Fix for Bug36631 remove linear search algorithm from OffsetMapping + Some debunking of line numbers. + +2003-04-17 John Camelon + Fixed error in Elaborated Enumeration Types. + Fixed Bug36559 - Parsing Templates... + Fixed Bug36634 - Enum start line error + +2003-04-16 John Camelon + Fixed Bug36532 - Hang on partial template definition. + Fixed Bug36432 - Trying to open attached source code hangs Eclipse. + Fixed Bug36594 - Parser Stack Overflow on unaryExpression + Fixed Bug36600 - Elaborated Enumerated Types Parse Incorrectly. + +2003-04-15 John Camelon + Fixed bug36434 - Broken outline in winbase.h + Partial Fix for bug36379 - The parser to set Line informations when scanning. + Fixed CModelManager to include header files with .H extension as C++ headers. + Fixed bug36448 - Parser fails for C programs containing C++ keywords as identifiers + +2003-04-15 Andrew Niefer + Added scanner support to fix Bug36047 + +2003-04-13 John Camelon + Minor cleanup of callbacks due to removal of NewModelBuilder. + Added parser support to partially fix bug36416 & bug36294. Also added minimal C-Model support for these fixes. + +2003-04-11 John Camelon + Minimized the number of objects being returned from Parser callbacks. + Fixed CModelBuilder to handle errors better. + Reorganized the DOM Hierarchy to ensure that nodes were added to the tree on End() callbacks. + Fixed defect 36247(). + +2003-04-11 John Camelon + Fixed Bug 36243 DomBuilder Offsetable List + +2003-04-10 John Camelon + Fixed Bug36237 Parser fails on casts in ctor initializer. + Added AccessSpecifier to TemplateDeclaration. + +2003-04-10 John Camelon + Updated callbacks and parser to add offset information to template declarations, + thus making TemplateDeclaration implement IOffsetable. + +2003-04-09 John Camelon + Removed all the old Code Model Builder source that was no longer being used (NewModelBuilder.java, etc.). + Moved all the files in parser.util directory to the dom. + Organized imports. + Fixed bug36250 Parser ignores functions with default parameters that have no name. + Fixed bug36240 Parser incorrectly parses operator= + Fixed bug36254 Parser doesn't recognize unsigned as a type by itself. + +2003-04-09 John Camelon + Added timing printout for CModelTests. + Provided partial fix for bug36255 to get past infinite loop, will leave defect open. + Fixed bug36045 (Again). + Fixed bug36287. + +2003-04-06 Andrew Niefer + Added ParserSymbolTable::Cost and used it to fix up the conversion sequence ranking + +2003-04-06 John Camelon + Fixed defect 36073. + Fixed error handling for unterminated strings in Scanner. + Significantly updated callback structure to better suite the nature of the Code Model. + Updated all callbacks and parser to accommodate altered callbacks. + +2003-04-04 John Camelon + Fixed defect 35939. Proper CElement::pos() is set on Simple Declarations, + Class Specifications, Namespaces, Enumerations and Enumerators, Macros and Inclusions. + +2003-04-03 John Camelon + Fixed defects 36019, 36020, 36045. + Finished template declarations and their callbacks for the DOM (not the Code Model). + +2003-04-01 John Camelon + Updated Scanner to convert control-characters to ' '. + Fixed logic error in SimpleDeclarationWrapper. + Added operator support to grammar. + Fixed Name.toString() to support non-qualified yet multi-part names. + +2003-04-01 Andrew Niefer + Parser Symbol Table, modified lookup with respect to resolving ambiguous names, + reducing the number of temporary lists/sets. Modified adding using declarations + to properly support overloaded functions. Added initial support for user defined + conversion sequences when resolving overloaded functions. + +2003-04-01 John Camelon + Fixed bug35906 + Udated Scanner to not puke on certain control characters. + +2003-03-31 John Camelon + Fixed unsigned short SimpleDeclarations not showing up in the outline view. + Fixed default visibilities for structs in outline view. + Fixed bug35892. + Added icon-less typedefs and enums to the outline view. + Fixed NPEs relating to anonymous structs, unions, enums in outline view. + +2003-03-31 Andrew Niefer + Parser Symbol Table, better support for function resolution with pointers and + references as parameters. Also support for typedefs as function parameters + +2003-03-31 John Camelon + Updated NewModelBuilder to work for ElaboratedTypeSpecifiers, PointerOperators, Const Methods. + Fixed bug35878. + +2003-03-31 John Camelon + Updated Scanner to work for Strings literals like L"this string" + Updated Scanner to work for floating points literals. + Updated Scanner to be more forgiving on errors in QuickScan mode. + Got template instantiation and specialization working (w/callbacks and DOM). + Updated Parser/Callbacks for handle pure virtual function declarations. + Added callback support for some template declarations (not all branches). + +2003-03-28 John Camelon + Added AccessSpecifier and ClassKind to parser.util package and refactored callbacks. + Better encapsulated ExceptionSpecification in the DOM. + Updated DOM structures to return unmodifiable collections. + Added callback support for asmdefinitions. + Added callback support for constructor initializer chains. + Fixed bug 35781 and updated parser to catch all exceptions from callbacks to ensure best-effort parsing. + Removed Main.java from Parser package. + +2003-03-26 Andrew Niefer + Moved type information and ParameterInfo from Declaration into util.TypeInfo + Initial implementation of standard conversion sequences for function resolution + +2003-03-24 John Camelon + Added callback support for namespace definitions. + Updated Parser exception hierarchy. + Added callback support for linkage specifications. + Added callback support for using declarations and directives. + +2003-03-23 John Camelon + Added callback support for class member visibility. + Added callback support for pointer and reference operators on declarators. + Added callback support for throws clauses an const operations. + Added callback support for array declarators. + +2003-03-20 Andrew Niefer + Parser Symbol Table updates for: + * friends + * "this" pointer + * enumerators + * Argument dependent lookup + * adding parameters to functions & function overloading + +2003-03-19 John Camelon + Updated Parser method visibility to solidify external interface. + Solved and removed TODO's from Scanner implementation. + Updated Parser and callbacks to handle basic expressions. + +2003-03-18 John Camelon + Updated IParserCallback (and implementations) to add a typeName to DeclSpecifier. + Updated IParserCallback and NewModelBuilder to distinguish between Function declarations and definitions. + +2003-03-17 Doug Schaefer + Changed EOF to be a Backtrack exception instead of a token so simplify + error handling. + +2003-03-13 John Camelon + Moved ## token to IScanner from Scanner. + Updated IParserCallback and implementations to deal with Elaborated Type Specifiers. + Moved IScope into the internal DOM package. + +2003-03-11 John Camelon + added ChangeLog to parser directory + updated IParserCallback (and all implementors) for expressions + removed inheritance relationship between ExpressionEvaluator and NullParserCallback + removed redundant assignmentOperator() calls in Parser::initDeclarator + removed class util.DeclarationSpecifier, merged Container interface into util.DeclSpecifier + organized imports on the parser folder + * dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java + * dom/org/eclipse/cdt/internal/core/dom/Declarator.java + * dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java + * dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java + * parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java + * parser/org/eclipse/cdt/internal/core/model/Parameter.java + * parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java + * parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java + * parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java + * parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java + * parser/org/eclipse/cdt/internal/core/parser/Parser.java + * parser/org/eclipse/cdt/internal/core/parser/util/DeclSpecifier.java + +2003-03-10 John Camelon + added in support for detecting and reporting circular inclusions + added optimization by caching inclusion directories + added macro pasting capabilities + updated inclusion searching algorithm for local inclusions + +2003-03-07 John Camelon + fixed initDeclarators for the outline view. + +2003-03-06 Doug Schaefer + Some minor fixes to get constructors/destructors parsing as well as some minor clean up and robustness. + +2003-03-06 John Camelon + added quickParse heuristic to Scanner for handling #if conditionals to avoid throwing + ScannerExceptions on undefined preprocessor symbols + added minimal enum support to Parser (though not to DOM or CModel) + +2003-03-06 Andrew Niefer + Implementation of Namespaces & using directives in new parser's symbol table + +2003-03-05 Doug Schaefer + Some minor fixes to the parser. + +2003-03-04 Doug Schaefer + Added Parser in the "parser" source folder in cdt.core + Preference in the C/C++ preference page to enable/disable use of the new parser (disabled by default) + Start on the DOM which we are using to test the parser (source folder "dom") + Start on a new Model Builder for creating CElements using the new parser (currently in source folder "parser") diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/CompletionNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/CompletionNode.java new file mode 100644 index 00000000000..ed77c1d98e1 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/CompletionNode.java @@ -0,0 +1,62 @@ +/* + * Created on Dec 8, 2003 + * + * To change the template for this generated file go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +package org.eclipse.cdt.core.parser; + +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; +import org.eclipse.cdt.core.parser.ast.IASTNode; +import org.eclipse.cdt.core.parser.ast.IASTScope; + +/** + * @author jcamelon + * + * To change the template for this generated type comment go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +public class CompletionNode implements IASTCompletionNode { + + private final String prefix; + private final IASTNode context; + private final IASTScope scope; + private final CompletionKind kind; + + public CompletionNode( CompletionKind kind, IASTScope scope, IASTNode context, String prefix ) + { + this.kind = kind; + this.context = context; + this.scope = scope; + this.prefix = prefix; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTCompletionNode#getCompletionKind() + */ + public CompletionKind getCompletionKind() { + return kind; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTCompletionNode#getCompletionScope() + */ + public IASTScope getCompletionScope() { + return scope; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTCompletionNode#getCompletionContext() + */ + public IASTNode getCompletionContext() { + return context; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTCompletionNode#getCompletionPrefix() + */ + public String getCompletionPrefix() { + return prefix; + } + +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ContextualParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ContextualParser.java new file mode 100644 index 00000000000..ae9c3985858 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ContextualParser.java @@ -0,0 +1,117 @@ +/* + * Created on Dec 8, 2003 + * + * To change the template for this generated file go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +package org.eclipse.cdt.core.parser; + +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; +import org.eclipse.cdt.core.parser.ast.IASTNode; +import org.eclipse.cdt.core.parser.ast.IASTScope; +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind; +import org.eclipse.cdt.internal.core.parser.Parser; + +/** + * @author jcamelon + * + * To change the template for this generated type comment go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +public class ContextualParser extends Parser implements IParser { + + private CompletionKind kind; + private IASTScope scope; + private IASTNode context; + + /** + * @param scanner + * @param callback + * @param language + * @param log + */ + public ContextualParser(IScanner scanner, ISourceElementRequestor callback, ParserLanguage language, IParserLogService log) { + super(scanner, callback, language, log); + astFactory = ParserFactory.createASTFactory( ParserMode.COMPLETE_PARSE, language); + scanner.setASTFactory(astFactory); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int) + */ + public IASTCompletionNode parse(int offset) throws ParserNotImplementedException { + scanner.setOffsetBoundary(offset); + translationUnit(); + return new CompletionNode( getCompletionKind(), getCompletionScope(), getCompletionContext(), getCompletionPrefix() ); + } + + /** + * @return + */ + private String getCompletionPrefix() { + return lastToken == null ? "" : lastToken.getImage(); + } + + /** + * @return + */ + private IASTNode getCompletionContext() { + return context; + } + + /** + * @return + */ + private IASTScope getCompletionScope() { + return scope; + } + + /** + * @return + */ + private IASTCompletionNode.CompletionKind getCompletionKind() { + return kind; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int, int) + */ + public IASTNode parse(int startingOffset, int endingOffset) throws ParserNotImplementedException { + scanner.setOffsetBoundary(endingOffset); + translationUnit(); + return getCompletionContext(); + } + + + + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.Parser#setCurrentScope(org.eclipse.cdt.core.parser.ast.IASTScope) + */ + protected void setCurrentScope(IASTScope scope) { + this.scope = scope; + } + + protected void setCompletionContext( IASTNode node ) + { + this.context = node; + } + + protected void setCompletionKind( IASTCompletionNode.CompletionKind kind ) + { + this.kind = kind; + } + + protected void handleFunctionBody(IASTScope scope, boolean isInlineFunction) throws Backtrack, EndOfFile + { + if ( isInlineFunction ) + skipOverCompoundStatement(); + else + functionBody(scope); + } + + protected void catchBlockCompoundStatement(IASTScope scope) throws Backtrack, EndOfFile + { + compoundStatement(scope, true); + } + +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java index 6d128ee4cf5..d97a2736904 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java @@ -37,7 +37,7 @@ public interface IParser { * @param offset offset in the input file where code completion is being requested for * @return an IASTCompletionConstruct that provides a mechanism for determining C/C++ code completion contributions */ - public IASTCompletionNode parse( int offset ); + public IASTCompletionNode parse( int offset )throws ParserNotImplementedException; /** * @@ -45,7 +45,7 @@ public interface IParser { * @param endingOffset * @return */ - public IASTNode parse( int startingOffset, int endingOffset ); + public IASTNode parse( int startingOffset, int endingOffset ) throws ParserNotImplementedException; /** diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java index be90b43f2b2..c12ec471a4d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.core.parser; import java.io.Reader; import org.eclipse.cdt.core.parser.ast.IASTFactory; +import org.eclipse.cdt.internal.core.parser.*; import org.eclipse.cdt.internal.core.parser.CompleteParser; import org.eclipse.cdt.internal.core.parser.LineOffsetReconciler; import org.eclipse.cdt.internal.core.parser.Preprocessor; @@ -46,6 +47,10 @@ public class ParserFactory { ISourceElementRequestor ourCallback = (( callback == null) ? new NullSourceElementRequestor() : callback ); if( ourMode == ParserMode.COMPLETE_PARSE) return new CompleteParser( scanner, ourCallback, language, logService ); + else if( ourMode == ParserMode.STRUCTURAL_PARSE ) + return new StructuralParser( scanner, ourCallback, language, logService ); + else if( ourMode == ParserMode.CONTEXTUAL_PARSE ) + return new ContextualParser( scanner, ourCallback, language, logService ); else return new QuickParser( scanner, ourCallback, language, logService ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserMode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserMode.java index 8b90d878129..e2d9e320598 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserMode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserMode.java @@ -19,8 +19,14 @@ public class ParserMode extends Enum { // follow inclusions, parse function/method bodies public static final ParserMode COMPLETE_PARSE = new ParserMode( 1 ); + // follow inclusions, do not parse function/method bodies + public static final ParserMode STRUCTURAL_PARSE = new ParserMode( 2 ); + // do not follow inclusions, do not parse function/method bodies - public static final ParserMode QUICK_PARSE = new ParserMode( 2 ); + public static final ParserMode QUICK_PARSE = new ParserMode( 3 ); + + // follow inclusions, parse function/method bodies, stop at particular offset + public static final ParserMode CONTEXTUAL_PARSE = new ParserMode( 4 ); protected ParserMode( int value ) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserNotImplementedException.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserNotImplementedException.java new file mode 100644 index 00000000000..010cefac206 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserNotImplementedException.java @@ -0,0 +1,17 @@ +/* + * Created on Dec 8, 2003 + * + * To change the template for this generated file go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +package org.eclipse.cdt.core.parser; + +/** + * @author jcamelon + * + * To change the template for this generated type comment go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +public class ParserNotImplementedException extends Exception { + +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTCompletionNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTCompletionNode.java index a9c7d696b64..3bf85ab7cf2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTCompletionNode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTCompletionNode.java @@ -49,7 +49,26 @@ public interface IASTCompletionNode { } - public CompletionKind getCompletionKind(); + /** + * @return kind of completion expected + */ + public CompletionKind getCompletionKind(); + + /** + * @return the scope the code completion is within + * should never be null + */ + public IASTScope getCompletionScope(); + + /** + * @return the context (inter-statement) + * e.g. LHS of postfix expression a->b, a.b or qualified name a::b is 'a' + * this can be null + */ public IASTNode getCompletionContext(); + + /** + * @return the prefix + */ public String getCompletionPrefix(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/CompleteParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/CompleteParser.java index f7aa9750b7d..c6fa07e640f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/CompleteParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/CompleteParser.java @@ -14,6 +14,9 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor; import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; +import org.eclipse.cdt.core.parser.ParserNotImplementedException; +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; +import org.eclipse.cdt.core.parser.ast.IASTNode; import org.eclipse.cdt.core.parser.ast.IASTScope; /** @@ -49,5 +52,19 @@ public class CompleteParser extends Parser { { compoundStatement(scope, true); } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int) + */ + public IASTCompletionNode parse(int offset) throws ParserNotImplementedException { + throw new ParserNotImplementedException(); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int, int) + */ + public IASTNode parse(int startingOffset, int endingOffset) throws ParserNotImplementedException { + throw new ParserNotImplementedException(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index 2f3e8e4a289..87e2056f006 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -73,13 +73,13 @@ public abstract class Parser implements IParser private static final List EMPTY_LIST = new ArrayList(); private static int DEFAULT_OFFSET = -1; // sentinel initial value for offsets - private int firstErrorOffset = DEFAULT_OFFSET; + protected int firstErrorOffset = DEFAULT_OFFSET; // offset where the first parse error occurred // are we doing the high-level parse, or an in depth parse? - private boolean parsePassed = true; // did the parse pass? - private ParserLanguage language = ParserLanguage.CPP; // C or CPP - private ISourceElementRequestor requestor = null; + protected boolean parsePassed = true; // did the parse pass? + protected ParserLanguage language = ParserLanguage.CPP; // C or CPP + protected ISourceElementRequestor requestor = null; // new callback mechanism protected IASTFactory astFactory = null; // ast factory /** @@ -143,7 +143,8 @@ public abstract class Parser implements IParser + (parsePassed ? "" : " - parse failure") ); return parsePassed; } - + + /** * This is the top-level entry point into the ANSI C++ grammar. * @@ -703,6 +704,7 @@ public abstract class Parser implements IParser IASTTemplate ownerTemplate) throws Backtrack { + setCurrentScope(scope); switch (LT(1)) { case IToken.t_asm : @@ -5095,17 +5097,23 @@ public abstract class Parser implements IParser } } } + // the static instance we always use private static Backtrack backtrack = new Backtrack(); // the static instance we always use public static EndOfFile endOfFile = new EndOfFile(); // Token management - private IScanner scanner; - private IToken currToken, // current token we plan to consume next + + protected IScanner scanner; + protected IToken currToken, // current token we plan to consume next lastToken; // last token we consumed private int highWaterOffset = 0; + protected void setCurrentScope( IASTScope scope ) + { + } + /** * Fetches a token from the scanner. * @@ -5239,20 +5247,12 @@ public abstract class Parser implements IParser { return firstErrorOffset; } - - /* (non-Javadoc) - * @see org.eclipse.cdt.core.parser.IParser#parse(int) - */ - public IASTCompletionNode parse(int offset) { - // TODO Auto-generated method stub - return null; - } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.parser.IParser#parse(int, int) - */ - public IASTNode parse(int startingOffset, int endingOffset) { - // TODO Auto-generated method stub - return null; - } - + + protected void setCompletionContext( IASTNode node ) + { + } + + protected void setCompletionKind( IASTCompletionNode.CompletionKind kind ) + { + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParser.java index 3cdf6a5ea28..571ac18a988 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParser.java @@ -14,6 +14,9 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor; import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; +import org.eclipse.cdt.core.parser.ParserNotImplementedException; +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; +import org.eclipse.cdt.core.parser.ast.IASTNode; import org.eclipse.cdt.core.parser.ast.IASTScope; /** @@ -47,4 +50,19 @@ public class QuickParser extends Parser { skipOverCompoundStatement(); } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int) + */ + public IASTCompletionNode parse(int offset) throws ParserNotImplementedException { + throw new ParserNotImplementedException(); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int, int) + */ + public IASTNode parse(int startingOffset, int endingOffset) throws ParserNotImplementedException { + throw new ParserNotImplementedException(); + } + + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java index 707837e76dc..18bce47a102 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java @@ -2351,7 +2351,7 @@ public class Scanner implements IScanner { Object newDefinition, int beginningOffset ) throws ScannerException { - if( mode == ParserMode.COMPLETE_PARSE && previousDefinition != null ) + if( mode != ParserMode.QUICK_PARSE && previousDefinition != null ) { if( newDefinition instanceof IMacroDescriptor ) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/StructuralParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/StructuralParser.java new file mode 100644 index 00000000000..332adc07fb4 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/StructuralParser.java @@ -0,0 +1,76 @@ +/* + * Created on Dec 8, 2003 + * + * To change the template for this generated file go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +package org.eclipse.cdt.internal.core.parser; + +import org.eclipse.cdt.core.parser.Backtrack; +import org.eclipse.cdt.core.parser.EndOfFile; +import org.eclipse.cdt.core.parser.IParser; +import org.eclipse.cdt.core.parser.IParserLogService; +import org.eclipse.cdt.core.parser.IScanner; +import org.eclipse.cdt.core.parser.ISourceElementRequestor; +import org.eclipse.cdt.core.parser.ParserFactory; +import org.eclipse.cdt.core.parser.ParserLanguage; +import org.eclipse.cdt.core.parser.ParserMode; +import org.eclipse.cdt.core.parser.ParserNotImplementedException; +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; +import org.eclipse.cdt.core.parser.ast.IASTNode; +import org.eclipse.cdt.core.parser.ast.IASTScope; + +/** + * @author jcamelon + * + * To change the template for this generated type comment go to + * Window - Preferences - Java - Code Generation - Code and Comments + */ +public class StructuralParser extends Parser implements IParser { + + /** + * @param scanner + * @param ourCallback + * @param language + * @param logService + */ + public StructuralParser(IScanner scanner, ISourceElementRequestor ourCallback, ParserLanguage language, IParserLogService logService) { + super(scanner, ourCallback, language, logService); + astFactory = ParserFactory.createASTFactory( ParserMode.COMPLETE_PARSE, language); + scanner.setASTFactory(astFactory); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.Parser#handleFunctionBody(org.eclipse.cdt.core.parser.ast.IASTScope, boolean) + */ + protected void handleFunctionBody( + IASTScope scope, + boolean isInlineFunction) + throws Backtrack, EndOfFile { + skipOverCompoundStatement(); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.Parser#catchBlockCompoundStatement(org.eclipse.cdt.core.parser.ast.IASTScope) + */ + protected void catchBlockCompoundStatement(IASTScope scope) + throws Backtrack, EndOfFile { + skipOverCompoundStatement(); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int) + */ + public IASTCompletionNode parse(int offset) throws ParserNotImplementedException { + throw new ParserNotImplementedException(); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.IParser#parse(int, int) + */ + public IASTNode parse(int startingOffset, int endingOffset) throws ParserNotImplementedException { + throw new ParserNotImplementedException(); + } + + +}