mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #10456 from ethereum/convertToSuper
Disallow conversion to super.
This commit is contained in:
commit
34ee7a4dc9
@ -2351,7 +2351,16 @@ bool TypeChecker::visit(FunctionCall const& _functionCall)
|
||||
funcCallAnno.kind = FunctionCallKind::StructConstructorCall;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (auto const* contractType = dynamic_cast<ContractType const*>(actualType))
|
||||
if (contractType->isSuper())
|
||||
m_errorReporter.fatalTypeError(
|
||||
1744_error,
|
||||
_functionCall.location(),
|
||||
"Cannot convert to the super type."
|
||||
);
|
||||
funcCallAnno.kind = FunctionCallKind::TypeConversion;
|
||||
}
|
||||
|
||||
funcCallAnno.isPure = argumentsArePure;
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
super().x;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 1744: (52-59): Cannot convert to the super type.
|
@ -0,0 +1,7 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
super(this).f();
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 1744: (52-63): Cannot convert to the super type.
|
Loading…
Reference in New Issue
Block a user