mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	We only care about member types.
This commit is contained in:
		
							parent
							
								
									93c98a6e52
								
							
						
					
					
						commit
						735dbe6986
					
				
							
								
								
									
										2
									
								
								AST.cpp
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								AST.cpp
									
									
									
									
									
								
							@ -469,7 +469,7 @@ void MemberAccess::checkTypeRequirements()
 | 
			
		||||
	unsigned memberIndex = type.memberNameToIndex(*m_memberName);
 | 
			
		||||
	if (memberIndex >= type.getMemberCount())
 | 
			
		||||
		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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -234,7 +234,7 @@ u256 StructType::getStorageSize() const
 | 
			
		||||
bool StructType::canLiveOutsideStorage() const
 | 
			
		||||
{
 | 
			
		||||
	for (unsigned i = 0; i < getMemberCount(); ++i)
 | 
			
		||||
		if (!getMemberByIndex(i).getType()->canLiveOutsideStorage())
 | 
			
		||||
		if (!getMemberByIndex(i)->canLiveOutsideStorage())
 | 
			
		||||
			return false;
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
@ -258,9 +258,9 @@ unsigned StructType::memberNameToIndex(string const& _name) const
 | 
			
		||||
	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
 | 
			
		||||
@ -269,7 +269,7 @@ u256 StructType::getStorageOffsetOfMember(unsigned _index) const
 | 
			
		||||
	u256 offset;
 | 
			
		||||
//	vector<ASTPointer<VariableDeclaration>> const& members = m_struct.getMembers();
 | 
			
		||||
	for (unsigned index = 0; index < _index; ++index)
 | 
			
		||||
		offset += getMemberByIndex(index).getType()->getStorageSize();
 | 
			
		||||
		offset += getMemberByIndex(index)->getStorageSize();
 | 
			
		||||
	return offset;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								Types.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Types.h
									
									
									
									
									
								
							@ -190,7 +190,7 @@ public:
 | 
			
		||||
	unsigned getMemberCount() const;
 | 
			
		||||
	/// 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;
 | 
			
		||||
	VariableDeclaration const& getMemberByIndex(unsigned _index) const;
 | 
			
		||||
	std::shared_ptr<Type const> const& getMemberByIndex(unsigned _index) const;
 | 
			
		||||
	u256 getStorageOffsetOfMember(unsigned _index) const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user