[cfe-commits] r83764 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/CMakeLists.txt lib/Sema/Sema.h lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaExceptionSpec.cpp lib/Sema/SemaExprCXX.cpp lib/Sema/SemaType.cpp test/SemaCXX/exception-spec.cpp

Sebastian Redl sebastian.redl at getdesigned.at
Sat Oct 17 08:59:12 PDT 2009


Douglas Gregor wrote:
>
> On Oct 11, 2009, at 2:03 AM, Sebastian Redl wrote:
>> Author: cornedbee
>> Date: Sun Oct 11 04:03:14 2009
>> New Revision: 83764
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=83764&view=rev
>> Log:
>> Test exception spec compatibility on return type and parameters.
>>
>> Along the way, use RequireCompleteType when testing exception spec 
>> types.
>> Separate all the ugly spec stuff into its own file.
>
>> +/// CheckSpecifiedExceptionType - Check if the given type is valid 
>> in an
>> +/// exception specification. Incomplete types, or pointers to 
>> incomplete types
>> +/// other than void are not allowed.
>> +bool Sema::CheckSpecifiedExceptionType(QualType T, const SourceRange 
>> &Range) {
>> +  // FIXME: This may not correctly work with the fix for core issue 
>> 437,
>> +  // where a class's own type is considered complete within its 
>> body. But
>> +  // perhaps RequireCompleteType itself should contain this logic?
>
> My suggestion for this would be to have the parser delay semantic 
> analysis of the exception specifications of member functions in the 
> same way that we delay parsing of default arguments of the parameters 
> of member functions. For example, these checks on the exception 
> specialization for a member function declaration could be performed by 
> ActOnFinishDelayedCXXMethodDeclaration.
Hi Doug,

Where would I then put the checks for non-member functions, and how 
would I prevent the check from being done twice?

Sebastian



More information about the cfe-commits mailing list