Skip to content

Commit 1b8beed

Browse files
committed
Remove let_exprt's default constructor
This fosters RIAA and avoids using the deprecated symbol_exprt() constructor. Also make let_exprt a ternary_exprt.
1 parent 3e7bc8e commit 1b8beed

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

src/solvers/smt2/smt2_conv.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4754,13 +4754,10 @@ exprt smt2_convt::letify_rec(
47544754
if(map.find(current)->second.count < LET_COUNT)
47554755
return letify_rec(expr, let_order, map, i+1);
47564756

4757-
let_exprt let;
4758-
4759-
let.symbol() = map.find(current)->second.let_symbol;
4760-
let.value() = substitute_let(current, map);
4761-
let.where() = letify_rec(expr, let_order, map, i+1);
4762-
4763-
return let;
4757+
return let_exprt(
4758+
map.find(current)->second.let_symbol,
4759+
substitute_let(current, map),
4760+
letify_rec(expr, let_order, map, i + 1));
47644761
}
47654762

47664763
void smt2_convt::collect_bindings(

src/solvers/smt2/smt2_parser.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,10 @@ exprt smt2_parsert::let_expression()
188188
// go backwards, build let_expr
189189
for(auto r_it=bindings.rbegin(); r_it!=bindings.rend(); r_it++)
190190
{
191-
let_exprt let;
192-
let.symbol()=symbol_exprt(r_it->first, r_it->second.type());
193-
let.value()=r_it->second;
194-
let.type()=result.type();
195-
let.where().swap(result);
191+
const let_exprt let(
192+
symbol_exprt(r_it->first, r_it->second.type()),
193+
r_it->second,
194+
result);
196195
result=let;
197196
}
198197

src/util/std_expr.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4491,13 +4491,15 @@ class infinity_exprt : public nullary_exprt
44914491
};
44924492

44934493
/// \brief A let expression
4494-
class let_exprt:public exprt
4494+
class let_exprt : public ternary_exprt
44954495
{
44964496
public:
4497-
let_exprt():exprt(ID_let)
4497+
let_exprt(
4498+
const symbol_exprt &symbol,
4499+
const exprt &value,
4500+
const exprt &where)
4501+
: ternary_exprt(ID_let, symbol, value, where, where.type())
44984502
{
4499-
operands().resize(3);
4500-
op0()=symbol_exprt();
45014503
}
45024504

45034505
symbol_exprt &symbol()

0 commit comments

Comments
 (0)