We only care about member types.

This commit is contained in:
Christian 2014-11-19 18:56:10 +01:00
parent 93c98a6e52
commit 735dbe6986
3 changed files with 6 additions and 6 deletions

View File

@ -469,7 +469,7 @@ void MemberAccess::checkTypeRequirements()
unsigned memberIndex = type.memberNameToIndex(*m_memberName); unsigned memberIndex = type.memberNameToIndex(*m_memberName);
if (memberIndex >= type.getMemberCount()) if (memberIndex >= type.getMemberCount())
BOOST_THROW_EXCEPTION(createTypeError("Member \"" + *m_memberName + "\" not found in " + type.toString())); BOOST_THROW_EXCEPTION(createTypeError("Member \"" + *m_memberName + "\" not found in " + type.toString()));
m_type = type.getMemberByIndex(memberIndex).getType(); m_type = type.getMemberByIndex(memberIndex);
m_isLvalue = true; m_isLvalue = true;
} }

View File

@ -234,7 +234,7 @@ u256 StructType::getStorageSize() const
bool StructType::canLiveOutsideStorage() const bool StructType::canLiveOutsideStorage() const
{ {
for (unsigned i = 0; i < getMemberCount(); ++i) for (unsigned i = 0; i < getMemberCount(); ++i)
if (!getMemberByIndex(i).getType()->canLiveOutsideStorage()) if (!getMemberByIndex(i)->canLiveOutsideStorage())
return false; return false;
return true; return true;
} }
@ -258,9 +258,9 @@ unsigned StructType::memberNameToIndex(string const& _name) const
return unsigned(-1); return unsigned(-1);
} }
VariableDeclaration const& StructType::getMemberByIndex(unsigned _index) const shared_ptr<Type const> const& StructType::getMemberByIndex(unsigned _index) const
{ {
return *m_struct.getMembers()[_index]; return m_struct.getMembers()[_index].getType();
} }
u256 StructType::getStorageOffsetOfMember(unsigned _index) const u256 StructType::getStorageOffsetOfMember(unsigned _index) const
@ -269,7 +269,7 @@ u256 StructType::getStorageOffsetOfMember(unsigned _index) const
u256 offset; u256 offset;
// vector<ASTPointer<VariableDeclaration>> const& members = m_struct.getMembers(); // vector<ASTPointer<VariableDeclaration>> const& members = m_struct.getMembers();
for (unsigned index = 0; index < _index; ++index) for (unsigned index = 0; index < _index; ++index)
offset += getMemberByIndex(index).getType()->getStorageSize(); offset += getMemberByIndex(index)->getStorageSize();
return offset; return offset;
} }

View File

@ -190,7 +190,7 @@ public:
unsigned getMemberCount() const; unsigned getMemberCount() const;
/// Returns the index of the member with name @a _name or unsigned(-1) if it does not exist. /// Returns the index of the member with name @a _name or unsigned(-1) if it does not exist.
unsigned memberNameToIndex(std::string const& _name) const; unsigned memberNameToIndex(std::string const& _name) const;
VariableDeclaration const& getMemberByIndex(unsigned _index) const; std::shared_ptr<Type const> const& getMemberByIndex(unsigned _index) const;
u256 getStorageOffsetOfMember(unsigned _index) const; u256 getStorageOffsetOfMember(unsigned _index) const;
private: private: