diff options
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaExceptionSpec.cpp | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExceptionSpec.cpp b/clang/lib/Sema/SemaExceptionSpec.cpp index f12bf2415db..f2ae6bfe2ff 100644 --- a/clang/lib/Sema/SemaExceptionSpec.cpp +++ b/clang/lib/Sema/SemaExceptionSpec.cpp @@ -110,10 +110,13 @@ bool Sema::CheckSpecifiedExceptionType(QualType &T, SourceRange Range) {    //   A type denoted in an exception-specification shall not denote a    //   pointer or reference to an incomplete type, other than (cv) void* or a    //   pointer or reference to a class currently being defined. +  // In Microsoft mode, downgrade this to a warning. +  unsigned DiagID = diag::err_incomplete_in_exception_spec; +  if (getLangOpts().MicrosoftExt) +    DiagID = diag::ext_incomplete_in_exception_spec;    if (!(PointeeT->isRecordType() &&          PointeeT->getAs<RecordType>()->isBeingDefined()) && -      RequireCompleteType(Range.getBegin(), PointeeT, -                          diag::err_incomplete_in_exception_spec, Kind, Range)) +      RequireCompleteType(Range.getBegin(), PointeeT, DiagID, Kind, Range))      return true;    return false;  | 

