[PATCH] D141818: Add test for an invalid requirement in requires expr.

Utkarsh Saxena via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 16 03:29:10 PST 2023


This revision was automatically updated to reflect the committed changes.
Closed by commit rG15ad244670a9: Add test for an invalid requirement in requires expr. (authored by usaxena95).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D141818/new/

https://reviews.llvm.org/D141818

Files:
  clang/test/SemaCXX/invalid-requirement-requires-expr.cpp


Index: clang/test/SemaCXX/invalid-requirement-requires-expr.cpp
===================================================================
--- /dev/null
+++ clang/test/SemaCXX/invalid-requirement-requires-expr.cpp
@@ -0,0 +1,27 @@
+// RUN: %clang -fsyntax-only -std=c++2a -Xclang -verify -ftemplate-depth=5 -ftemplate-backtrace-limit=4 %s
+
+// RequiresExpr contains invalid requirement. (Eg. Highly recurisive template).
+template<int x>
+struct A { static constexpr bool far(); };
+class B {
+    bool data_member;
+    friend struct A<1>;
+};
+
+template<>
+constexpr bool A<0>::far() { return true; }
+
+template<int x>
+constexpr bool A<x>::far() {
+    return requires(B b) {
+      b.data_member;
+      requires A<x-1>::far(); // #Invalid
+      // expected-error@#Invalid {{recursive template instantiation exceeded maximum depth}}
+      // expected-note@#Invalid {{in instantiation}}
+      // expected-note@#Invalid 2 {{while}}
+      // expected-note@#Invalid {{contexts in backtrace}}
+      // expected-note@#Invalid {{increase recursive template instantiation depth}}
+    };
+}
+static_assert(A<1>::far());
+static_assert(!A<6>::far()); // expected-note {{in instantiation of member function}}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D141818.489486.patch
Type: text/x-patch
Size: 1204 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230116/21c86145/attachment.bin>


More information about the cfe-commits mailing list