From: Richard Trieu Date: Tue, 13 Sep 2016 01:20:40 +0000 (+0000) Subject: Fix interaction between serialization and c++1z feature. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3fdacc178fd2b752353fc6a0695d0be635bbbbc0;p=clang Fix interaction between serialization and c++1z feature. In c++1z, static_assert is not required to have a StringLiteral message, where previously it was required. Update the AST Reader to be able to handle a null StringLiteral. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281286 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp index d68d6d308a..686c7f2e34 100644 --- a/lib/Serialization/ASTReaderDecl.cpp +++ b/lib/Serialization/ASTReaderDecl.cpp @@ -2239,7 +2239,7 @@ void ASTDeclReader::VisitStaticAssertDecl(StaticAssertDecl *D) { VisitDecl(D); D->AssertExprAndFailed.setPointer(Reader.ReadExpr(F)); D->AssertExprAndFailed.setInt(Record[Idx++]); - D->Message = cast(Reader.ReadExpr(F)); + D->Message = cast_or_null(Reader.ReadExpr(F)); D->RParenLoc = ReadSourceLocation(Record, Idx); } diff --git a/test/Modules/Inputs/static_assert/a.h b/test/Modules/Inputs/static_assert/a.h new file mode 100644 index 0000000000..e876df06d0 --- /dev/null +++ b/test/Modules/Inputs/static_assert/a.h @@ -0,0 +1,3 @@ +class S { + static_assert(4 == 4); +}; diff --git a/test/Modules/Inputs/static_assert/module.modulemap b/test/Modules/Inputs/static_assert/module.modulemap new file mode 100644 index 0000000000..bb00c840ce --- /dev/null +++ b/test/Modules/Inputs/static_assert/module.modulemap @@ -0,0 +1 @@ +module a { header "a.h" } diff --git a/test/Modules/static_assert.cpp b/test/Modules/static_assert.cpp new file mode 100644 index 0000000000..d1b759073c --- /dev/null +++ b/test/Modules/static_assert.cpp @@ -0,0 +1,8 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fimplicit-module-maps \ +// RUN: -I%S/Inputs/static_assert -std=c++1z -verify %s +// expected-no-diagnostics + +#include "a.h" + +S s;