diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-06-16 19:56:08 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-06-16 19:56:08 +0000 |
commit | da59e09f1fd53350fcd949adbadd8148117f21b2 (patch) | |
tree | 15ef18d391ccc0de0b648a8e0696fac7bc346905 | |
parent | 1ed1a594e9befc91ebf00d81b41a2fdfab862657 (diff) |
C return types must be complete as well.
Moved check before we build the ObjCMessageExpr node.
(PR7386 related).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106139 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaExprObjC.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp index ed6e917f55..520ea2af91 100644 --- a/lib/Sema/SemaExprObjC.cpp +++ b/lib/Sema/SemaExprObjC.cpp @@ -1007,6 +1007,12 @@ Sema::OwningExprResult Sema::BuildInstanceMessage(ExprArg ReceiverE, if (CheckMessageArgumentTypes(Args, NumArgs, Sel, Method, false, LBracLoc, RBracLoc, ReturnType)) return ExprError(); + + if (!ReturnType->isVoidType()) { + if (RequireCompleteType(LBracLoc, ReturnType, + diag::err_illegal_message_expr_incomplete_type)) + return ExprError(); + } // Construct the appropriate ObjCMessageExpr instance. Expr *Result; @@ -1018,11 +1024,6 @@ Sema::OwningExprResult Sema::BuildInstanceMessage(ExprArg ReceiverE, else Result = ObjCMessageExpr::Create(Context, ReturnType, LBracLoc, Receiver, Sel, Method, Args, NumArgs, RBracLoc); - if (Context.getLangOptions().CPlusPlus && !ReturnType->isVoidType()) { - if (RequireCompleteType(LBracLoc, ReturnType, - diag::err_illegal_message_expr_incomplete_type)) - return ExprError(); - } return MaybeBindToTemporary(Result); } |