mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
breaking change. Enforce append semantics everywhere for parameter updates #5744
Replace semantics doesn't work with assumptions made elsewhere in code. The remedy is to apply append (override) semantics for parameter changes.
This commit is contained in:
parent
e8833f4dac
commit
fc77345bec
53 changed files with 101 additions and 98 deletions
|
@ -520,7 +520,7 @@ params_ref::~params_ref() {
|
|||
|
||||
params_ref::params_ref(params_ref const & p):
|
||||
m_params(nullptr) {
|
||||
operator=(p);
|
||||
set(p);
|
||||
}
|
||||
|
||||
void params_ref::display(std::ostream & out) const {
|
||||
|
@ -553,18 +553,18 @@ void params_ref::validate(param_descrs const & p) {
|
|||
m_params->validate(p);
|
||||
}
|
||||
|
||||
params_ref & params_ref::operator=(params_ref const & p) {
|
||||
|
||||
void params_ref::set(params_ref const & p) {
|
||||
if (p.m_params)
|
||||
p.m_params->inc_ref();
|
||||
if (m_params)
|
||||
m_params->dec_ref();
|
||||
m_params = p.m_params;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void params_ref::copy(params_ref const & src) {
|
||||
if (m_params == nullptr)
|
||||
operator=(src);
|
||||
if (m_params == nullptr || m_params->empty())
|
||||
set(src);
|
||||
else {
|
||||
init();
|
||||
copy_core(src.m_params);
|
||||
|
|
|
@ -35,6 +35,8 @@ class params_ref {
|
|||
params * m_params;
|
||||
void init();
|
||||
void copy_core(params const * p);
|
||||
params_ref& operator=(params_ref const& p) = delete;
|
||||
void set(params_ref const& p);
|
||||
public:
|
||||
params_ref():m_params(nullptr) {}
|
||||
params_ref(params_ref const & p);
|
||||
|
@ -42,8 +44,7 @@ public:
|
|||
|
||||
static params_ref const & get_empty() { return g_empty_params_ref; }
|
||||
|
||||
params_ref & operator=(params_ref const & p);
|
||||
|
||||
|
||||
// copy params from src
|
||||
void copy(params_ref const & src);
|
||||
void append(params_ref const & src) { copy(src); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue