Fix Call Type Error of Inheritance #295
|
@ -0,0 +1,32 @@
|
|||
from __future__ import annotations
|
||||
|
||||
@extern
|
||||
def output_int32(x: int32):
|
||||
...
|
||||
|
||||
class A:
|
||||
a: int32
|
||||
|
||||
def __init__(self, a: int32):
|
||||
self.a = a
|
||||
|
||||
def f1(self):
|
||||
self.f2()
|
||||
|
||||
def f2(self):
|
||||
output_int32(self.a)
|
||||
|
||||
class B(A):
|
||||
b: int32
|
||||
|
||||
def __init__(self, b: int32):
|
||||
self.a = b + 1
|
||||
self.b = b
|
||||
|
||||
|
||||
def run() -> int32:
|
||||
aaa = A(5)
|
||||
bbb = B(2)
|
||||
aaa.f1()
|
||||
bbb.f1()
|
||||
return 0
|
|
@ -0,0 +1,36 @@
|
|||
from __future__ import annotations
|
||||
|
||||
@extern
|
||||
def output_int32(a: int32):
|
||||
...
|
||||
|
||||
class A:
|
||||
d: int32
|
||||
a: list[B]
|
||||
def __init__(self, b: list[B]):
|
||||
self.d = 123
|
||||
self.a = b
|
||||
|
||||
def f(self):
|
||||
output_int32(self.d)
|
||||
|
||||
class B:
|
||||
a: A
|
||||
def __init__(self, a: A):
|
||||
self.a = a
|
||||
|
||||
def ff(self):
|
||||
self.a.f()
|
||||
|
||||
class Demo:
|
||||
a: A
|
||||
def __init__(self, a: A):
|
||||
self.a = a
|
||||
|
||||
def run() -> int32:
|
||||
aa = A([])
|
||||
bb = B(aa)
|
||||
aa.a = [bb]
|
||||
d = Demo(aa)
|
||||
d.a.a[0].ff()
|
||||
return 0
|
|
@ -34,5 +34,9 @@ def run() -> int32:
|
|||
insta = A()
|
||||
inst = C(insta)
|
||||
inst.foo()
|
||||
|
||||
insta2 = B()
|
||||
inst2 = C(insta2)
|
||||
inst2.foo()
|
||||
return 0
|
||||
|
||||
|
|
Loading…
Reference in New Issue