From f116df561bec8ce591f35c7d206cb3d1be318c8f Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Tue, 9 Mar 2010 10:26:27 +0000 Subject: [PATCH] Follow up 253690: Creating problem node. --- .../parser/AbstractGNUSourceCodeParser.java | 15 +++++++++++++- .../core/dom/parser/c/GNUCSourceParser.java | 20 +++---------------- .../dom/parser/cpp/GNUCPPSourceParser.java | 19 ++---------------- 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java index 807e84dcf6a..3dbf63ea0c8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java @@ -44,6 +44,7 @@ import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; import org.eclipse.cdt.core.dom.ast.IASTGotoStatement; import org.eclipse.cdt.core.dom.ast.IASTIfStatement; +import org.eclipse.cdt.core.dom.ast.IASTInitializer; import org.eclipse.cdt.core.dom.ast.IASTInitializerClause; import org.eclipse.cdt.core.dom.ast.IASTLabelStatement; import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression; @@ -1733,7 +1734,19 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { return funcDefinition; } - protected abstract IASTDeclarator addInitializer(FoundAggregateInitializer lie, DeclarationOptions option) throws EndOfFileException; + protected abstract IASTInitializer optionalInitializer(DeclarationOptions options) + throws EndOfFileException, BacktrackException; + + protected IASTDeclarator addInitializer(FoundAggregateInitializer e, DeclarationOptions options) + throws EndOfFileException, BacktrackException { + final IASTDeclarator d = e.fDeclarator; + IASTInitializer i = optionalInitializer(options); + if (i != null) { + d.setInitializer(i); + ((ASTNode) d).setLength(calculateEndOffset(i) - ((ASTNode) d).getOffset()); + } + return d; + } protected IToken asmExpression(StringBuilder content) throws EndOfFileException, BacktrackException { IToken t= consume(IToken.tLPAREN); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java index 031321202f0..d07191cabce 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java @@ -134,7 +134,8 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { this.nodeFactory = CNodeFactory.getDefault(); } - protected IASTInitializer optionalCInitializer() throws EndOfFileException, BacktrackException { + @Override + protected IASTInitializer optionalInitializer(DeclarationOptions options) throws EndOfFileException, BacktrackException { if (LTcatchEOF(1) == IToken.tASSIGN) { final int offset= consume().getOffset(); IASTInitializerClause initClause = initClause(false); @@ -1314,7 +1315,7 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { if (lt1 == IToken.tASSIGN && LT(2) == IToken.tLBRACE) throw new FoundAggregateInitializer(declspec, d); - IASTInitializer i = optionalCInitializer(); + IASTInitializer i = optionalInitializer(option); if (i != null) { d.setInitializer(i); ((ASTNode) d).setLength(calculateEndOffset(i) - ((ASTNode) d).getOffset()); @@ -1322,21 +1323,6 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { return d; } - @Override - protected IASTDeclarator addInitializer(FoundAggregateInitializer e, DeclarationOptions options) throws EndOfFileException { - final IASTDeclarator d = e.fDeclarator; - try { - IASTInitializer i = optionalCInitializer(); - if (i != null) { - d.setInitializer(i); - ((ASTNode) d).setLength(calculateEndOffset(i) - ((ASTNode) d).getOffset()); - } - } catch (BacktrackException e1) { - // mstodo add problem node - } - return d; - } - protected IASTDeclarator declarator(IASTDeclSpecifier declSpec, DeclarationOptions option) throws EndOfFileException, BacktrackException { final int startingOffset = LA(1).getOffset(); int endOffset = startingOffset; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index c93aac362b7..e556229a4b4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -2779,22 +2779,6 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { return dtor; } - @Override - protected IASTDeclarator addInitializer(FoundAggregateInitializer e, DeclarationOptions option) throws EndOfFileException { - final IASTDeclarator d = e.fDeclarator; - try { - IASTInitializer i = optionalInitializer(option); - if (i != null) { - d.setInitializer(i); - ((ASTNode) d).setLength(calculateEndOffset(i) - ((ASTNode) d).getOffset()); - } - } catch (BacktrackException e1) { - // mstodo add problem node - failParse(); - } - return d; - } - /** * initializer: * brace-or-equal-initializer @@ -2804,7 +2788,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { * = initializer-clause * braced-init-list */ - private IASTInitializer optionalInitializer(DeclarationOptions option) throws EndOfFileException, BacktrackException { + @Override + protected IASTInitializer optionalInitializer(DeclarationOptions option) throws EndOfFileException, BacktrackException { final int lt1= LTcatchEOF(1); // = initializer-clause