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);