diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2018-04-12 06:01:41 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2018-04-12 06:01:41 +0000 |
commit | ff6c4f370205d66f0e001999a739024c9c6d5ff1 (patch) | |
tree | 2431183006de1abed55bf331ccefe2cebd05044b /clang/lib/Sema/SemaDeclObjC.cpp | |
parent | bcadfee2ad0eb951d88a4c516150122fdf004617 (diff) | |
download | bcm5719-llvm-ff6c4f370205d66f0e001999a739024c9c6d5ff1.tar.gz bcm5719-llvm-ff6c4f370205d66f0e001999a739024c9c6d5ff1.zip |
[Sema][ObjC] Ensure that the return type of an ObjC method is a complete
type.
Copy the code in ActOnStartOfFunctionDef that checks a function's return
type to ActOnStartOfObjCMethodDef. This fixes an assertion failure in
IRGen caused by an uninstantiated return type.
rdar://problem/38691818
llvm-svn: 329879
Diffstat (limited to 'clang/lib/Sema/SemaDeclObjC.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 7b92898b993..75c5ff56be6 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -341,6 +341,13 @@ void Sema::ActOnStartOfObjCMethodDef(Scope *FnBodyScope, Decl *D) { if (!MDecl) return; + QualType ResultType = MDecl->getReturnType(); + if (!ResultType->isDependentType() && !ResultType->isVoidType() && + !MDecl->isInvalidDecl() && + RequireCompleteType(MDecl->getLocation(), ResultType, + diag::err_func_def_incomplete_result)) + MDecl->setInvalidDecl(); + // Allow all of Sema to see that we are entering a method definition. PushDeclContext(FnBodyScope, MDecl); PushFunctionScope(); |