r196296 - Issue diagnostic when constructor or destructor

Jordan Rose jordan_rose at apple.com
Tue Dec 3 09:35:31 PST 2013


On Dec 3, 2013, at 9:10 , Fariborz Jahanian <fjahanian at apple.com> wrote:

> Author: fjahanian
> Date: Tue Dec  3 11:10:08 2013
> New Revision: 196296
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=196296&view=rev
> Log:
> Issue diagnostic when constructor or destructor
> return void expression. // rdar://15366494
> pr17759.
> 
> Modified:
>    cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>    cfe/trunk/lib/Sema/SemaStmt.cpp
>    cfe/trunk/test/SemaCXX/return.cpp
> 
> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=196296&r1=196295&r2=196296&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Tue Dec  3 11:10:08 2013
> @@ -6426,6 +6426,8 @@ def ext_return_has_void_expr : Extension
> def err_return_init_list : Error<
>   "%select{void function|void method|constructor|destructor}1 %0 "
>   "must not return a value">;
> +def err_ctor_dtor_returns_void : Error<
> +  "%select{constructor|destructor}1 %0 must not return void expression">;

Nitpicking: this wording makes it sound like it must return some other kind of expression. How about "...may not return an expression"? Or, if we care about being technically correct, "using an expression with 'return' is not allowed in a %select{constructor|destructor}0".

Jordan



More information about the cfe-commits mailing list