diff options
author | chriseth <c@ethdev.com> | 2015-11-20 01:02:04 +0800 |
---|---|---|
committer | chriseth <c@ethdev.com> | 2015-11-26 22:37:55 +0800 |
commit | 86495dfc57dde9b825ffd8c219ea809446e978f9 (patch) | |
tree | 99003d3865a0fbb9c08bd20c6b290f0702f31821 /libsolidity/codegen/ExpressionCompiler.cpp | |
parent | c498dcce22b2921ee57f280da9117e491c021e1b (diff) | |
download | dexon-solidity-86495dfc57dde9b825ffd8c219ea809446e978f9.tar.gz dexon-solidity-86495dfc57dde9b825ffd8c219ea809446e978f9.tar.zst dexon-solidity-86495dfc57dde9b825ffd8c219ea809446e978f9.zip |
Make members context-sensitive.
Diffstat (limited to 'libsolidity/codegen/ExpressionCompiler.cpp')
-rw-r--r-- | libsolidity/codegen/ExpressionCompiler.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/libsolidity/codegen/ExpressionCompiler.cpp b/libsolidity/codegen/ExpressionCompiler.cpp index c94c988b..6c288ae7 100644 --- a/libsolidity/codegen/ExpressionCompiler.cpp +++ b/libsolidity/codegen/ExpressionCompiler.cpp @@ -888,10 +888,6 @@ void ExpressionCompiler::endVisit(MemberAccess const& _memberAccess) case Type::Category::TypeType: { TypeType const& type = dynamic_cast<TypeType const&>(*_memberAccess.expression().annotation().type); - solAssert( - !type.members().membersByName(_memberAccess.memberName()).empty(), - "Invalid member access to " + type.toString(false) - ); if (dynamic_cast<ContractType const*>(type.actualType().get())) { @@ -1043,11 +1039,11 @@ void ExpressionCompiler::endVisit(Identifier const& _identifier) Declaration const* declaration = _identifier.annotation().referencedDeclaration; if (MagicVariableDeclaration const* magicVar = dynamic_cast<MagicVariableDeclaration const*>(declaration)) { - switch (magicVar->type(_identifier.annotation().contractScope)->category()) + switch (magicVar->type()->category()) { case Type::Category::Contract: // "this" or "super" - if (!dynamic_cast<ContractType const&>(*magicVar->type(_identifier.annotation().contractScope)).isSuper()) + if (!dynamic_cast<ContractType const&>(*magicVar->type()).isSuper()) m_context << eth::Instruction::ADDRESS; break; case Type::Category::Integer: |