================
@@ -0,0 +1,57 @@
+// RUN: %clang_cc1 -std=c++20 -Wdeprecated-declarations -I%S/Inputs -verify %s
+
+#include "std-compare.h"
+
+namespace GH147293 {
+struct A {
+ [[deprecated("use something else")]] int x = 42; // expected-note {{marked
deprecated here}}
+};
+
+A makeDefaultA() { return {}; } // ctor is implicit -> no warn
+A copyA(const A &a) { return a; } // copy-ctor implicit -> no warn
+
+void assignA() {
+ A a, b;
+ a = b; // copy-assign implicit -> no warn
+}
+
+void useA() {
+ A a;
+ (void)a.x; // expected-warning {{is deprecated}}
+}
+
+// Explicitly-defaulted ctor – now silent
+struct B {
+ [[deprecated]] int y;
+ B() = default; // no warning under new policy
+};
+
+}
+
+namespace GH147293_regression {
+
+struct A {
+ [[deprecated("use something else")]] int x = 42;
+
+ auto operator<=>(const A&) const = default;
+};
+
+void foo() {
+ A x, y;
+ // FIXME: We want the deprecation warnings because operator<=> uses A.x!
+ (void)(x == y);
+}
+
+}
----------------
zyn0217 wrote:
It's testing operator rewrites with the class defining spaceship, so I guess
you overlooked it 😄
https://github.com/llvm/llvm-project/pull/219177
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits