aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-02-13 04:57:05 +0800
committerGitHub <noreply@github.com>2018-02-13 04:57:05 +0800
commitbf3682108048fd8646c0388f12ac0647df3099a3 (patch)
treefcb482a122ceac176faa6b628710033da513d7bb
parent69e2f497ba293c9b821dcad01eeb226446e18683 (diff)
parentd7e5cc3f9706ef55414c19abeac63e58bf5a1137 (diff)
downloaddexon-solidity-bf3682108048fd8646c0388f12ac0647df3099a3.tar.gz
dexon-solidity-bf3682108048fd8646c0388f12ac0647df3099a3.tar.zst
dexon-solidity-bf3682108048fd8646c0388f12ac0647df3099a3.zip
Merge pull request #3478 from ethereum/simplifierFormatNumber
Format number nicely in the IULIA simplifier.
-rw-r--r--libdevcore/CommonData.h8
-rw-r--r--libjulia/optimiser/SimplificationRules.cpp2
2 files changed, 9 insertions, 1 deletions
diff --git a/libdevcore/CommonData.h b/libdevcore/CommonData.h
index b85abe95..e410af5c 100644
--- a/libdevcore/CommonData.h
+++ b/libdevcore/CommonData.h
@@ -155,6 +155,14 @@ inline std::string formatNumber(bigint const& _value)
return _value.str();
}
+inline std::string formatNumber(u256 const& _value)
+{
+ if (_value > 0x1000000)
+ return toHex(toCompactBigEndian(_value), 2, HexPrefix::Add);
+ else
+ return _value.str();
+}
+
inline std::string toCompactHexWithPrefix(u256 val)
{
std::ostringstream ret;
diff --git a/libjulia/optimiser/SimplificationRules.cpp b/libjulia/optimiser/SimplificationRules.cpp
index a439caef..e5dbb059 100644
--- a/libjulia/optimiser/SimplificationRules.cpp
+++ b/libjulia/optimiser/SimplificationRules.cpp
@@ -154,7 +154,7 @@ Expression Pattern::toExpression(SourceLocation const& _location) const
if (m_kind == PatternKind::Constant)
{
assertThrow(m_data, OptimizerException, "No match group and no constant value given.");
- return Literal{_location, assembly::LiteralKind::Number, m_data->str(), ""};
+ return Literal{_location, assembly::LiteralKind::Number, formatNumber(*m_data), ""};
}
else if (m_kind == PatternKind::Operation)
{