class A
init do end
end
-
class B
-special A
- meth foo do 0.output
+ super A
+ fun foo do 0.output
init do end
end
-
class C
-special B
- meth bar do 1.output
+ super B
+ fun bar do 1.output
init do end
end
+
+#alt5# var b: A = new B
var a: A = new C
-#alt5# a = new B
+#alt5# a = b
#alt6# a = new A
if a isa B then
a.foo
#alt4# a.foo
end
+if not (not a isa B or a == a) then
+ a.foo
+end
+
+if a isa B implies a == a then
+#alt7# a.foo
+end
+
+if not (a isa B implies a == a) then
+ a.foo
+end
+
assert a isa B
a.foo