mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Deprecate using unit denominations in combination with hex numbers. Closes #3574.
This commit is contained in:
@@ -2021,6 +2021,8 @@ void TypeChecker::endVisit(ElementaryTypeNameExpression const& _expr)
|
||||
|
||||
void TypeChecker::endVisit(Literal const& _literal)
|
||||
{
|
||||
bool const v050 = m_scope->sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050);
|
||||
|
||||
if (_literal.looksLikeAddress())
|
||||
{
|
||||
if (_literal.passesAddressChecksum())
|
||||
@@ -2034,6 +2036,19 @@ void TypeChecker::endVisit(Literal const& _literal)
|
||||
"For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals"
|
||||
);
|
||||
}
|
||||
if (_literal.isHexNumber() && _literal.subDenomination() != Literal::SubDenomination::None)
|
||||
{
|
||||
if (v050)
|
||||
m_errorReporter.fatalTypeError(
|
||||
_literal.location(),
|
||||
"Hexadecimal numbers cannot be used with unit denominations."
|
||||
);
|
||||
else
|
||||
m_errorReporter.warning(
|
||||
_literal.location(),
|
||||
"Hexadecimal numbers with unit denominations are deprecated."
|
||||
);
|
||||
}
|
||||
if (!_literal.annotation().type)
|
||||
_literal.annotation().type = Type::forLiteral(_literal);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user