From 9a1cb52cae2d48d2fc18d01b534bf4e3203f0cc1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
Date: Tue, 24 Dec 2024 12:50:28 +0100
Subject: [PATCH] libstdc++: add missing return in generator assignment
 operator [PR118196]

libstdc++-v3/ChangeLog:

	PR libstdc++/118196
	* include/std/generator (generator::operator=(generator)): Add
	missing 'return *this;'.
	* testsuite/24_iterators/range_generators/pr118196.cc: New test.
---
 libstdc++-v3/include/std/generator                  |  1 +
 .../24_iterators/range_generators/pr118196.cc       | 13 +++++++++++++
 2 files changed, 14 insertions(+)
 create mode 100644 libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc

diff --git a/libstdc++-v3/include/std/generator b/libstdc++-v3/include/std/generator
index 3a19d535ef86..7d7e9b708657 100644
--- a/libstdc++-v3/include/std/generator
+++ b/libstdc++-v3/include/std/generator
@@ -717,6 +717,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	swap(__other._M_coro, this->_M_coro);
 	swap(__other._M_began, this->_M_began);
+	return *this;
       }
 
       _Iterator
diff --git a/libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc b/libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc
new file mode 100644
index 000000000000..ae161df2a4a6
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc
@@ -0,0 +1,13 @@
+// { dg-do compile { target c++23 } }
+#include "<generator>"
+
+std::generator<int>
+generator();
+
+void
+try_reassigning()
+{
+  auto gen = generator();
+  auto gen2 = generator();
+  gen = std::move(gen2);
+}
-- 
GitLab