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()
|
insta = A()
|
||||||
inst = C(insta)
|
inst = C(insta)
|
||||||
inst.foo()
|
inst.foo()
|
||||||
|
|
||||||
|
insta2 = B()
|
||||||
|
inst2 = C(insta2)
|
||||||
|
inst2.foo()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue