From 65b9130f643372d18cd7d63322a5987b30655c71 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Thu, 31 May 2007 14:35:24 +0000 Subject: [PATCH] Fix for 167833, failure to parse 'int32 f(int32 (*p));' --- .../eclipse/cdt/core/parser/tests/ast2/AST2Tests.java | 10 +--------- .../internal/core/dom/parser/c/GNUCSourceParser.java | 4 ++++ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java index 7fde7bcfdf7..4a16a559eb9 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java @@ -3795,17 +3795,9 @@ public class AST2Tests extends AST2BaseTest { // int32 f(int32 (*p)) { // return *p; // } - public void test167833_cpp() throws Exception { + public void test167833() throws Exception { StringBuffer buffer = getContents(1)[0]; parseAndCheckBindings(buffer.toString(), ParserLanguage.CPP); - } - - // typedef int int32; - // int32 f(int32 (*p)) { - // return *p; - // } - public void _test167833_c() throws Exception { - StringBuffer buffer = getContents(1)[0]; parseAndCheckBindings(buffer.toString(), ParserLanguage.C); } } 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 291b9001f81..a6248dfe114 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 @@ -2349,6 +2349,10 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { declSpec = fd.declSpec; } + // bug 167833, no declspec no parameter. + if (current == LA(1)) + throwBacktrack(current.getOffset(), current.getLength()); + IASTDeclarator declarator = null; if (LT(1) != IToken.tSEMI) declarator = initDeclarator();