Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVivian Kong2010-08-11 21:09:24 +0000
committerVivian Kong2010-08-11 21:09:24 +0000
commit8951c5d12bbdffe3ec2c408627f1a9304aed4214 (patch)
tree86b0705ab43c1ec8ad1aa225280da7fb75f96bbf
parent1735b0d4edd3507abf4c2528c3ab97cc3c5fcf53 (diff)
downloadorg.eclipse.cdt-8951c5d12bbdffe3ec2c408627f1a9304aed4214.tar.gz
org.eclipse.cdt-8951c5d12bbdffe3ec2c408627f1a9304aed4214.tar.xz
org.eclipse.cdt-8951c5d12bbdffe3ec2c408627f1a9304aed4214.zip
Bug 322426 Add copy implementation to CPPASTAmbiguousTemplateArgument class for John Liu
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java16
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java11
2 files changed, 16 insertions, 11 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java
index 9d6d73f36de..7984a68f3b9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java
@@ -85,7 +85,21 @@ public class CPPASTAmbiguousTemplateArgument extends ASTAmbiguousNode implements
public IASTNode copy() {
- throw new UnsupportedOperationException();
+
+ int sizeOfNodes = fNodes.size();
+ IASTNode[] copyNodes = new IASTNode[sizeOfNodes];
+ int arrayIndex = 0;
+ for(IASTNode node : fNodes) {
+ if(node!=null){
+ copyNodes[arrayIndex]=node.copy();
+ }else{
+ copyNodes[arrayIndex]=null;
+ }
+ arrayIndex++;
+ }
+
+ ICPPASTAmbiguousTemplateArgument ambiguityNode = new CPPASTAmbiguousTemplateArgument(copyNodes);
+ return ambiguityNode;
}
@Override
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
index 99a1629a7f4..a7ca0726c84 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
@@ -478,16 +478,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
IASTExpression expr = (IASTExpression) astStack.peek();
if(expr instanceof IASTIdExpression) {
- IASTName orgName =((IASTIdExpression)expr).getName();
- IASTName name = null;
- try{
- name = orgName.copy();
- //if there is node throws UnsupportedOperationException in copy, just use the original node
- } catch(UnsupportedOperationException ue){
- name = orgName;
- }
-
- ParserUtil.setOffsetAndLength(name, expr);
+ IASTName name = ((IASTIdExpression)expr).getName().copy();
IASTNamedTypeSpecifier declSpec = nodeFactory.newTypedefNameSpecifier(name);
ParserUtil.setOffsetAndLength(declSpec, name);

Back to the top