if (m.overrides || (m.base_interface_method != null && !m.is_abstract && !m.is_virtual)) {
Method base_method;
- if (m.overrides) {
+ if (m.overrides && m.base_method != null) {
base_method = m.base_method;
} else {
base_method = m.base_interface_method;
public virtual int foo () {
assert_not_reached ();
}
+ public virtual async int bar () {
+ assert_not_reached ();
+ }
}
class Bar : Object, IFoo {
public override int foo () {
return 42;
}
+ public override async int bar () {
+ return 23;
+ }
}
+MainLoop loop;
+
void main () {
var bar = new Bar ();
assert (bar.foo () == 42);
+
+ loop = new MainLoop ();
+ bar.bar.begin ((o,a) => {
+ assert (((Bar) o).bar.end (a) == 23);
+ loop.quit ();
+ });
+ loop.run ();
}