diff options
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java')
-rw-r--r-- | lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java | 11 |
1 files changed, 10 insertions, 1 deletions
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 a7ca0726c84..99a1629a7f4 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,7 +478,16 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { IASTExpression expr = (IASTExpression) astStack.peek(); if(expr instanceof IASTIdExpression) { - IASTName name = ((IASTIdExpression)expr).getName().copy(); + 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); IASTNamedTypeSpecifier declSpec = nodeFactory.newTypedefNameSpecifier(name); ParserUtil.setOffsetAndLength(declSpec, name); |