From 81bb91044244d5a73de208ad35d794d553d72d8a Mon Sep 17 00:00:00 2001 From: Mike Kucera Date: Wed, 7 Jan 2009 16:36:21 +0000 Subject: [PATCH] fix for bug 92793 for LR parser, qualified IDs as members should be parsed as using declarations --- .../action/cpp/CPPBuildASTParserAction.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 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 d696b34ef80..c80fc764030 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 @@ -1880,16 +1880,24 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); IASTName qualifiedId = subRuleQualifiedName(true); - IASTDeclarator declarator = nodeFactory.newDeclarator(qualifiedId); - setOffsetAndLength(declarator); - // there has to be an empty specifier or... kaboom! - IASTDeclSpecifier emptySpecifier = nodeFactory.newSimpleDeclSpecifier(); - setOffsetAndLength(emptySpecifier, parser.getLeftIToken().getStartOffset(), 0); - IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(emptySpecifier); + + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=92793 + ICPPASTUsingDeclaration declaration = nodeFactory.newUsingDeclaration(qualifiedId); setOffsetAndLength(declaration); - declaration.addDeclarator(declarator); + astStack.push(declaration); + +// IASTDeclarator declarator = nodeFactory.newDeclarator(qualifiedId); +// setOffsetAndLength(declarator); +// IASTDeclSpecifier emptySpecifier = nodeFactory.newSimpleDeclSpecifier(); +// setOffsetAndLength(emptySpecifier, parser.getLeftIToken().getStartOffset(), 0); +// IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(emptySpecifier); +// setOffsetAndLength(declaration); +// declaration.addDeclarator(declarator); +// +// astStack.push(declaration); + if(TRACE_AST_STACK) System.out.println(astStack); }