From 7f998b3962ab2a06461cb19435c9e97ab142a1e4 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 27 Apr 2009 08:53:57 +0000 Subject: [PATCH] Follow up for fix of bug 273759. --- .../core/dom/parser/c/GNUCSourceParser.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) 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 d1e38fe719c..272aab7ea82 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 @@ -389,20 +389,27 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { endOffset= figureEndOffset(declSpec, declarators); break; default: - if (declOption != DeclarationOptions.LOCAL && endOffset != firstOffset) { + if (declOption != DeclarationOptions.LOCAL) { insertSemi= true; - if (markBeforDtor != null && !isOnSameLine(calculateEndOffset(declSpec), markBeforDtor.getOffset())) { - backup(markBeforDtor); - declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY; - endOffset= calculateEndOffset(declSpec); - break; + if (markBeforDtor != null) { + endOffset= calculateEndOffset(declSpec); + if (firstOffset != endOffset && !isOnSameLine(endOffset, markBeforDtor.getOffset())) { + backup(markBeforDtor); + declarators= IASTDeclarator.EMPTY_DECLARATOR_ARRAY; + break; + } } endOffset= figureEndOffset(declSpec, declarators); - if (lt1 == 0 || !isOnSameLine(endOffset, LA(1).getOffset())) { + if (lt1 == 0) { break; } - if (declarators.length == 1 && declarators[0] instanceof IASTFunctionDeclarator) { - break; + if (firstOffset != endOffset) { + if (!isOnSameLine(endOffset, LA(1).getOffset())) { + break; + } + if (declarators.length == 1 && declarators[0] instanceof IASTFunctionDeclarator) { + break; + } } } throwBacktrack(LA(1));