From: Eli Friedman Date: Tue, 28 Apr 2009 03:59:15 +0000 (+0000) Subject: Emit keyword extension warning in all modes, not just C99 mode. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2962f4d71d26817780e7441b23e0e91214fceb5e;p=clang Emit keyword extension warning in all modes, not just C99 mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70283 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index 07fab81137..0a7d92eb83 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -471,6 +471,8 @@ void Preprocessor::HandleIdentifier(Token &Identifier) { // If this is an extension token, diagnose its use. // We avoid diagnosing tokens that originate from macro definitions. - if (II.isExtensionToken() && Features.C99 && !DisableMacroExpansion) + // FIXME: This warning is disabled in cases where it shouldn't be, + // like "#define TY typeof", "TY(1) x". + if (II.isExtensionToken() && !DisableMacroExpansion) Diag(Identifier, diag::ext_token_used); } diff --git a/test/SemaCXX/decl-expr-ambiguity.cpp b/test/SemaCXX/decl-expr-ambiguity.cpp index 227834a26a..a9275dcd1f 100644 --- a/test/SemaCXX/decl-expr-ambiguity.cpp +++ b/test/SemaCXX/decl-expr-ambiguity.cpp @@ -15,7 +15,7 @@ void f() { for (int(a)+1;;) {} a = sizeof(int()+1); a = sizeof(int(1)); - typeof(int()+1) a2; + typeof(int()+1) a2; // expected-error {{extension used}} (int(1)); // expected-warning {{expression result unused}} // type-id @@ -25,7 +25,7 @@ void f() { int fd(T(a)); // expected-warning {{parentheses were disambiguated as a function declarator}} T(*d)(int(p)); // expected-warning {{parentheses were disambiguated as a function declarator}} expected-note {{previous definition is here}} T(d)[5]; // expected-error {{redefinition of 'd'}} - typeof(int[])(f) = { 1, 2 }; + typeof(int[])(f) = { 1, 2 }; // expected-error {{extension used}} void(b)(int); int(d2) __attribute__(()); if (int(a)=1) {}