зеркало из https://github.com/microsoft/clang-1.git
Fix the clang part of PR7952: rewrite the specialization of isa<> in DeclBase,
and stop abusing the multi-level dereference isa<> used to allow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131804 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
e885e188b2
Коммит
4d509341bd
|
@ -1355,17 +1355,12 @@ struct cast_convert_decl_context<ToTy, true> {
|
|||
namespace llvm {
|
||||
|
||||
/// isa<T>(DeclContext*)
|
||||
template<class ToTy>
|
||||
struct isa_impl_wrap<ToTy,
|
||||
const ::clang::DeclContext,const ::clang::DeclContext> {
|
||||
template <typename To>
|
||||
struct isa_impl<To, ::clang::DeclContext> {
|
||||
static bool doit(const ::clang::DeclContext &Val) {
|
||||
return ToTy::classofKind(Val.getDeclKind());
|
||||
return To::classofKind(Val.getDeclKind());
|
||||
}
|
||||
};
|
||||
template<class ToTy>
|
||||
struct isa_impl_wrap<ToTy, ::clang::DeclContext, ::clang::DeclContext>
|
||||
: public isa_impl_wrap<ToTy,
|
||||
const ::clang::DeclContext,const ::clang::DeclContext> {};
|
||||
|
||||
/// cast<T>(DeclContext*)
|
||||
template<class ToTy>
|
||||
|
|
|
@ -999,7 +999,7 @@ static CSFC_Result CollectStatementsForCase(const Stmt *S,
|
|||
// If we're looking for the case, just see if we can skip each of the
|
||||
// substatements.
|
||||
for (; Case && I != E; ++I) {
|
||||
HadSkippedDecl |= isa<DeclStmt>(I);
|
||||
HadSkippedDecl |= isa<DeclStmt>(*I);
|
||||
|
||||
switch (CollectStatementsForCase(*I, Case, FoundCase, ResultStmts)) {
|
||||
case CSFC_Failure: return CSFC_Failure;
|
||||
|
|
|
@ -65,7 +65,7 @@ clang::createInvocationFromCommandLine(llvm::ArrayRef<const char *> ArgList,
|
|||
// We expect to get back exactly one command job, if we didn't something
|
||||
// failed.
|
||||
const driver::JobList &Jobs = C->getJobs();
|
||||
if (Jobs.size() != 1 || !isa<driver::Command>(Jobs.begin())) {
|
||||
if (Jobs.size() != 1 || !isa<driver::Command>(*Jobs.begin())) {
|
||||
llvm::SmallString<256> Msg;
|
||||
llvm::raw_svector_ostream OS(Msg);
|
||||
C->PrintJob(OS, C->getJobs(), "; ", true);
|
||||
|
|
Загрузка…
Ссылка в новой задаче