Merge pull request #11456 from ethereum/ice-abstract-contract-mapping-constructor

Fix ICE related to mapping types in abstract contract constructor
This commit is contained in:
chriseth
2021-05-31 15:35:26 +02:00
committed by GitHub
7 changed files with 78 additions and 1 deletions
+6 -1
View File
@@ -588,7 +588,12 @@ bool TypeChecker::visit(VariableDeclaration const& _variable)
if (result)
{
bool isLibraryStorageParameter = (_variable.isLibraryFunctionParameter() && referenceType->location() == DataLocation::Storage);
bool callDataCheckRequired = ((_variable.isConstructorParameter() || _variable.isPublicCallableParameter()) && !isLibraryStorageParameter);
// We skip the calldata check for abstract contract constructors.
bool isAbstractConstructorParam = _variable.isConstructorParameter() && m_currentContract && m_currentContract->abstract();
bool callDataCheckRequired =
!isAbstractConstructorParam &&
(_variable.isConstructorParameter() || _variable.isPublicCallableParameter()) &&
!isLibraryStorageParameter;
if (callDataCheckRequired)
{
if (!referenceType->interfaceType(false))