init_block.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (ciface, m.base_interface_method.vfunc_name), cfunc)));
if (m.coroutine) {
- init_block.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (ciface, m.base_interface_method.get_finish_vfunc_name ()), new CCodeIdentifier (m.get_finish_real_cname ()))));
+ if (m.is_abstract || m.is_virtual) {
+ cfunc = new CCodeIdentifier (m.get_finish_cname ());
+ } else {
+ cfunc = new CCodeIdentifier (m.get_finish_real_cname ());
+ }
+ init_block.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (ciface, m.base_interface_method.get_finish_vfunc_name ()), cfunc)));
}
}
asynchronous/bug596177.vala \
asynchronous/bug597294.vala \
asynchronous/bug598677.vala \
+ asynchronous/bug598698.vala \
dbus/basic-types.test \
dbus/arrays.test \
dbus/async.test \
--- /dev/null
+public interface Foo {
+ public abstract async void do_foo ();
+}
+
+public abstract class Bar : Foo {
+ public abstract async void do_foo ();
+}
+
+void main () {
+}