From: Rico Tzschichholz Date: Tue, 8 Mar 2022 21:54:09 +0000 (+0100) Subject: codegen: Drop confusing warning when accessing interface members X-Git-Tag: 0.48.24~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f4d4921955b0d0cbd8b193248935707c27840b8;p=thirdparty%2Fvala.git codegen: Drop confusing warning when accessing interface members Making assumptions for member access using the current class is not correct. Introduced by 0aace7bd6d3ec72e77f4eabbb7d5fffd3b2e86a8 --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 94a31b3f5..4c7e0f73c 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -2487,10 +2487,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { return new CCodeIdentifier ("%s_%s_parent_iface".printf (get_ccode_lower_case_name (current_class), get_ccode_lower_case_name (iface))); } - if (!current_class.is_a (iface)) { - Report.warning (current_class.source_reference, "internal: `%s' is not a `%s'".printf (current_class.get_full_name (), iface.get_full_name ())); - } - var vcast = new CCodeFunctionCall (new CCodeIdentifier ("G_TYPE_INSTANCE_GET_INTERFACE")); vcast.add_argument (get_this_cexpression ()); vcast.add_argument (new CCodeIdentifier (get_ccode_type_id (iface))); diff --git a/tests/Makefile.am b/tests/Makefile.am index d3958f666..b282f1e2d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -492,6 +492,7 @@ TESTS = \ objects/interface-abstract-async-override.vala \ objects/interface-async-captured-generic.vala \ objects/interface-generics.vala \ + objects/interface-parameter-nowrapper.vala \ objects/interface-property-base-access.vala \ objects/interface-property-base-impl.vala \ objects/interface-property-delegate.vala \ diff --git a/tests/objects/interface-parameter-nowrapper.vala b/tests/objects/interface-parameter-nowrapper.vala new file mode 100644 index 000000000..e10915b9a --- /dev/null +++ b/tests/objects/interface-parameter-nowrapper.vala @@ -0,0 +1,20 @@ +interface IFoo { + [NoWrapper] + public abstract int foo (); +} + +class Bar { + public Bar (IFoo foo) { + assert (foo.foo () == 42); + } +} + +class Foo : IFoo { + public int foo () { + return 42; + } +} + +void main () { + new Bar (new Foo ()); +}