[clang] [C++23] Fix infinite recursion (Clang 19.x regression) (PR #104829)

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 19 13:51:42 PDT 2024


================
@@ -20,3 +19,29 @@ struct S : HasVT {
   HasD<> v;
 };
 
+// Ensure we don't get infinite recursion from the check, however. See GH104802
+namespace GH104802 {
+class foo {       // expected-note {{definition of 'GH104802::foo' is not complete until the closing '}'}}
+  foo a;          // expected-error {{field has incomplete type 'foo'}}
+
+  virtual int c();
+};
+
+class bar {       // expected-note {{definition of 'GH104802::bar' is not complete until the closing '}'}}
+  const bar a;    // expected-error {{field has incomplete type 'const bar'}}
+
+  virtual int c();
+};
+
+class baz {       // expected-note {{definition of 'GH104802::baz' is not complete until the closing '}'}}
+  typedef class baz blech;
----------------
AaronBallman wrote:

No need; typedefs already test type canonicalization.

https://github.com/llvm/llvm-project/pull/104829


More information about the cfe-commits mailing list