forked from OSchip/llvm-project
PR7256: Provide a fixit for incorrect destructor declarations
Fix by Ismail Pazarbasi (ismail.pazarbasi@gmail.com), review by Dmitri Gribenko. llvm-svn: 177546
This commit is contained in:
parent
7a84d4f864
commit
5e026f55e9
|
@ -264,8 +264,16 @@ ParsedType Sema::getDestructorName(SourceLocation TildeLoc,
|
|||
} else if (ObjectTypePtr)
|
||||
Diag(NameLoc, diag::err_ident_in_dtor_not_a_type)
|
||||
<< &II;
|
||||
else
|
||||
Diag(NameLoc, diag::err_destructor_class_name);
|
||||
else {
|
||||
SemaDiagnosticBuilder DtorDiag = Diag(NameLoc,
|
||||
diag::err_destructor_class_name);
|
||||
if (S) {
|
||||
const DeclContext *Ctx = static_cast<DeclContext*>(S->getEntity());
|
||||
if (const CXXRecordDecl *Class = dyn_cast_or_null<CXXRecordDecl>(Ctx))
|
||||
DtorDiag << FixItHint::CreateReplacement(SourceRange(NameLoc),
|
||||
Class->getNameAsString());
|
||||
}
|
||||
}
|
||||
|
||||
return ParsedType();
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ %s 2>&1 | FileCheck %s
|
||||
// RUN: cp %s %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
|
||||
|
@ -299,3 +300,10 @@ class foo {
|
|||
}
|
||||
int i();
|
||||
};
|
||||
|
||||
namespace dtor_fixit {
|
||||
class foo {
|
||||
~bar() { } // expected-error {{expected the class name after '~' to name a destructor}}
|
||||
// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:6-[[@LINE-1]]:9}:"foo"
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue