diff --git a/tests/parser/syntax/test_for_range.py b/tests/parser/syntax/test_for_range.py index 2c3065759e..d775f6aae0 100644 --- a/tests/parser/syntax/test_for_range.py +++ b/tests/parser/syntax/test_for_range.py @@ -22,6 +22,15 @@ def foo(): for i in range(x, x + 10): pass """, + """ +interface Foo: + def kick(): nonpayable +foos: Foo[3] +@external +def kick_foos(): + for foo in self.foos: + foo.kick() + """, ] diff --git a/vyper/codegen/types/convert.py b/vyper/codegen/types/convert.py index edf8aee7e4..22cce06fe4 100644 --- a/vyper/codegen/types/convert.py +++ b/vyper/codegen/types/convert.py @@ -10,6 +10,8 @@ def new_type_to_old_type(typ: new.BasePrimitive) -> old.NodeType: return old.BaseType("bool") if isinstance(typ, new.AddressDefinition): return old.BaseType("address") + if isinstance(typ, new.InterfaceDefinition): + return old.InterfaceType(typ._id) if isinstance(typ, new.Bytes32Definition): return old.BaseType("bytes32") if isinstance(typ, new.BytesArrayDefinition): diff --git a/vyper/semantics/types/__init__.py b/vyper/semantics/types/__init__.py index d6bd5d90ef..f831be4611 100644 --- a/vyper/semantics/types/__init__.py +++ b/vyper/semantics/types/__init__.py @@ -8,6 +8,7 @@ TupleDefinition, ) from .user.event import Event +from .user.interface import InterfaceDefinition from .user.struct import StructDefinition from .value.address import AddressDefinition from .value.array_value import BytesArrayDefinition, StringDefinition