trigger error when runtimeCode is called on contracts with immutables

This commit is contained in:
Mathias Baumann
2020-05-07 15:10:04 +02:00
parent 80b4e51fd6
commit 50e59f1008
5 changed files with 47 additions and 4 deletions
+13 -3
View File
@@ -2663,9 +2663,19 @@ bool TypeChecker::visit(MemberAccess const& _memberAccess)
))
{
annotation.isPure = true;
m_scope->annotation().contractDependencies.insert(
&dynamic_cast<ContractType const&>(*magicType->typeArgument()).contractDefinition()
);
ContractType const& accessedContractType = dynamic_cast<ContractType const&>(*magicType->typeArgument());
m_scope->annotation().contractDependencies.insert(&accessedContractType.contractDefinition());
if (
memberName == "runtimeCode" &&
!accessedContractType.immutableVariables().empty()
)
m_errorReporter.typeError(
9274_error,
_memberAccess.location(),
"\"runtimeCode\" is not available for contracts containing immutable variables."
);
if (contractDependenciesAreCyclic(*m_scope))
m_errorReporter.typeError(
4224_error,