From: Pierre-Emmanuel Patry <[email protected]>
gcc/rust/ChangeLog:
* ast/rust-cond-compilation.h: Delete copy constructor for
ConfigurationAll and ConfigurationAny.
Signed-off-by: Pierre-Emmanuel Patry <[email protected]>
---
gcc/rust/ast/rust-cond-compilation.h | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/gcc/rust/ast/rust-cond-compilation.h
b/gcc/rust/ast/rust-cond-compilation.h
index 9cfc9b590d7..5d5fba5e1c9 100644
--- a/gcc/rust/ast/rust-cond-compilation.h
+++ b/gcc/rust/ast/rust-cond-compilation.h
@@ -91,6 +91,10 @@ class ConfigurationAll : public ConfigurationPredicate
predicate_list; // inlined form
public:
+ ConfigurationAll (const ConfigurationAll &) = delete;
+
+ ConfigurationAll (ConfigurationAll &&) = default;
+
ConfigurationAll (
std::vector<std::unique_ptr<ConfigurationPredicate>> predicate_list)
: predicate_list (std::move (predicate_list))
@@ -103,7 +107,14 @@ protected:
* than base */
ConfigurationAll *clone_configuration_predicate_impl () const override
{
- return new ConfigurationAll (*this);
+ decltype (predicate_list) predicate_list_clone = {};
+ predicate_list_clone.reserve (predicate_list.size ());
+
+ for (const auto &predicate : predicate_list)
+ predicate_list_clone.push_back (
+ predicate->clone_configuration_predicate ());
+
+ return new ConfigurationAll (std::move (predicate_list_clone));
}
};
@@ -114,6 +125,10 @@ class ConfigurationAny : public ConfigurationPredicate
predicate_list; // inlined form
public:
+ ConfigurationAny (const ConfigurationAny &) = delete;
+
+ ConfigurationAny (ConfigurationAny &&) = default;
+
ConfigurationAny (
std::vector<std::unique_ptr<ConfigurationPredicate>> predicate_list)
: predicate_list (std::move (predicate_list))
@@ -126,7 +141,14 @@ protected:
* than base */
ConfigurationAny *clone_configuration_predicate_impl () const override
{
- return new ConfigurationAny (*this);
+ decltype (predicate_list) predicate_list_clone = {};
+ predicate_list_clone.reserve (predicate_list.size ());
+
+ for (const auto &predicate : predicate_list)
+ predicate_list_clone.push_back (
+ predicate->clone_configuration_predicate ());
+
+ return new ConfigurationAny (std::move (predicate_list_clone));
}
};
--
2.50.1