summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclObjC.cpp
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@apple.com>2018-04-12 06:01:41 +0000
committerAkira Hatanaka <ahatanaka@apple.com>2018-04-12 06:01:41 +0000
commitff6c4f370205d66f0e001999a739024c9c6d5ff1 (patch)
tree2431183006de1abed55bf331ccefe2cebd05044b /clang/lib/Sema/SemaDeclObjC.cpp
parentbcadfee2ad0eb951d88a4c516150122fdf004617 (diff)
downloadbcm5719-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.cpp7
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();
OpenPOWER on IntegriCloud