mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Allow path syntax for super constructor calls
This commit is contained in:
@@ -1293,14 +1293,14 @@ void ContractCompiler::appendModifierOrFunctionCode()
|
||||
ASTPointer<ModifierInvocation> const& modifierInvocation = m_currentFunction->modifiers()[m_modifierDepth];
|
||||
|
||||
// constructor call should be excluded
|
||||
if (dynamic_cast<ContractDefinition const*>(modifierInvocation->name()->annotation().referencedDeclaration))
|
||||
if (dynamic_cast<ContractDefinition const*>(modifierInvocation->name().annotation().referencedDeclaration))
|
||||
appendModifierOrFunctionCode();
|
||||
else
|
||||
{
|
||||
solAssert(*modifierInvocation->name()->annotation().requiredLookup == VirtualLookup::Virtual, "");
|
||||
solAssert(*modifierInvocation->name().annotation().requiredLookup == VirtualLookup::Virtual, "");
|
||||
|
||||
ModifierDefinition const& modifier = dynamic_cast<ModifierDefinition const&>(
|
||||
*modifierInvocation->name()->annotation().referencedDeclaration
|
||||
*modifierInvocation->name().annotation().referencedDeclaration
|
||||
).resolveVirtual(m_context.mostDerivedContract());
|
||||
CompilerContext::LocationSetter locationSetter(m_context, modifier);
|
||||
std::vector<ASTPointer<Expression>> const& modifierArguments =
|
||||
|
||||
@@ -444,7 +444,7 @@ pair<string, map<ContractDefinition const*, vector<string>>> IRGenerator::evalua
|
||||
if (FunctionDefinition const* constructor = _contract.constructor())
|
||||
for (ASTPointer<ModifierInvocation> const& modifier: constructor->modifiers())
|
||||
if (auto const* baseContract = dynamic_cast<ContractDefinition const*>(
|
||||
modifier->name()->annotation().referencedDeclaration
|
||||
modifier->name().annotation().referencedDeclaration
|
||||
))
|
||||
if (
|
||||
FunctionDefinition const* baseConstructor = baseContract->constructor();
|
||||
|
||||
Reference in New Issue
Block a user