diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index a2e5c7c98f49..951fbfac7ac3 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -3417,7 +3417,7 @@ static void AddKeywordsToConsumer(Sema &SemaRef, // Add type-specifier keywords to the set of results. const char *CTypeSpecs[] = { "char", "const", "double", "enum", "float", "int", "long", "short", - "signed", "struct", "union", "unsigned", "void", "volatile", "_Bool", + "signed", "struct", "union", "unsigned", "void", "volatile", "_Complex", "_Imaginary", // storage-specifiers as well "extern", "inline", "static", "typedef" @@ -3431,7 +3431,9 @@ static void AddKeywordsToConsumer(Sema &SemaRef, Consumer.addKeywordResult("restrict"); if (SemaRef.getLangOptions().Bool || SemaRef.getLangOptions().CPlusPlus) Consumer.addKeywordResult("bool"); - + else if (SemaRef.getLangOptions().C99) + Consumer.addKeywordResult("_Bool"); + if (SemaRef.getLangOptions().CPlusPlus) { Consumer.addKeywordResult("class"); Consumer.addKeywordResult("typename"); diff --git a/clang/test/FixIt/typo.cpp b/clang/test/FixIt/typo.cpp index e35a0f540692..3d40da8d256a 100644 --- a/clang/test/FixIt/typo.cpp +++ b/clang/test/FixIt/typo.cpp @@ -80,3 +80,9 @@ namespace nonstd { } yarn str4; // expected-error{{unknown type name 'yarn'; did you mean 'nonstd::yarn'?}} + +namespace check_bool { + void f() { + Bool b; // expected-error{{use of undeclared identifier 'Bool'; did you mean 'bool'?}} + } +}