gir: Fix assignable_to for interface implementations

Part of #29
This commit is contained in:
James Westman 2022-01-11 22:32:06 -06:00
parent 0e3280fcc5
commit 85150d397b
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
6 changed files with 22 additions and 4 deletions

View file

@ -257,9 +257,11 @@ class Class(GirNode, GirType):
return True
elif self.parent and self.parent.assignable_to(other):
return True
elif other in self.implements:
return True
else:
for iface in self.implements:
if self.get_containing(Namespace).lookup_type(iface).assignable_to(other):
return True
return False

View file

@ -0,0 +1,7 @@
using Gtk 4.0;
Label label {}
DropDown {
model: label;
}

View file

@ -0,0 +1 @@
6,10,5,Cannot assign Gtk.Label to Gio.ListModel

View file

@ -1,8 +1,12 @@
using Gtk 4.0;
StringList {
StringList greetings {
strings [
"Hello, world!",
_("Hello!"),
]
}
Gtk.DropDown {
model: greetings;
}

View file

@ -1,10 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkStringList">
<object class="GtkStringList" id="greetings">
<items>
<item>Hello, world!</item>
<item translatable="true">Hello!</item>
</items>
</object>
<object class="GtkDropDown">
<property name="model">greetings</property>
</object>
</interface>

View file

@ -144,6 +144,7 @@ class TestSamples(unittest.TestCase):
self.assert_sample_error("class_assign")
self.assert_sample_error("class_dne")
self.assert_sample_error("consecutive_unexpected_tokens")
self.assert_sample_error("does_not_implement")
self.assert_sample_error("duplicate_obj_id")
self.assert_sample_error("enum_member_dne")
self.assert_sample_error("filters_in_non_file_filter")