mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #9515 from ethereum/smt_fix_extra_parens
[SMTChecker] Fix ICE when tuples have extra effectless parens
This commit is contained in:
commit
da189a6678
@ -35,6 +35,7 @@ Bugfixes:
|
||||
* Inheritance: Disallow public state variables overwriting ``pure`` functions.
|
||||
* NatSpec: Constructors and functions have consistent userdoc output.
|
||||
* SMTChecker: Fix internal error when assigning to a 1-tuple.
|
||||
* SMTChecker: Fix internal error when tuples have extra effectless parenthesis.
|
||||
* State Mutability: Constant public state variables are considered ``pure`` functions.
|
||||
* Type Checker: Fixing deduction issues on function types when function call has named arguments.
|
||||
* Immutables: Fix internal compiler error when immutables are not assigned.
|
||||
|
@ -1470,7 +1470,7 @@ void SMTEncoder::assignment(
|
||||
|
||||
void SMTEncoder::tupleAssignment(Expression const& _left, Expression const& _right)
|
||||
{
|
||||
auto lTuple = dynamic_cast<TupleExpression const*>(&_left);
|
||||
auto lTuple = dynamic_cast<TupleExpression const*>(innermostTuple(dynamic_cast<TupleExpression const&>(_left)));
|
||||
solAssert(lTuple, "");
|
||||
|
||||
auto const& lComponents = lTuple->components();
|
||||
|
@ -0,0 +1,7 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f2() public pure returns(int) {
|
||||
int a;
|
||||
((, a)) = (1, 2);
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f2() public pure returns(int) {
|
||||
int a;
|
||||
(((, a),)) = ((1, 2), 3);
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f2() public pure returns(int) {
|
||||
int a;
|
||||
(((((((, a),)))))) = ((1, 2), 3);
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f2() public pure returns(int) {
|
||||
int a;
|
||||
((((((, a)))),)) = ((1, 2), 3);
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f2() public pure returns(int) {
|
||||
int a;
|
||||
((((((((((((, a))))))),))))) = ((1, 2), 3);
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f() public pure {
|
||||
(((,))) = ((2),3);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user