From 1ff19a66bd9bb858b2765b135273ddd4fe23a7aa Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 11 May 2004 02:47:15 +0000 Subject: [PATCH] Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=60038 --- .../parser/tests/CompleteParseASTTest.java | 25 ++++++++- .../core/parser/tests/SelectionParseTest.java | 54 ++++++++++++++++++- .../cdt/core/parser/ast/IASTExpression.java | 4 +- .../cdt/core/parser/ast/IASTFactory.java | 7 +++ .../parser/ast/IASTInitializerClause.java | 6 +++ .../core/parser/ExpressionParser.java | 9 +++- .../internal/core/parser/SelectionParser.java | 20 ++++++- .../parser/ast/complete/ASTExpression.java | 8 +++ .../ast/complete/ASTInitializerClause.java | 19 +++++++ .../parser/ast/complete/ASTNewExpression.java | 12 +++++ .../ast/complete/CompleteParseASTFactory.java | 52 +++++++++++++++--- .../expression/ExpressionParseASTFactory.java | 7 +++ .../ast/quick/ASTInitializerClause.java | 9 ++++ .../ast/quick/QuickParseASTFactory.java | 7 +++ 14 files changed, 225 insertions(+), 14 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java index 0ba0e9b51e2..998f0b07e81 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java @@ -46,7 +46,6 @@ import org.eclipse.cdt.core.parser.ast.IASTVariableReference; import org.eclipse.cdt.core.parser.ast.gcc.IASTGCCExpression; import org.eclipse.cdt.core.parser.ast.gcc.IASTGCCSimpleTypeSpecifier; import org.eclipse.cdt.internal.core.parser.ParserException; -import org.eclipse.ui.views.tasklist.TaskList; /** @@ -1809,4 +1808,28 @@ public class CompleteParseASTTest extends CompleteParseBaseTest assertFalse( i.hasNext() ); } + + public void testDestructorReference() throws Exception + { + Writer writer = new StringWriter(); + writer.write( "class ABC {\n"); //$NON-NLS-1$ + writer.write( " public:\n"); //$NON-NLS-1$ + writer.write( " ~ABC(){ }\n"); //$NON-NLS-1$ + writer.write( "};\n"); //$NON-NLS-1$ + writer.write( "int main() { ABC * abc = new ABC();\n"); //$NON-NLS-1$ + writer.write( "abc->~ABC();\n"); //$NON-NLS-1$ + writer.write( "}\n"); //$NON-NLS-1$ + + Iterator declarations = parse( writer.toString() ).getDeclarations(); + IASTClassSpecifier ABC = (IASTClassSpecifier) ((IASTAbstractTypeSpecifierDeclaration)declarations.next()).getTypeSpecifier(); + IASTFunction main = (IASTFunction) declarations.next(); + assertFalse( declarations.hasNext() ); + Iterator members = getDeclarations(ABC); + IASTFunction destructor = (IASTFunction) members.next(); + assertFalse( members.hasNext() ); + Iterator localVariables = getDeclarations( main ); + IASTVariable variable = (IASTVariable) localVariables.next(); + assertFalse( localVariables.hasNext() ); + assertAllReferences( 4, createTaskList( new Task( ABC, 2 ), new Task( variable ), new Task( destructor ))); + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java index 5c8c6e9fd28..3686c9a8f8b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java @@ -215,7 +215,6 @@ public class SelectionParseTest extends CompleteParseBaseTest { IASTNamespaceDefinition namespace = (IASTNamespaceDefinition) node; assertEquals( namespace.getName(), "Muppets"); //$NON-NLS-1$ assertEquals( namespace.getStartingLine(), 1 ); - } public void testBug61613() throws Exception @@ -235,7 +234,58 @@ public class SelectionParseTest extends CompleteParseBaseTest { assertTrue( node instanceof IASTClassSpecifier ); IASTClassSpecifier foo = (IASTClassSpecifier) node; assertEquals( foo.getName(), "Foo"); //$NON-NLS-1$ - + } + + public void testBug60038() throws Exception + { + Writer writer = new StringWriter(); + writer.write( "class Gonzo {\n"); //$NON-NLS-1$ + writer.write( "public:\n"); //$NON-NLS-1$ + writer.write( "Gonzo( const Gonzo & other ){}\n"); //$NON-NLS-1$ + writer.write( "Gonzo() {}\n"); //$NON-NLS-1$ + writer.write( "~Gonzo(){}\n"); //$NON-NLS-1$ + writer.write( "};\n"); //$NON-NLS-1$ + writer.write( "int main(int argc, char **argv) {\n"); //$NON-NLS-1$ + writer.write( " Gonzo * g = new Gonzo();\n"); //$NON-NLS-1$ + writer.write( " Gonzo * g2 = new Gonzo( *g );\n"); //$NON-NLS-1$ + writer.write( " g->~Gonzo();\n"); //$NON-NLS-1$ + writer.write( " return (int) g2;\n"); //$NON-NLS-1$ + writer.write( "}\n"); //$NON-NLS-1$ + String code = writer.toString(); + for( int i = 0; i < 3; ++i ) + { + int startOffset = 0, endOffset = 0; + switch( i ) + { + case 0: + startOffset = code.indexOf( "new Gonzo()") + 4; //$NON-NLS-1$ + endOffset = startOffset + 5; + break; + case 1: + startOffset = code.indexOf( "new Gonzo( ") + 4; //$NON-NLS-1$ + endOffset = startOffset + 5; + break; + default: + startOffset = code.indexOf( "->~") + 2; //$NON-NLS-1$ + endOffset = startOffset + 6; + } + IASTNode node = parse( code, startOffset, endOffset ); + assertTrue( node instanceof IASTMethod ); + IASTMethod method = (IASTMethod) node; + switch( i ) + { + case 0: + case 1: + assertTrue( method.isConstructor() ); + assertFalse( method.isDestructor() ); + break; + default: + assertFalse( method.isConstructor() ); + assertTrue( method.isDestructor() ); + break; + + } + } } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java index 48e03538053..dd15c6e4138 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java @@ -230,7 +230,9 @@ public interface IASTExpression extends ISourceElementCallbackDelegate, IASTNode if( this == IASTExpression.Kind.POSTFIX_DOT_IDEXPRESSION || this == IASTExpression.Kind.POSTFIX_ARROW_IDEXPRESSION || this == IASTExpression.Kind.POSTFIX_DOT_TEMPL_IDEXPRESS || - this == IASTExpression.Kind.POSTFIX_ARROW_TEMPL_IDEXP || + this == IASTExpression.Kind.POSTFIX_ARROW_TEMPL_IDEXP || + this == IASTExpression.Kind.POSTFIX_ARROW_DESTRUCTOR || + this == IASTExpression.Kind.POSTFIX_DOT_DESTRUCTOR || this == IASTExpression.Kind.PM_DOTSTAR || this == IASTExpression.Kind.PM_ARROWSTAR ) return true; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java index f6a016e0b63..4f6498a79f0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java @@ -277,4 +277,11 @@ public interface IASTFactory */ public boolean validateDirectMemberOperation(IASTNode node); + /** + * @param ourScope + * @param newDescriptor TODO + * @return + */ + public IASTNode lookupConstructor(IASTScope ourScope, IASTNewExpressionDescriptor newDescriptor); + } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTInitializerClause.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTInitializerClause.java index 826b99bfc40..cc6b50a5c71 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTInitializerClause.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTInitializerClause.java @@ -14,6 +14,7 @@ import java.util.Iterator; import org.eclipse.cdt.core.parser.Enum; import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate; +import org.eclipse.cdt.core.parser.ITokenDuple; /** * @author jcamelon @@ -43,5 +44,10 @@ public interface IASTInitializerClause extends ISourceElementCallbackDelegate{ public void setOwnerVariableDeclaration( IASTVariable declaration ); public IASTVariable getOwnerVariableDeclaration(); + /** + * @param finalDuple + * @return + */ + public IASTExpression findExpressionForDuple(ITokenDuple finalDuple) throws ASTNotImplementedException; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java index 9ad1ba7cfe5..e715fd87288 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java @@ -2389,6 +2389,8 @@ public class ExpressionParser implements IExpressionParser, IParserData { setCompletionValues(scope, CompletionKind.MEMBER_REFERENCE, KeywordSets.Key.EMPTY, firstExpression, memberCompletionKind ); secondExpression = primaryExpression(scope, CompletionKind.MEMBER_REFERENCE, key); + if( secondExpression != null && secondExpression.getExpressionKind() == Kind.ID_EXPRESSION && secondExpression.getIdExpression().indexOf( '~') != -1 ) + memberCompletionKind = Kind.POSTFIX_DOT_DESTRUCTOR; try { @@ -2429,7 +2431,9 @@ public class ExpressionParser implements IExpressionParser, IParserData { setCompletionValues(scope, CompletionKind.MEMBER_REFERENCE, KeywordSets.Key.EMPTY, firstExpression, arrowCompletionKind ); secondExpression = primaryExpression(scope, CompletionKind.MEMBER_REFERENCE, key); - + + if( secondExpression != null && secondExpression.getExpressionKind() == Kind.ID_EXPRESSION && secondExpression.getIdExpression().indexOf( '~') != -1 ) + arrowCompletionKind = Kind.POSTFIX_ARROW_DESTRUCTOR; try { firstExpression = @@ -2679,7 +2683,8 @@ public class ExpressionParser implements IExpressionParser, IParserData { } case IToken.tIDENTIFIER : case IToken.tCOLONCOLON : - case IToken.t_operator : + case IToken.t_operator : + case IToken.tCOMPL: ITokenDuple duple = null; IToken mark = mark(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java index f036f137f11..4ec0158ef1c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/SelectionParser.java @@ -29,10 +29,12 @@ import org.eclipse.cdt.core.parser.ast.IASTDeclaration; import org.eclipse.cdt.core.parser.ast.IASTEnumerator; import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTFunction; +import org.eclipse.cdt.core.parser.ast.IASTInitializerClause; import org.eclipse.cdt.core.parser.ast.IASTNode; import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement; import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.parser.ast.IASTScope; +import org.eclipse.cdt.core.parser.ast.IASTVariable; import org.eclipse.cdt.core.parser.extension.IParserExtension; import org.eclipse.cdt.internal.core.parser.token.OffsetDuple; import org.eclipse.cdt.internal.core.parser.token.TokenDuple; @@ -61,17 +63,20 @@ public class SelectionParser extends ContextualParser { if( value != null && scanner.isOnTopContext() ) { TraceUtil.outputTrace(log, "IToken provided w/offsets ", null, value.getOffset(), " & ", value.getEndOffset() ); //$NON-NLS-1$ //$NON-NLS-2$ + boolean change = false; if( value.getOffset() == offsetRange.getFloorOffset() ) { TraceUtil.outputTrace(log, "Offset Floor Hit w/token \"", null, value.getImage(), "\"", null ); //$NON-NLS-1$ //$NON-NLS-2$ firstTokenOfDuple = value; + change = true; } if( value.getEndOffset() == offsetRange.getCeilingOffset() ) { TraceUtil.outputTrace(log, "Offset Ceiling Hit w/token \"", null, value.getImage(), "\"", null ); //$NON-NLS-1$ //$NON-NLS-2$ + change = true; lastTokenOfDuple = value; } - if( tokenDupleCompleted() ) + if( change && tokenDupleCompleted() ) { if ( ourScope == null ) ourScope = getCompletionScope(); @@ -194,6 +199,19 @@ public class SelectionParser extends ContextualParser { return contextNode; } try { + if( ourKind == IASTCompletionNode.CompletionKind.NEW_TYPE_REFERENCE ) + { + if( contextNode instanceof IASTVariable ) + { + IASTInitializerClause initializer = ((IASTVariable)contextNode).getInitializerClause(); + if( initializer != null ) + { + IASTExpression ownerExpression = initializer.findExpressionForDuple( finalDuple ); + return astFactory.lookupSymbolInContext( ourScope, finalDuple, ownerExpression ); + } + } + } + return astFactory.lookupSymbolInContext( ourScope, finalDuple, null ); } catch (ASTNotImplementedException e) { return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java index 8ee94e2df14..e8b23259bc5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExpression.java @@ -267,4 +267,12 @@ public abstract class ASTExpression extends ASTNode implements IASTExpression public IASTNewExpressionDescriptor getNewExpressionDescriptor() { return null; } + + /** + * @param finalDuple + * @return + */ + public IASTExpression findNewDescriptor(ITokenDuple finalDuple) { + return null; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java index 1af16745458..48325a1568d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTInitializerClause.java @@ -15,6 +15,8 @@ import java.util.Iterator; import java.util.List; import org.eclipse.cdt.core.parser.ISourceElementRequestor; +import org.eclipse.cdt.core.parser.ITokenDuple; +import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTInitializerClause; import org.eclipse.cdt.core.parser.ast.IASTVariable; @@ -127,4 +129,21 @@ public class ASTInitializerClause implements IASTInitializerClause { return references; } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTInitializerClause#findExpressionForDuple(org.eclipse.cdt.core.parser.ITokenDuple) + */ + public IASTExpression findExpressionForDuple(ITokenDuple finalDuple) throws ASTNotImplementedException { + if( kind == IASTInitializerClause.Kind.EMPTY ) return null; + if( kind == IASTInitializerClause.Kind.ASSIGNMENT_EXPRESSION || + kind == Kind.DESIGNATED_ASSIGNMENT_EXPRESSION ) + return ((ASTExpression)assignmentExpression).findNewDescriptor( finalDuple ); + Iterator i = getInitializers(); + while( i.hasNext() ) + { + IASTInitializerClause clause = (IASTInitializerClause) i.next(); + IASTExpression e = clause.findExpressionForDuple(finalDuple); + if( e != null ) return e; + } + return null; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNewExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNewExpression.java index bee0dd52d97..ee8928e63ee 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNewExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNewExpression.java @@ -13,6 +13,8 @@ package org.eclipse.cdt.internal.core.parser.ast.complete; import java.util.List; import org.eclipse.cdt.core.parser.ISourceElementRequestor; +import org.eclipse.cdt.core.parser.ITokenDuple; +import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTTypeId; /** @@ -58,4 +60,14 @@ public class ASTNewExpression extends ASTExpression { typeId.acceptElement(requestor); newDescriptor.acceptElement(requestor); } + + + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.ast.complete.ASTExpression#findNewDescriptor(org.eclipse.cdt.core.parser.ITokenDuple) + */ + public IASTExpression findNewDescriptor(ITokenDuple finalDuple) { + if( ((ASTTypeId)typeId).getTokenDuple().contains( finalDuple )) + return this; + return null; + } } 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 3c6f1e833ea..3a8809a8604 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 @@ -1256,13 +1256,8 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto } private IContainerSymbol getSearchScope (Kind kind, IASTExpression lhs, IContainerSymbol startingScope) throws ASTSemanticException{ - if((kind == IASTExpression.Kind.POSTFIX_DOT_IDEXPRESSION) - || (kind == IASTExpression.Kind.POSTFIX_ARROW_IDEXPRESSION) - || (kind == IASTExpression.Kind.POSTFIX_DOT_TEMPL_IDEXPRESS) - || (kind == IASTExpression.Kind.POSTFIX_ARROW_TEMPL_IDEXP) - || (kind == IASTExpression.Kind.PM_DOTSTAR) - || (kind == IASTExpression.Kind.PM_ARROWSTAR) - ){ + if( kind.isPostfixMemberReference() ) + { TypeInfo lhsInfo = ((ASTExpression)lhs).getResultType().getResult(); if(lhsInfo != null){ TypeInfo info = null; @@ -3166,6 +3161,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto } protected ParserSymbolTable pst; + protected static final List DUD_LIST = new ArrayList( 64 ); /* @@ -3426,6 +3422,40 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto } catch (ASTSemanticException e1) { } } + else if( expression.getExpressionKind() == IASTExpression.Kind.NEW_NEWTYPEID || + expression.getExpressionKind() == IASTExpression.Kind.NEW_TYPEID ) + { + IContainerSymbol classSymbol = null; + try { + classSymbol = (IContainerSymbol) lookupQualifiedName(scopeToSymbol( scope ), duple, DUD_LIST, false ); + } catch (ASTSemanticException e) { + } + if( classSymbol != null && classSymbol.getTypeInfo().checkBit( TypeInfo.isTypedef ) ){ + TypeInfo info = classSymbol.getTypeInfo().getFinalType(); + classSymbol = (IContainerSymbol) info.getTypeSymbol(); + } + if( classSymbol == null || ! (classSymbol instanceof IDerivableContainerSymbol ) ){ + return null; + } + + List parameters = new LinkedList(); + Iterator newInitializerExpressions = expression.getNewExpressionDescriptor().getNewInitializerExpressions(); + if( newInitializerExpressions.hasNext() ) + { + ASTExpression expressionList = (ASTExpression) newInitializerExpressions.next(); + while( expressionList != null ){ + parameters.add( expressionList.getResultType().getResult() ); + expressionList = (ASTExpression) expressionList.getRHSExpression(); + } + } + + try { + s = ((IDerivableContainerSymbol)classSymbol).lookupConstructor( parameters ); + } catch (ParserSymbolTableException e1) { + return null; + } + + } else { ASTExpression ownerExpression = expression.findOwnerExpressionForIDExpression( duple ); @@ -3540,4 +3570,12 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto expression.setResultType (expressionResult); return expression; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupConstructor(org.eclipse.cdt.core.parser.ast.IASTScope, org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor) + */ + public IASTNode lookupConstructor(IASTScope ourScope, IASTNewExpressionDescriptor newDescriptor) { + // TODO Auto-generated method stub + return null; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionParseASTFactory.java index 7d682ae6c9f..04675b82439 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionParseASTFactory.java @@ -914,5 +914,12 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac return ExpressionFactory.createExpression( kind, literal, isHex ); } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupConstructor(org.eclipse.cdt.core.parser.ast.IASTScope, org.eclipse.cdt.core.parser.ITokenDuple) + */ + public IASTNode lookupConstructor(IASTScope ourScope, IASTNewExpressionDescriptor newDescriptor) { + return null; + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTInitializerClause.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTInitializerClause.java index 64cbadf2c45..fba26f73d69 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTInitializerClause.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTInitializerClause.java @@ -13,6 +13,8 @@ package org.eclipse.cdt.internal.core.parser.ast.quick; import java.util.Iterator; import org.eclipse.cdt.core.parser.ISourceElementRequestor; +import org.eclipse.cdt.core.parser.ITokenDuple; +import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTInitializerClause; import org.eclipse.cdt.core.parser.ast.IASTVariable; @@ -100,4 +102,11 @@ public class ASTInitializerClause implements IASTInitializerClause { return ownerDeclaration; } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTInitializerClause#findExpressionForDuple(org.eclipse.cdt.core.parser.ITokenDuple) + */ + public IASTExpression findExpressionForDuple(ITokenDuple finalDuple) throws ASTNotImplementedException { + throw new ASTNotImplementedException(); + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java index 65f311fc13c..4530229afbb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java @@ -390,4 +390,11 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory public IASTExpression createExpression(Kind kind, long literal, boolean isHex) throws ASTSemanticException { return ExpressionFactory.createExpression(kind, literal, isHex ); } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupConstructor(org.eclipse.cdt.core.parser.ast.IASTScope, org.eclipse.cdt.core.parser.ITokenDuple) + */ + public IASTNode lookupConstructor(IASTScope ourScope, IASTNewExpressionDescriptor newDescriptor) { + return null; + } }