aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/ast
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-02-24 22:50:45 +0800
committerGitHub <noreply@github.com>2017-02-24 22:50:45 +0800
commitd2c79bf8e9400f783bf0feed34065882eae02a68 (patch)
treec6d2aeab5587ccf89a44d998839670d181b0e3fd /libsolidity/ast
parent673268a6f8345e9276764f13e105869f5be92adc (diff)
parent92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6 (diff)
downloaddexon-solidity-d2c79bf8e9400f783bf0feed34065882eae02a68.tar.gz
dexon-solidity-d2c79bf8e9400f783bf0feed34065882eae02a68.tar.zst
dexon-solidity-d2c79bf8e9400f783bf0feed34065882eae02a68.zip
Merge pull request #1700 from ethereum/fixNoMobile
Some checks for the existence of mobile type.
Diffstat (limited to 'libsolidity/ast')
-rw-r--r--libsolidity/ast/Types.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp
index 7fccccbc..99d6f4a2 100644
--- a/libsolidity/ast/Types.cpp
+++ b/libsolidity/ast/Types.cpp
@@ -252,9 +252,9 @@ TypePointer Type::commonType(TypePointer const& _a, TypePointer const& _b)
{
if (!_a || !_b)
return TypePointer();
- else if (_b->isImplicitlyConvertibleTo(*_a->mobileType()))
+ else if (_a->mobileType() && _b->isImplicitlyConvertibleTo(*_a->mobileType()))
return _a->mobileType();
- else if (_a->isImplicitlyConvertibleTo(*_b->mobileType()))
+ else if (_b->mobileType() && _a->isImplicitlyConvertibleTo(*_b->mobileType()))
return _b->mobileType();
else
return TypePointer();
@@ -1897,7 +1897,10 @@ TypePointer TupleType::closestTemporaryType(TypePointer const& _targetType) cons
size_t si = fillRight ? i : components().size() - i - 1;
size_t ti = fillRight ? i : targetComponents.size() - i - 1;
if (components()[si] && targetComponents[ti])
+ {
tempComponents[ti] = components()[si]->closestTemporaryType(targetComponents[ti]);
+ solAssert(tempComponents[ti], "");
+ }
}
return make_shared<TupleType>(tempComponents);
}