forked from OSchip/llvm-project
Add fix-it to remove 'typedef' from function template definitions. Such a token
was probably meant to be 'typename', which we will have already suggested if it is appropriate. llvm-svn: 145395
This commit is contained in:
parent
004685bdf7
commit
53711607a0
|
@ -276,9 +276,11 @@ Parser::ParseSingleDeclarationAfterTemplate(
|
|||
if (DeclaratorInfo.isFunctionDeclarator() &&
|
||||
isStartOfFunctionDefinition(DeclaratorInfo)) {
|
||||
if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {
|
||||
Diag(Tok, diag::err_function_declared_typedef);
|
||||
|
||||
// Recover by ignoring the 'typedef'.
|
||||
// Recover by ignoring the 'typedef'. This was probably supposed to be
|
||||
// the 'typename' keyword, which we should have already suggested adding
|
||||
// if it's appropriate.
|
||||
Diag(DS.getStorageClassSpecLoc(), diag::err_function_declared_typedef)
|
||||
<< FixItHint::CreateRemoval(DS.getStorageClassSpecLoc());
|
||||
DS.ClearStorageClassSpecs();
|
||||
}
|
||||
return ParseFunctionDefinition(DeclaratorInfo, TemplateInfo);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: %clang_cc1 -pedantic -Wall -verify -fcxx-exceptions -x c++ %s
|
||||
// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ %s
|
||||
// RUN: cp %s %t
|
||||
// RUN: not %clang_cc1 -pedantic -Wall -fcxx-exceptions -fixit -x c++ %t
|
||||
// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -fcxx-exceptions -x c++ %t
|
||||
// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ %t
|
||||
// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ %t
|
||||
|
||||
/* This is a test of the various code modification hints that are
|
||||
provided as part of warning or extension diagnostics. All of the
|
||||
|
@ -135,3 +135,10 @@ int extraSemi2(); // expected-error {{stray ';' in function definition}}
|
|||
try {
|
||||
} catch (...) {
|
||||
}
|
||||
|
||||
template<class T> struct Mystery;
|
||||
template<class T> typedef Mystery<T>::type getMysteriousThing() { // \
|
||||
expected-error {{function definition declared 'typedef'}} \
|
||||
expected-error {{missing 'typename' prior to dependent}}
|
||||
return Mystery<T>::get();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue