Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNewExpression.java')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNewExpression.java27
1 files changed, 27 insertions, 0 deletions
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 bea396812d1..9cf647e20fd 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
@@ -84,4 +84,31 @@ public class ASTNewExpression extends ASTExpression {
public String toString(){
return ASTUtil.getExpressionString( this );
}
+
+ public ASTExpression findOwnerExpressionForIDExpression(ITokenDuple duple) {
+ ASTTypeId typeId = (ASTTypeId) getTypeId();
+ ITokenDuple typeDuple = typeId.getTokenDuple();
+
+ if( typeDuple.equals( duple ) )
+ return this;
+ // check subduple
+ if( typeDuple.contains( duple ) )
+ return this;
+
+ //else, check the parameters
+ ASTExpression ownerExpression = null;
+ ASTNewDescriptor newDescriptor = (ASTNewDescriptor)getNewExpressionDescriptor();
+ List newInitializerExpressions = newDescriptor.getNewInitializerExpressionsList();
+ int size = newInitializerExpressions.size();
+ for( int i = 0; i < size; i++ )
+ {
+ ASTExpression expressionList = (ASTExpression) newInitializerExpressions.get(i);
+ ownerExpression = expressionList.findOwnerExpressionForIDExpression( duple );
+ if( ownerExpression != null ){
+ break;
+ }
+ }
+
+ return ownerExpression;
+ }
}

Back to the top