--- /dev/null
+
+class A
+ fun foo do
+ print "foo"
+ end
+
+ fun bar do
+ print "bar"
+ end
+end
+
+var a = new A
+if true then
+ a.foo
+#alt1#else
+#alt1# a.bar
+end
--- /dev/null
+A,icode_dmr_if::A::foo,has,CALL file::Object::print
+A,icode_dmr_if::A::bar,no,CALL file::Object::print
+A,icode_dmr_if::A::foo,no,ABORT
+A,icode_dmr_if::A::bar,has,ABORT
--- /dev/null
+A,icode_dmr_if_alt1::A::foo,has,CALL file::Object::print
+A,icode_dmr_if_alt1::A::bar,has,CALL file::Object::print
+A,icode_dmr_if_alt1::A::foo,no,ABORT
+A,icode_dmr_if_alt1::A::bar,no,ABORT
--- /dev/null
+class B
+ fun foo do
+ print "bfoo"
+ end
+end
+
+class A
+special B
+ redef fun foo do
+ print "afoo"
+ end
+end
+
+var o: B
+#alt1#o = new B
+#alt2#o = new B
+#alt3#o = new B
+#alt3#o.foo
+o = new A#!alt2#
+o.foo
--- /dev/null
+A,icode_dmr_inh::B::foo,has,CALL file::Object::print
+A,icode_dmr_inh::B::foo,no,ABORT
+B,no-file
--- /dev/null
+A,icode_dmr_inh_alt1::B::foo,has,CALL file::Object::print
+A,icode_dmr_inh_alt1::B::foo,no,ABORT
+B,icode_dmr_inh_alt1::B::foo,no,CALL file::Object::print
+B,icode_dmr_inh_alt1::B::foo,has,ABORT
--- /dev/null
+A,no-file
+B,icode_dmr_inh_alt2::B::foo,has,CALL file::Object::print
+B,icode_dmr_inh_alt2::B::foo,no,ABORT
--- /dev/null
+A,icode_dmr_inh_alt3::B::foo,has,CALL file::Object::print
+A,icode_dmr_inh_alt3::B::foo,no,ABORT
+B,icode_dmr_inh_alt3::B::foo,has,CALL file::Object::print
+B,icode_dmr_inh_alt3::B::foo,no,ABORT
--- /dev/null
+
+class A
+ fun foo do
+ #alt2#bar
+ print "foo"
+ end
+
+ fun bar do
+ #alt3#foo
+ print "bar"
+ end
+end
+
+var a = new A
+a.foo
+#alt1#a.bar
--- /dev/null
+A,icode_dmr_simple::A::foo,has,CALL file::Object::print
+A,icode_dmr_simple::A::bar,no,CALL file::Object::print
+A,icode_dmr_simple::A::foo,no,ABORT
+A,icode_dmr_simple::A::bar,has,ABORT
--- /dev/null
+A,icode_dmr_simple_alt1::A::foo,has,CALL file::Object::print
+A,icode_dmr_simple_alt1::A::bar,has,CALL file::Object::print
+A,icode_dmr_simple_alt1::A::foo,no,ABORT
+A,icode_dmr_simple_alt1::A::bar,no,ABORT
--- /dev/null
+A,icode_dmr_simple_alt2::A::foo,has,CALL file::Object::print
+A,icode_dmr_simple_alt2::A::bar,has,CALL file::Object::print
+A,icode_dmr_simple_alt2::A::foo,no,ABORT
+A,icode_dmr_simple_alt2::A::bar,no,ABORT
--- /dev/null
+A,icode_dmr_simple_alt3::A::foo,has,CALL file::Object::print
+A,icode_dmr_simple_alt3::A::bar,no,CALL file::Object::print
+A,icode_dmr_simple_alt3::A::foo,no,ABORT
+A,icode_dmr_simple_alt3::A::bar,has,ABORT
--- /dev/null
+bfoo
+afoo