From 80c368dac1529994e736360812e2519e987e26b1 Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 10 May 2016 10:26:53 +0200 Subject: Prefer mobileType() to check rational range. --- libsolidity/ast/Types.cpp | 13 ++++--------- libsolidity/ast/Types.h | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) (limited to 'libsolidity/ast') diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp index 1dbb70e2..c2ebecb5 100644 --- a/libsolidity/ast/Types.cpp +++ b/libsolidity/ast/Types.cpp @@ -766,20 +766,15 @@ u256 RationalNumberType::literalValue(Literal const*) const TypePointer RationalNumberType::mobileType() const { if (m_value.denominator() == 1) - { - auto intType = integerType(); - solAssert(!!intType, "mobileType called with invalid integer constant " + toString(false)); - return intType; - } - auto fixType = fixedPointType(); - solAssert(!!fixType, "mobileType called with invalid fixed constant " + toString(false)); - return fixType; + return integerType(); + else + return fixedPointType(); } //TODO: combine integerType() and fixedPointType() into one function shared_ptr RationalNumberType::integerType() const { - solAssert(m_value.denominator() == 1, "Non integer type found."); + solAssert(m_value.denominator() == 1, "integerType() called for fractional number."); bigint value = integerPart(); bool negative = (value < 0); if (negative) // convert to positive number of same bit requirements diff --git a/libsolidity/ast/Types.h b/libsolidity/ast/Types.h index 5e826684..c3095c97 100644 --- a/libsolidity/ast/Types.h +++ b/libsolidity/ast/Types.h @@ -205,7 +205,7 @@ public: virtual unsigned sizeOnStack() const { return 1; } /// @returns the mobile (in contrast to static) type corresponding to the given type. /// This returns the corresponding integer type for ConstantTypes and the pointer type - /// for storage reference types. + /// for storage reference types. Might return a null pointer if there is no fitting type. virtual TypePointer mobileType() const { return shared_from_this(); } /// @returns true if this is a non-value type and the data of this type is stored at the /// given location. -- cgit