mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Prohibit interfaces inheriting from non-interfaces
This commit is contained in:
parent
1cc8ce1656
commit
573a054d5d
@ -237,6 +237,9 @@ void TypeChecker::endVisit(InheritanceSpecifier const& _inheritance)
|
|||||||
auto base = dynamic_cast<ContractDefinition const*>(&dereference(_inheritance.name()));
|
auto base = dynamic_cast<ContractDefinition const*>(&dereference(_inheritance.name()));
|
||||||
solAssert(base, "Base contract not available.");
|
solAssert(base, "Base contract not available.");
|
||||||
|
|
||||||
|
if (m_scope->isInterface() && !base->isInterface())
|
||||||
|
m_errorReporter.typeError(_inheritance.location(), "Interfaces can only inherit from other interfaces.");
|
||||||
|
|
||||||
if (base->isLibrary())
|
if (base->isLibrary())
|
||||||
m_errorReporter.typeError(_inheritance.location(), "Libraries cannot be inherited from.");
|
m_errorReporter.typeError(_inheritance.location(), "Libraries cannot be inherited from.");
|
||||||
|
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
contract C {}
|
||||||
|
interface I is C {}
|
||||||
|
|
||||||
|
// ----
|
||||||
|
// TypeError: (29-30): Interfaces can only inherit from other interfaces.
|
Loading…
Reference in New Issue
Block a user