aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/Parser.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-03-29 17:18:04 +0000
committerChris Lattner <sabre@nondot.org>2009-03-29 17:18:04 +0000
commit23c4b1883b13dc17484b7214091b73f3ba29096e (patch)
tree86531eaa799afb588283057ad8ddea9d00723e25 /lib/Parse/Parser.cpp
parent40f1265ebd42ece3e7f7917319b56012e8e2bce2 (diff)
hoist checks for ; and in out of ParseInitDeclaratorListAfterFirstDeclarator
into ParseSimpleDeclaration, and improve a diagnostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68009 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/Parser.cpp')
-rw-r--r--lib/Parse/Parser.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp
index 56f922d400..b34c241fd1 100644
--- a/lib/Parse/Parser.cpp
+++ b/lib/Parse/Parser.cpp
@@ -517,9 +517,13 @@ Parser::ParseDeclarationOrFunctionDefinition(
Tok.is(tok::kw_asm) || // int X() __asm__ -> not a function def
Tok.is(tok::kw___attribute) || // int X() __attr__ -> not a function def
(getLang().CPlusPlus &&
- Tok.is(tok::l_paren)) ) { // int X(0) -> not a function def [C++]
+ Tok.is(tok::l_paren))) { // int X(0) -> not a function def [C++]
// Parse the init-declarator-list for a normal declaration.
- return ParseInitDeclaratorListAfterFirstDeclarator(DeclaratorInfo);
+ DeclGroupPtrTy DG =
+ ParseInitDeclaratorListAfterFirstDeclarator(DeclaratorInfo);
+ // Eat the semi colon after the declaration.
+ ExpectAndConsume(tok::semi, diag::err_expected_semi_declation);
+ return DG;
}
@@ -564,7 +568,8 @@ Parser::ParseDeclarationOrFunctionDefinition(
/// [C90] function-definition: [C99 6.7.1] - implicit int result
/// [C90] decl-specs[opt] declarator declaration-list[opt] compound-statement
/// [C++] function-definition: [C++ 8.4]
-/// decl-specifier-seq[opt] declarator ctor-initializer[opt] function-body
+/// decl-specifier-seq[opt] declarator ctor-initializer[opt]
+/// function-body
/// [C++] function-definition: [C++ 8.4]
/// decl-specifier-seq[opt] declarator function-try-block [TODO]
///