Add -Wc++98-compat warning for deduced 'auto' type specifier.

llvm-svn: 142057
This commit is contained in:
Richard Smith 2011-10-15 05:42:01 +00:00
parent 5d164bc5e0
commit e41fac231c
3 changed files with 9 additions and 1 deletions

View File

@ -1083,6 +1083,9 @@ def err_cannot_determine_declared_type_of_overloaded_function : Error<
"cannot determine the type of an overloaded function">;
// C++11 auto
def warn_cxx98_compat_auto_type_specifier : Warning<
"'auto' type specifier is incompatible with C++98">,
InGroup<CXX98Compat>, DefaultIgnore;
def err_auto_variable_cannot_appear_in_own_initializer : Error<
"variable %0 declared with 'auto' type cannot appear in its own initializer">;
def err_illegal_decl_array_of_auto : Error<

View File

@ -1851,7 +1851,9 @@ static QualType GetDeclSpecTypeForDeclarator(TypeProcessingState &state,
<< Error;
T = SemaRef.Context.IntTy;
D.setInvalidType(true);
}
} else
SemaRef.Diag(D.getDeclSpec().getTypeSpecTypeLoc(),
diag::warn_cxx98_compat_auto_type_specifier);
}
if (SemaRef.getLangOptions().CPlusPlus &&

View File

@ -87,3 +87,6 @@ template<typename T> using AliasTemplate = T; // expected-warning {{alias declar
inline namespace N { // expected-warning {{inline namespaces are incompatible with C++98}}
}
auto auto_deduction = 0; // expected-warning {{'auto' type specifier is incompatible with C++98}}
int *p = new auto(0); // expected-warning {{'auto' type specifier is incompatible with C++98}}