diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-18 18:39:17 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2017-10-18 00:59:01 +0800 |
commit | c99d2aae042643d9d26a4b952e07ca90f11a83c3 (patch) | |
tree | 4935870d142b7870900a480bcbe66ef2cc146f4d /libsolidity/analysis | |
parent | c67b559ead9676fb1983e09c512dd9f483c0b6f1 (diff) | |
download | dexon-solidity-c99d2aae042643d9d26a4b952e07ca90f11a83c3.tar.gz dexon-solidity-c99d2aae042643d9d26a4b952e07ca90f11a83c3.tar.zst dexon-solidity-c99d2aae042643d9d26a4b952e07ca90f11a83c3.zip |
Validate each tuple literal
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r-- | libsolidity/analysis/TypeChecker.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index c2fba565..054912dd 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -1293,6 +1293,12 @@ bool TypeChecker::visit(TupleExpression const& _tuple) { components[i]->accept(*this); types.push_back(type(*components[i])); + + // Note: code generation will visit each of the expression even if they are not assigned from. + if (types[i]->category() == Type::Category::RationalNumber) + if (!dynamic_cast<RationalNumberType const&>(*types[i]).mobileType()) + m_errorReporter.fatalTypeError(components[i]->location(), "Invalid rational number."); + if (_tuple.isInlineArray()) solAssert(!!types[i], "Inline array cannot have empty components"); if (_tuple.isInlineArray()) |