]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Drop confusing warning when accessing interface members
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 8 Mar 2022 21:54:09 +0000 (22:54 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 21 Mar 2022 08:06:43 +0000 (09:06 +0100)
Making assumptions for member access using the current class is not correct.

Introduced by 0aace7bd6d3ec72e77f4eabbb7d5fffd3b2e86a8

codegen/valaccodebasemodule.vala
tests/Makefile.am
tests/objects/interface-parameter-nowrapper.vala [new file with mode: 0644]

index 94a31b3f558b3762ca37d12df213e4de2b58e71e..4c7e0f73c60fff175af3733beaffb8896bd4e4c4 100644 (file)
@@ -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)));
index d3958f666705d2e3f09094a53fbde24b333a20d7..b282f1e2d800324a9c8c0af4f5a3686c96f65fec 100644 (file)
@@ -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 (file)
index 0000000..e10915b
--- /dev/null
@@ -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 ());
+}