shafik updated this revision to Diff 479161. shafik added a comment. Bring back assert but w/ the check for `InitListExpr` removed.
CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138947/new/ https://reviews.llvm.org/D138947 Files: clang/lib/Sema/SemaExprCXX.cpp clang/test/SemaCXX/cxx0x-initializer-references.cpp clang/test/SemaCXX/cxx2a-consteval.cpp Index: clang/test/SemaCXX/cxx2a-consteval.cpp =================================================================== --- clang/test/SemaCXX/cxx2a-consteval.cpp +++ clang/test/SemaCXX/cxx2a-consteval.cpp @@ -1018,3 +1018,14 @@ (void)[](int i) consteval { return i; }(0); } } // namespace GH50455 + +namespace GH58302 { +struct A { + consteval A(){} + consteval operator int() { return 1;} +}; + +int f() { + int x = A{}; +} +} Index: clang/test/SemaCXX/cxx0x-initializer-references.cpp =================================================================== --- clang/test/SemaCXX/cxx0x-initializer-references.cpp +++ clang/test/SemaCXX/cxx0x-initializer-references.cpp @@ -140,3 +140,21 @@ namespace PR21834 { const int &a = (const int &){0}; // expected-error {{cannot bind to an initializer list}} } + +namespace GH59100 { +class v {}; + +template <typename T> +class V : public v {}; + +using T = const V<int> &; + +template <class D> +void f() { + auto t = T{}; +} + +void z() { + f<int>(); +} +} Index: clang/lib/Sema/SemaExprCXX.cpp =================================================================== --- clang/lib/Sema/SemaExprCXX.cpp +++ clang/lib/Sema/SemaExprCXX.cpp @@ -1459,9 +1459,8 @@ QualType Ty = TInfo->getType(); SourceLocation TyBeginLoc = TInfo->getTypeLoc().getBeginLoc(); - assert((!ListInitialization || - (Exprs.size() == 1 && isa<InitListExpr>(Exprs[0]))) && - "List initialization must have initializer list as expression."); + assert((!ListInitialization || Exprs.size() == 1) && + "Too many expressions for list initialization."); SourceRange FullRange = SourceRange(TyBeginLoc, RParenOrBraceLoc); InitializedEntity Entity =
Index: clang/test/SemaCXX/cxx2a-consteval.cpp =================================================================== --- clang/test/SemaCXX/cxx2a-consteval.cpp +++ clang/test/SemaCXX/cxx2a-consteval.cpp @@ -1018,3 +1018,14 @@ (void)[](int i) consteval { return i; }(0); } } // namespace GH50455 + +namespace GH58302 { +struct A { + consteval A(){} + consteval operator int() { return 1;} +}; + +int f() { + int x = A{}; +} +} Index: clang/test/SemaCXX/cxx0x-initializer-references.cpp =================================================================== --- clang/test/SemaCXX/cxx0x-initializer-references.cpp +++ clang/test/SemaCXX/cxx0x-initializer-references.cpp @@ -140,3 +140,21 @@ namespace PR21834 { const int &a = (const int &){0}; // expected-error {{cannot bind to an initializer list}} } + +namespace GH59100 { +class v {}; + +template <typename T> +class V : public v {}; + +using T = const V<int> &; + +template <class D> +void f() { + auto t = T{}; +} + +void z() { + f<int>(); +} +} Index: clang/lib/Sema/SemaExprCXX.cpp =================================================================== --- clang/lib/Sema/SemaExprCXX.cpp +++ clang/lib/Sema/SemaExprCXX.cpp @@ -1459,9 +1459,8 @@ QualType Ty = TInfo->getType(); SourceLocation TyBeginLoc = TInfo->getTypeLoc().getBeginLoc(); - assert((!ListInitialization || - (Exprs.size() == 1 && isa<InitListExpr>(Exprs[0]))) && - "List initialization must have initializer list as expression."); + assert((!ListInitialization || Exprs.size() == 1) && + "Too many expressions for list initialization."); SourceRange FullRange = SourceRange(TyBeginLoc, RParenOrBraceLoc); InitializedEntity Entity =
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits