mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix crash when using json compiler with exponentiation.
This commit is contained in:
parent
0d736fde6d
commit
345c0f36fb
@ -466,7 +466,8 @@ bool Why3Translator::visit(BinaryOperation const& _binaryOperation)
|
|||||||
auto const& constantNumber = dynamic_cast<RationalNumberType const&>(commonType);
|
auto const& constantNumber = dynamic_cast<RationalNumberType const&>(commonType);
|
||||||
if (constantNumber.isFractional())
|
if (constantNumber.isFractional())
|
||||||
error(_binaryOperation, "Fractional numbers not supported.");
|
error(_binaryOperation, "Fractional numbers not supported.");
|
||||||
add("(of_int " + toString(commonType.literalValue(nullptr)) + ")");
|
else
|
||||||
|
add("(of_int " + toString(commonType.literalValue(nullptr)) + ")");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static const map<Token::Value, char const*> optrans({
|
static const map<Token::Value, char const*> optrans({
|
||||||
@ -488,7 +489,10 @@ bool Why3Translator::visit(BinaryOperation const& _binaryOperation)
|
|||||||
{Token::GreaterThanOrEqual, " >= "}
|
{Token::GreaterThanOrEqual, " >= "}
|
||||||
});
|
});
|
||||||
if (!optrans.count(c_op))
|
if (!optrans.count(c_op))
|
||||||
|
{
|
||||||
error(_binaryOperation, "Operator not supported.");
|
error(_binaryOperation, "Operator not supported.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
add("(");
|
add("(");
|
||||||
leftExpression.accept(*this);
|
leftExpression.accept(*this);
|
||||||
@ -676,7 +680,8 @@ bool Why3Translator::visit(Literal const& _literal)
|
|||||||
auto const& constantNumber = dynamic_cast<RationalNumberType const&>(*type);
|
auto const& constantNumber = dynamic_cast<RationalNumberType const&>(*type);
|
||||||
if (constantNumber.isFractional())
|
if (constantNumber.isFractional())
|
||||||
error(_literal, "Fractional numbers not supported.");
|
error(_literal, "Fractional numbers not supported.");
|
||||||
add("(of_int " + toString(type->literalValue(&_literal)) + ")");
|
else
|
||||||
|
add("(of_int " + toString(type->literalValue(&_literal)) + ")");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user