diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog-parser b/core/org.eclipse.cdt.core/parser/ChangeLog-parser index 3c689f6d425..8aeeea47415 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog-parser +++ b/core/org.eclipse.cdt.core/parser/ChangeLog-parser @@ -1,1111 +1,1115 @@ -2004-02-12 Andrew Niefer - Fixed up symbol table handling of const & volatile - fixed bug 47628 - signed char is parsed as char - fixed bug 47636 - char* and char[] are treated as different types - fixed bug 45697 - Parser/Symbol table: Mismatched declaration & definition - -2004-02-12 John Camelon - Removed IASTCompletionKind.SCOPED_REFERENCE as it was obsolete. - Did preliminary work to support content assist within qualified names. - -2004-02-11 John Camelon - Restructured Parser implementation to allow for better support of Selection Search. - Restructured Parser implementation to allow for separation between parsing expressions (Scanner) and complete C/C++ source. - -2004-02-10 John Camelon - Workaround for Bug 51502 - Parser spins on particular file (Scalability) - -2004-02-10 Andrew Niefer - Templates in the symbol table (org.eclipse.cdt.internal.core.parser.pst) - ITemplateFactory.java - ITemplateSymbol.java - DeferredTemplateInstance.java - ParserSymbolTableError.java - TemplateEngine.java - TemplateFactory.java - TemplateSymbol.java - Most of the other main symbol table files (BasicSymbol, ContainerSymbol, etc) were modified - -2004-02-10 John Camelon - Fixed Bug 51302 - Content Assist: No completion list available following namespace declaration. - -2004-02-10 John Camelon - Refactored Parser.java to allow inline small functions and tightened the signatures for statement(). - Refactored Scanner.java to allow for data to be encapsulated to allow for IScannerExtension to act upon it. - Partially fixed Bug 47628 - signed char is parsed as char (affects the outline view) - -2004-02-08 John Camelon - Added support for inline method x-references. - Fixed Bug 44340 - Inline functions fail to resolve references - Fixed Bug 51243 - Content Assist in an empty document causes a NPE - -2004-02-06 Andrew Niefer - fixed bug51260 - Content Assist: Completion inside a class method silently fails with a ClassCastException - filter symbols without attached AST nodes out of the completion results so the iterator doesn't sometimes return null. - -2004-02-04 John Camelon - Added preliminary (crude) bSelectionParser IParser implementation for SELECTION_PARSE clients. - -2004-02-01 John Camelon - Added CompletionKind.UNREACHABLE_CODE to IASTCompletionNode. - Updated Scanner to handle unreachable code scenarios in content assist. - Added Directives class to centralize preprocessor directive strings. - Added keyword completion for preprocessor lines that start with #. - -2004-01-30 John Camelon - Partial fix for Bug 47752 - Outline does not recognize functions with full body try/catch blocks - -2004-01-30 John Camelon - Updated Scanner to allow for more robust completion in #if directives. - -2004-01-30 John Camelon - Fixed Bug 50487 - Wrong completion kind and prefix after "#ifdef" - -2004-01-29 Hoda Amer - Removed CompletionKind.KEYWORD. - -2004-01-29 John Camelon - Fixed 50642 - Wrong completion kind when declaring an argument type - Updated using declarations for more accurate keywords and closure. - -2004-01-29 Hoda Amer - Put CompletionKind.FUNCTION_REFERENCE back. - -2004-01-28 John Camelon - Fixed Bug 50821 - Freezes when opening / saving .c file - -2004-01-28 John Camelon - Fixed Bug 50711 - Wrong completion kind in a new expression - -2004-01-28 John Camelon - Updated Scanner to add ANSI built-in defined macros for C and C++. - Updated GCCScannerExtension to add GCC specific defined macros for C++. - Added factory infrastructure to allow for C/C++ dialect extensions to be added and contained. - Added IASTExpressionExtension w/implementation to allow for GCC specific leniency on evaluating expressions. - -2004-01-28 Andrew Niefer - Fixed bug#50729: Visibility is incorrectly decided in inheritance - -2004-01-27 John Camelon - Refactored parser to allow for cleaner content assist implementation. - Removed IASTCompletionNode.CompletionKind.STATEMENT_START as it is redundant. - Fixed bug 50640 - Wrong completion kind when expecting an exception - Fixed bug 50471 - Wrong completion kind after the "using" keyword - Fixed bug 50621 - Wrong completion kind in a class declaration - -2004-01-17 Hoda Amer - Added IASTCompletionNode.CompletionKind.New_Type_Reference - for a completion kind after a new expression. - -2004-01-27 Andrew Niefer - Updates to handle _Bool - - modified CompleteParseASTFactory.getParameterTypeInfo - CompleteParseASTFactory.createReference - CompleteParseASTFactory.usualArithmeticConversions - CompleteParseASTFactory.getTypeKind - Parser.typeId - TypeFilter.shouldAccept - TypeInfo.equals - -2004-01-26 John Camelon - Added traceLogs into Scanner. - Fixed Bug 46402 : expression evaluation error on branch not taken - Added beginning of IScannerExtension and GCCScannerExtension support for gcc specific aspects. - Added separate Scanner log category for tracing and updated clients to use it. - -2004-01-26 Andrew Niefer - Handle the C types _Complex, _Imaginary, _Bool, & long long int: - modified ParserSymbolTable.promotion() & conversion() - added TypeInfo.isLongLong - modified TypeInfo.canHold() - -2004-01-23 John Camelon - Added support for content assist in the scanner.. - -2004-01-22 John Camelon - Added token, scanner and problem subpackages to org.eclipse.cdt.internal.core.parser. - -2004-01-22 Hoda Amer - Solved a small problem in the ASTCompleteParseASTFactory sent to me by Dave. - -2004-01-20 John Camelon - Added traceLog() call into Scanner.handleProblem() and updated ParserFactory.createPreprocessor() for extra error handling. - -2004-01-20 John Camelon - Tidied up Scanner implementation for unused fields, inefficient String manipulations and redundant parameters. - -2004-01-19 John Camelon - Added IToken.getLineNumber() to facilitate adding line numbers to AST. - Added line number support into IASTOffsetableElement. Updated all implementations to use this. - Updated Parser and IASTFactory to populate IASTOffsetableElement with the values retrieved from IToken. - Removed IScanner.getLineNumberForOffset(). - -2004-01-16 Andrew Niefer - Created IExtensibleSymbol, which is a new base class for the symbol interfaces - Created IUsingDirectiveSymbol and UsingDirectiveSymbol - Modified ASTUsingDirective to use IUsingDirectiveSymbol - Modified CompleteParseASTFactory.createUsingDirective - Added IContainerSymbol.getContentsIterator() - Implemented getContentsIterator in ContainerSymbol - -2004-01-16 John Camelon - Changed IASTNode.LookupException to IASTNode.LookupError. - Updated IASTElaboratedTypeSpecifier to remove redundant extends relationships. - -2004-01-15 Andrew Niefer - Modified symbol table constructor to take a ParseMode as a parameter. - Modified symbol table to use a TreeMap instead of HashMap when ParseMode is CONTEXTUAL_PARSE - Modified ASTNode.lookup to throw ASTNotImplementedException if called when ParseMode is not CONTEXTUAL_PARSE - -2004-01-15 Hoda Amer - -2004-01-15 John Camelon - Renamed IASTNode.LookupResult IASTNode.ILookupResult. - Introduced new ParseError exception for contextual parse() methods. - Renamed ParserFactoryException ParserFactoryError. - Replaced ParserNotImplementedException with a variant of ParseError. - Updated IScanner & IParser to not reference OffsetLimitReachedException explicitly. - Renamed ParserMode.CONTEXTUAL_PARSE to COMPLETION_PARSE. - Cleaned up IMacroDescriptor and made Scanner definitions table consistent. - Added IScanner.getDefinitions() to return the entire Map of definitions to a client. - Removed most of the warnings from parser source directory. - Removed the unused SyntaxErrorException. - Provided partial fix for Bug 44370 IASTMacro requires more information for clients. - -2004-01-12 John Camelon - Fixed bug 48909 - Wrong completion node after a . or an -> - Fixed bug 49702 - Wrong completion kind sent in const/dest and code blocks - Added new CompletionKind - STATEMENT_START to indicate the beginning of a statement line. - -2004-01-08 Andrew Niefer - fixing bug 43110 - Parser support needed for functions with ellipses - Added IParameterizedSymbol.setHasVariableArgs() & hasVariableArgs() - Modified ParserSymbolTable.resolveFunction & reduceToViable - Modified CompleteParseASTFactory.createMethod & createFunction - -2004-01-08 Andrew Niefer - Fixing 48307 - PST: Friendship needs to be handled better - Added IDerivableContainerSymbol.lookupFunctionForFriendship. - Modified IASTFactory.createMethod to take an ITokenDuple for the method name. - Added LookupType.FORFRIENDSHIP and use it in LookupElement. - Modified CompleteParseASTFactory.createMethod to handle friend functions. - -2004-01-06 Andrew Niefer - For Content Assist, support lookup using LookupKind.THIS (lookup in the class of the this pointer ) - Fix bug where forward declared method/functions appeared twice in the content assist lookup results. - -2004-01-06 John Camelon - Renamed IToken::tELIPSE to IToken::tELLIPSIS - Partially fixed Bug 43110 : Parser support needed for functions with ellipses - -2004-01-05 John Camelon - Removed warnings. - Moved StructuralParseCallback from model to parser directory to facilitate building the parser standalone. - -2003-12-31 Hoda Amer - - Changed ASTUtil.getType to include parameter initializer clause in returned string. - -2003-12-22 Hoda Amer - Content Assist Work : Returned the results size of the IASTNode lookup - to help in determining the scope relevance - - Added the variable type to a search match result to be compatible with the - results found by the completion engine - -2003-12-17 Andrew Niefer - Content Assist work: - - change parser & symbol table to handle handle friend classes - - change visibility filtering to check for friendship - - fix finding function parameters in prefix lookup - -2003-12-17 Hoda Amer - Content Assist work : Integrated with Parser and Symbol table modifications - -2003-12-15 Andrew Niefer - Changed IASTNode.lookup to take the context as a parameter - created ASTNode to implement IASTNode, ASTSymbolOwner extends it. - Set Completion Scope for statements - Set Completion context for . and -> expressions - -2003-12-15 Hoda Amer - Fixed [Bug 47234] new ParserMode required for a better CModel : - - Added a core plugin preference to build the CModel in Structural mode - - Added StructuralParseCallBack class - - Added lists of declarations to AST Scopes in the complete AST - -2003-12-12 John Camelon - Added preliminary keyword support into IASTCompletionNode::getKeywords(). - Refactored parser to put keyword string literals in one utility class. - -2003-12-11 John Camelon - Added OffsetLimitReachedException and restructured Parser exceptions. - Continued support for code assist/selection search parser. - Ensured all source in parser/ have copyright notices. - -2003-12-09 Andrew Niefer - -created TypeFilter to support support filtering of what kind of symbols to find (for prefix lookup 48306) - -added IContainerSymbol.isVisible for bug 48294 - -2003-12-09 Hoda Amer - Modified IASTCompletionNode.CompletionKind - modified IASTNode.LookupKind - Changed IASTScope to extend IASTNode - -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") +2004-02-16 Andrew Niefer + bug 52120 document symbol table use of ParserSymbolTableException + also clean up a couple of exceptions + +2004-02-12 Andrew Niefer + Fixed up symbol table handling of const & volatile + fixed bug 47628 - signed char is parsed as char + fixed bug 47636 - char* and char[] are treated as different types + fixed bug 45697 - Parser/Symbol table: Mismatched declaration & definition + +2004-02-12 John Camelon + Removed IASTCompletionKind.SCOPED_REFERENCE as it was obsolete. + Did preliminary work to support content assist within qualified names. + +2004-02-11 John Camelon + Restructured Parser implementation to allow for better support of Selection Search. + Restructured Parser implementation to allow for separation between parsing expressions (Scanner) and complete C/C++ source. + +2004-02-10 John Camelon + Workaround for Bug 51502 - Parser spins on particular file (Scalability) + +2004-02-10 Andrew Niefer + Templates in the symbol table (org.eclipse.cdt.internal.core.parser.pst) + ITemplateFactory.java + ITemplateSymbol.java + DeferredTemplateInstance.java + ParserSymbolTableError.java + TemplateEngine.java + TemplateFactory.java + TemplateSymbol.java + Most of the other main symbol table files (BasicSymbol, ContainerSymbol, etc) were modified + +2004-02-10 John Camelon + Fixed Bug 51302 - Content Assist: No completion list available following namespace declaration. + +2004-02-10 John Camelon + Refactored Parser.java to allow inline small functions and tightened the signatures for statement(). + Refactored Scanner.java to allow for data to be encapsulated to allow for IScannerExtension to act upon it. + Partially fixed Bug 47628 - signed char is parsed as char (affects the outline view) + +2004-02-08 John Camelon + Added support for inline method x-references. + Fixed Bug 44340 - Inline functions fail to resolve references + Fixed Bug 51243 - Content Assist in an empty document causes a NPE + +2004-02-06 Andrew Niefer + fixed bug51260 - Content Assist: Completion inside a class method silently fails with a ClassCastException + filter symbols without attached AST nodes out of the completion results so the iterator doesn't sometimes return null. + +2004-02-04 John Camelon + Added preliminary (crude) bSelectionParser IParser implementation for SELECTION_PARSE clients. + +2004-02-01 John Camelon + Added CompletionKind.UNREACHABLE_CODE to IASTCompletionNode. + Updated Scanner to handle unreachable code scenarios in content assist. + Added Directives class to centralize preprocessor directive strings. + Added keyword completion for preprocessor lines that start with #. + +2004-01-30 John Camelon + Partial fix for Bug 47752 - Outline does not recognize functions with full body try/catch blocks + +2004-01-30 John Camelon + Updated Scanner to allow for more robust completion in #if directives. + +2004-01-30 John Camelon + Fixed Bug 50487 - Wrong completion kind and prefix after "#ifdef" + +2004-01-29 Hoda Amer + Removed CompletionKind.KEYWORD. + +2004-01-29 John Camelon + Fixed 50642 - Wrong completion kind when declaring an argument type + Updated using declarations for more accurate keywords and closure. + +2004-01-29 Hoda Amer + Put CompletionKind.FUNCTION_REFERENCE back. + +2004-01-28 John Camelon + Fixed Bug 50821 - Freezes when opening / saving .c file + +2004-01-28 John Camelon + Fixed Bug 50711 - Wrong completion kind in a new expression + +2004-01-28 John Camelon + Updated Scanner to add ANSI built-in defined macros for C and C++. + Updated GCCScannerExtension to add GCC specific defined macros for C++. + Added factory infrastructure to allow for C/C++ dialect extensions to be added and contained. + Added IASTExpressionExtension w/implementation to allow for GCC specific leniency on evaluating expressions. + +2004-01-28 Andrew Niefer + Fixed bug#50729: Visibility is incorrectly decided in inheritance + +2004-01-27 John Camelon + Refactored parser to allow for cleaner content assist implementation. + Removed IASTCompletionNode.CompletionKind.STATEMENT_START as it is redundant. + Fixed bug 50640 - Wrong completion kind when expecting an exception + Fixed bug 50471 - Wrong completion kind after the "using" keyword + Fixed bug 50621 - Wrong completion kind in a class declaration + +2004-01-17 Hoda Amer + Added IASTCompletionNode.CompletionKind.New_Type_Reference + for a completion kind after a new expression. + +2004-01-27 Andrew Niefer + Updates to handle _Bool + - modified CompleteParseASTFactory.getParameterTypeInfo + CompleteParseASTFactory.createReference + CompleteParseASTFactory.usualArithmeticConversions + CompleteParseASTFactory.getTypeKind + Parser.typeId + TypeFilter.shouldAccept + TypeInfo.equals + +2004-01-26 John Camelon + Added traceLogs into Scanner. + Fixed Bug 46402 : expression evaluation error on branch not taken + Added beginning of IScannerExtension and GCCScannerExtension support for gcc specific aspects. + Added separate Scanner log category for tracing and updated clients to use it. + +2004-01-26 Andrew Niefer + Handle the C types _Complex, _Imaginary, _Bool, & long long int: + modified ParserSymbolTable.promotion() & conversion() + added TypeInfo.isLongLong + modified TypeInfo.canHold() + +2004-01-23 John Camelon + Added support for content assist in the scanner.. + +2004-01-22 John Camelon + Added token, scanner and problem subpackages to org.eclipse.cdt.internal.core.parser. + +2004-01-22 Hoda Amer + Solved a small problem in the ASTCompleteParseASTFactory sent to me by Dave. + +2004-01-20 John Camelon + Added traceLog() call into Scanner.handleProblem() and updated ParserFactory.createPreprocessor() for extra error handling. + +2004-01-20 John Camelon + Tidied up Scanner implementation for unused fields, inefficient String manipulations and redundant parameters. + +2004-01-19 John Camelon + Added IToken.getLineNumber() to facilitate adding line numbers to AST. + Added line number support into IASTOffsetableElement. Updated all implementations to use this. + Updated Parser and IASTFactory to populate IASTOffsetableElement with the values retrieved from IToken. + Removed IScanner.getLineNumberForOffset(). + +2004-01-16 Andrew Niefer + Created IExtensibleSymbol, which is a new base class for the symbol interfaces + Created IUsingDirectiveSymbol and UsingDirectiveSymbol + Modified ASTUsingDirective to use IUsingDirectiveSymbol + Modified CompleteParseASTFactory.createUsingDirective + Added IContainerSymbol.getContentsIterator() + Implemented getContentsIterator in ContainerSymbol + +2004-01-16 John Camelon + Changed IASTNode.LookupException to IASTNode.LookupError. + Updated IASTElaboratedTypeSpecifier to remove redundant extends relationships. + +2004-01-15 Andrew Niefer + Modified symbol table constructor to take a ParseMode as a parameter. + Modified symbol table to use a TreeMap instead of HashMap when ParseMode is CONTEXTUAL_PARSE + Modified ASTNode.lookup to throw ASTNotImplementedException if called when ParseMode is not CONTEXTUAL_PARSE + +2004-01-15 Hoda Amer + +2004-01-15 John Camelon + Renamed IASTNode.LookupResult IASTNode.ILookupResult. + Introduced new ParseError exception for contextual parse() methods. + Renamed ParserFactoryException ParserFactoryError. + Replaced ParserNotImplementedException with a variant of ParseError. + Updated IScanner & IParser to not reference OffsetLimitReachedException explicitly. + Renamed ParserMode.CONTEXTUAL_PARSE to COMPLETION_PARSE. + Cleaned up IMacroDescriptor and made Scanner definitions table consistent. + Added IScanner.getDefinitions() to return the entire Map of definitions to a client. + Removed most of the warnings from parser source directory. + Removed the unused SyntaxErrorException. + Provided partial fix for Bug 44370 IASTMacro requires more information for clients. + +2004-01-12 John Camelon + Fixed bug 48909 - Wrong completion node after a . or an -> + Fixed bug 49702 - Wrong completion kind sent in const/dest and code blocks + Added new CompletionKind - STATEMENT_START to indicate the beginning of a statement line. + +2004-01-08 Andrew Niefer + fixing bug 43110 - Parser support needed for functions with ellipses + Added IParameterizedSymbol.setHasVariableArgs() & hasVariableArgs() + Modified ParserSymbolTable.resolveFunction & reduceToViable + Modified CompleteParseASTFactory.createMethod & createFunction + +2004-01-08 Andrew Niefer + Fixing 48307 - PST: Friendship needs to be handled better + Added IDerivableContainerSymbol.lookupFunctionForFriendship. + Modified IASTFactory.createMethod to take an ITokenDuple for the method name. + Added LookupType.FORFRIENDSHIP and use it in LookupElement. + Modified CompleteParseASTFactory.createMethod to handle friend functions. + +2004-01-06 Andrew Niefer + For Content Assist, support lookup using LookupKind.THIS (lookup in the class of the this pointer ) + Fix bug where forward declared method/functions appeared twice in the content assist lookup results. + +2004-01-06 John Camelon + Renamed IToken::tELIPSE to IToken::tELLIPSIS + Partially fixed Bug 43110 : Parser support needed for functions with ellipses + +2004-01-05 John Camelon + Removed warnings. + Moved StructuralParseCallback from model to parser directory to facilitate building the parser standalone. + +2003-12-31 Hoda Amer + - Changed ASTUtil.getType to include parameter initializer clause in returned string. + +2003-12-22 Hoda Amer + Content Assist Work : Returned the results size of the IASTNode lookup + to help in determining the scope relevance + - Added the variable type to a search match result to be compatible with the + results found by the completion engine + +2003-12-17 Andrew Niefer + Content Assist work: + - change parser & symbol table to handle handle friend classes + - change visibility filtering to check for friendship + - fix finding function parameters in prefix lookup + +2003-12-17 Hoda Amer + Content Assist work : Integrated with Parser and Symbol table modifications + +2003-12-15 Andrew Niefer + Changed IASTNode.lookup to take the context as a parameter + created ASTNode to implement IASTNode, ASTSymbolOwner extends it. + Set Completion Scope for statements + Set Completion context for . and -> expressions + +2003-12-15 Hoda Amer + Fixed [Bug 47234] new ParserMode required for a better CModel : + - Added a core plugin preference to build the CModel in Structural mode + - Added StructuralParseCallBack class + - Added lists of declarations to AST Scopes in the complete AST + +2003-12-12 John Camelon + Added preliminary keyword support into IASTCompletionNode::getKeywords(). + Refactored parser to put keyword string literals in one utility class. + +2003-12-11 John Camelon + Added OffsetLimitReachedException and restructured Parser exceptions. + Continued support for code assist/selection search parser. + Ensured all source in parser/ have copyright notices. + +2003-12-09 Andrew Niefer + -created TypeFilter to support support filtering of what kind of symbols to find (for prefix lookup 48306) + -added IContainerSymbol.isVisible for bug 48294 + +2003-12-09 Hoda Amer + Modified IASTCompletionNode.CompletionKind + modified IASTNode.LookupKind + Changed IASTScope to extend IASTNode + +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/internal/core/parser/ast/complete/CompleteParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java index 0aea6ad95f3..9913a0b4e4f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java @@ -29,7 +29,6 @@ import org.eclipse.cdt.core.parser.ast.ASTSemanticException; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration; import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration; -import org.eclipse.cdt.core.parser.ast.IASTArrayModifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCodeScope; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; @@ -2622,12 +2621,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto throw new ASTSemanticException(); } } else if( isFriend ){ - try { - ((IDerivableContainerSymbol)currentScopeSymbol).addFriend( checkSymbol ); - } catch (ParserSymbolTableException e1) { - throw new ASTSemanticException(); - } - + ((IDerivableContainerSymbol)currentScopeSymbol).addFriend( checkSymbol ); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/DerivableContainerSymbol.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/DerivableContainerSymbol.java index fc2c3d92a73..5dd17ed6941 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/DerivableContainerSymbol.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/DerivableContainerSymbol.java @@ -173,7 +173,12 @@ public class DerivableContainerSymbol extends ContainerSymbol implements IDeriva TypeInfo param = new TypeInfo( TypeInfo.t_type, TypeInfo.isConst, this, new TypeInfo.PtrOp( TypeInfo.PtrOp.t_reference, false, false ), false ); parameters.add( param ); - IParameterizedSymbol constructor = lookupConstructor( parameters ); + IParameterizedSymbol constructor = null; + try{ + constructor = lookupConstructor( parameters ); + } catch ( ParserSymbolTableException e ){ + + } if( constructor == null ){ constructor = getSymbolTable().newParameterizedSymbol( getName(), TypeInfo.t_constructor ); @@ -280,7 +285,7 @@ public class DerivableContainerSymbol extends ContainerSymbol implements IDeriva * TODO: if/when the parser symbol table starts caring about visibility * (public/protected/private) we will need to do more to record friendship. */ - public void addFriend( ISymbol friend ) throws ParserSymbolTableException{ + public void addFriend( ISymbol friend ){ //is this symbol already in the table? IContainerSymbol containing = friend.getContainingSymbol(); if( containing == null ){ @@ -292,7 +297,10 @@ public class DerivableContainerSymbol extends ContainerSymbol implements IDeriva friend.setIsInvisible( true ); friend.setIsForwardDeclaration( true ); - enclosing.addSymbol( friend ); + try { + enclosing.addSymbol( friend ); + } catch (ParserSymbolTableException e) { + } } getFriends().add( friend ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IContainerSymbol.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IContainerSymbol.java index cd657f115cc..d9ad7bbfbe9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IContainerSymbol.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IContainerSymbol.java @@ -26,19 +26,73 @@ import java.util.Map; */ public interface IContainerSymbol extends ISymbol { + /** + * Add a symbol to this container + * @param symbol + * @throws ParserSymbolTableException + * Reason : r_BadTemplate if (14-2) the symbol is a template declaration is outside a namespace or class scope + * or if (14.5.2-3) the symbol is a member function template and is virtual + * r_RedeclaredTemplateParam if (14.6.1-4) a template parameter is redeclared in its scope + * r_InvalidOverload if there already exists a symbol with the same name and the new symbol does not + * hide the first symbol (3.3.7) or is not a valid function overload (3.4-1) + */ public void addSymbol( ISymbol symbol ) throws ParserSymbolTableException; public boolean hasUsingDirectives(); public List getUsingDirectives(); + + /** + * Add a using directive to this symbol + * @param namespace + * @return + * @throws ParserSymbolTableException + * Reason: r_InvalidUsing if (7.3.4) the using directive appears in class scope + * or if the symbol being added is not a namespace + */ public IUsingDirectiveSymbol addUsingDirective( IContainerSymbol namespace ) throws ParserSymbolTableException; + /** + * Add a using declaration to this symbol + * @param name + * @return + * @throws ParserSymbolTableException + * Reason: r_InvalidUsing if (7.3.3-5) the name is a template-id + * or if (7.3.3-4) this using declaration is a member declaration and the name is not a + * member of a base class, or an anonymous union that is a member of a base class, or + * an enumerator for an enumeration which is a member of a base class + * or if the name specified can not be found + * r_Ambiguous if more than one symbol with the given name is found and we can't resolve which one to use + * r_BadTypeInfo if during lookup of the name, we come across a class inheriting from a symbol which is not an + * IDerivableContainerSymbol + * r_CircularInheritance if during lookup of the name, we come across a class with a circular inheritance tree + */ public ISymbol addUsingDeclaration( String name ) throws ParserSymbolTableException; public ISymbol addUsingDeclaration( String name, IContainerSymbol declContext ) throws ParserSymbolTableException; public Map getContainedSymbols(); + /** + * Lookup symbols matching the given prefix + * @param filter + * @param prefix + * @param qualified + * @return + * @throws ParserSymbolTableException + * Reason: r_BadTypeInfo if during lookup, we come across a class inheriting from a symbol which is not an + * IDerivableContainerSymbol + * r_CircularInheritance if during lookup, we come across a class with a circular inheritance tree + */ public List prefixLookup( TypeFilter filter, String prefix, boolean qualified ) throws ParserSymbolTableException; + /** + * Lookups + * @throws ParserSymbolTableException + * Reason: r_Ambiguous if more than one symbol with the given name is found and we can't resolve which one to use + * r_UnableToResolveFunction if an overloaded function is found and no parameter information has been provided + * r_BadTypeInfo if during lookup of the name, we come across a class inheriting from a symbol which is not an + * IDerivableContainerSymbol + * r_CircularInheritance if during lookup of the name, we come across a class with a circular inheritance tree + */ public ISymbol elaboratedLookup( TypeInfo.eType type, String name ) throws ParserSymbolTableException; public ISymbol lookup( String name ) throws ParserSymbolTableException; public ISymbol lookupMemberForDefinition( String name ) throws ParserSymbolTableException; @@ -50,8 +104,29 @@ public interface IContainerSymbol extends ISymbol { public IParameterizedSymbol memberFunctionLookup( String name, List parameters ) throws ParserSymbolTableException; public IParameterizedSymbol qualifiedFunctionLookup( String name, List parameters ) throws ParserSymbolTableException; + /** + * + * @param name + * @param arguments + * @return + * @throws ParserSymbolTableException + * In addition to the above lookup reasons, the following also can happen in lookupTemplate + * r_Ambiguous if (14.5.4.1) more than one specialization can be used and none is more specializaed than all the others + * r_BadTemplateArgument if (14.3.1, 14.3.2) a template argument is invalid + */ public ISymbol lookupTemplate( String name, List arguments ) throws ParserSymbolTableException; + /** + * + * @param name + * @param templateParameters + * @param templateArguments + * @return + * @throws ParserSymbolTableException + * In addition to the Exception thrown in lookup functions, and lookupTemplate, lookupTemplateForMemberDefinition can also throw: + * r_BadTemplateParameter if (14.5.1-3) the parameters provided can't be matched up to a template declaration + * r_BadTemplate if the parameter and argument list can't be resolved to either the template or a specialization + */ public ITemplateFactory lookupTemplateForMemberDefinition( String name, List templateParameters, List templateArguments ) throws ParserSymbolTableException; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java index 1e8e14304b8..6de849c23d3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/IDerivableContainerSymbol.java @@ -33,12 +33,40 @@ public interface IDerivableContainerSymbol extends IContainerSymbol { public List getParents(); public boolean hasParents(); + /** + * + * @param constructor + * @throws ParserSymbolTableException + * Reason: + * r_BadTypeInfo if the symbol being added is not of type TypeInfo.t_constructor + * r_InvalidOverload if the constructor being added is not a valid overload of existing constructors + */ public void addConstructor( IParameterizedSymbol constructor ) throws ParserSymbolTableException; public void addCopyConstructor() throws ParserSymbolTableException; + + /** + * + * @param parameters + * @return + * @throws ParserSymbolTableException + * Reason: + * r_Ambiguous if more than one constructor can be used with the given parameters + */ public IParameterizedSymbol lookupConstructor( List parameters ) throws ParserSymbolTableException; + public List getConstructors(); - public void addFriend( ISymbol friend ) throws ParserSymbolTableException; + public void addFriend( ISymbol friend ); + + /** + * Lookups + * @throws ParserSymbolTableException + * Reason: r_Ambiguous if more than one symbol with the given name is found and we can't resolve which one to use + * r_UnableToResolveFunction if an overloaded function is found and no parameter information has been provided + * r_BadTypeInfo if during lookup of the name, we come across a class inheriting from a symbol which is not an + * IDerivableContainerSymbol + * r_CircularInheritance if during lookup of the name, we come across a class with a circular inheritance tree + */ public ISymbol lookupForFriendship( String name ) throws ParserSymbolTableException; public IParameterizedSymbol lookupFunctionForFriendship( String name, List parameters ) throws ParserSymbolTableException; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java index f62e27c4a02..b53d47800be 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ISymbol.java @@ -20,7 +20,17 @@ import java.util.Map; public interface ISymbol extends Cloneable, IExtensibleSymbol { public Object clone(); - + + /** + * + * @param args + * @return + * @throws ParserSymbolTableException + * Exceptions can be thrown when a IDeferredTemplateInstance must be instantiated + * Reason: + * r_BadTemplateArgument if an argument does not match the corresponding parameter type + * r_Ambiguous if more than one specialization can be used but none is more specialized than all the others + */ public ISymbol instantiate( ITemplateSymbol template, Map argMap ) throws ParserSymbolTableException; public void setName(String name); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ITemplateSymbol.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ITemplateSymbol.java index 63433b35601..c2e541f5499 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ITemplateSymbol.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ITemplateSymbol.java @@ -19,6 +19,15 @@ import java.util.Map; public interface ITemplateSymbol extends IParameterizedSymbol { + /** + * + * @param param + * @throws ParserSymbolTableException + * Reason: + * r_BadTemplateParameter if the Parameter does not have type TypeInfo.t_templateParameter + * or if the parameter has the same name as the template + * or if the parameter is a non-type parameter and does not have a valid type (14.1-4, 14.1-7) + */ public void addTemplateParameter( ISymbol param ) throws ParserSymbolTableException; public boolean hasSpecializations(); @@ -34,7 +43,18 @@ public interface ITemplateSymbol extends IParameterizedSymbol { public List findArgumentsFor( IContainerSymbol instance ); public void addInstantiation( IContainerSymbol instance, List args ); - public ISymbol instantiate( List args ) throws ParserSymbolTableException; + + /** + * + * @param args + * @return + * @throws ParserSymbolTableException + * Reason: + * r_BadTemplateArgument if an argument does not match the corresponding parameter type + * r_Ambiguous if more than one specialization can be used but none is more specialized than all the others + */ + public ISymbol instantiate( List args ) throws ParserSymbolTableException; + public IDeferredTemplateInstance deferredInstance( List args ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java index 63238b716de..6466bd0f17b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java @@ -731,7 +731,7 @@ public final class TemplateEngine { IContainerSymbol templatedSymbol = spec1.getTemplatedSymbol(); if( !( templatedSymbol instanceof IParameterizedSymbol ) ) - throw new ParserSymbolTableException( ParserSymbolTableException.r_InternalError ); + throw new ParserSymbolTableError( ParserSymbolTableError.r_InternalError ); IParameterizedSymbol function = (IParameterizedSymbol)templatedSymbol; function = (IParameterizedSymbol) function.instantiate( spec1, map ); @@ -742,7 +742,7 @@ public final class TemplateEngine { templatedSymbol = spec2.getTemplatedSymbol(); if( !( templatedSymbol instanceof IParameterizedSymbol ) ) - throw new ParserSymbolTableException( ParserSymbolTableException.r_InternalError ); + throw new ParserSymbolTableError( ParserSymbolTableError.r_InternalError ); function = (IParameterizedSymbol)templatedSymbol; function = (IParameterizedSymbol) function.instantiate( spec2, map );