diff options
Diffstat (limited to 'clang/lib/Sema/SemaSwift.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaSwift.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/clang/lib/Sema/SemaSwift.cpp b/clang/lib/Sema/SemaSwift.cpp index a99222c5ed55..f0c9cc8620af 100644 --- a/clang/lib/Sema/SemaSwift.cpp +++ b/clang/lib/Sema/SemaSwift.cpp @@ -129,9 +129,9 @@ static bool isErrorParameter(Sema &S, QualType QT) { // Check for CFError**. if (const auto *PT = Pointee->getAs<PointerType>()) - if (const auto *RT = PT->getPointeeType()->getAs<RecordType>()) - if (S.ObjC().isCFError(RT->getOriginalDecl()->getDefinitionOrSelf())) - return true; + if (auto *RD = PT->getPointeeType()->getAsRecordDecl(); + RD && S.ObjC().isCFError(RD)) + return true; return false; } @@ -271,12 +271,10 @@ static void checkSwiftAsyncErrorBlock(Sema &S, Decl *D, } // Check for CFError *. if (const auto *PtrTy = Param->getAs<PointerType>()) { - if (const auto *RT = PtrTy->getPointeeType()->getAs<RecordType>()) { - if (S.ObjC().isCFError( - RT->getOriginalDecl()->getDefinitionOrSelf())) { - AnyErrorParams = true; - break; - } + if (auto *RD = PtrTy->getPointeeType()->getAsRecordDecl(); + RD && S.ObjC().isCFError(RD)) { + AnyErrorParams = true; + break; } } } @@ -354,7 +352,7 @@ static bool validateSwiftFunctionName(Sema &S, const ParsedAttr &AL, else if (Name.consume_front("setter:")) IsSetter = true; - if (Name.back() != ')') { + if (Name.empty() || Name.back() != ')') { S.Diag(Loc, diag::warn_attr_swift_name_function) << AL; return false; } |
