Fix uint properties

This commit is contained in:
James Westman 2021-11-24 14:39:35 -06:00
parent 3f55aae7de
commit f2b7d3bd95
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
6 changed files with 28 additions and 0 deletions

View file

@ -377,6 +377,14 @@ class LiteralValue(Value):
except: except:
raise CompileError(f"Cannot convert {self.tokens['value']} to integer") raise CompileError(f"Cannot convert {self.tokens['value']} to integer")
elif isinstance(type, gir.UIntType):
try:
int(self.tokens["value"])
if int(self.tokens["value"]) < 0:
raise Exception()
except:
raise CompileError(f"Cannot convert {self.tokens['value']} to unsigned integer")
elif isinstance(type, gir.FloatType): elif isinstance(type, gir.FloatType):
try: try:
float(self.tokens["value"]) float(self.tokens["value"])

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
FlowBox {
column-spacing: -2;
}

View file

@ -0,0 +1 @@
4,19,2,Cannot convert -2 to unsigned integer

5
tests/samples/uint.blp Normal file
View file

@ -0,0 +1,5 @@
using Gtk 4.0;
FlowBox {
column-spacing: 2;
}

7
tests/samples/uint.ui Normal file
View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkFlowBox">
<property name="column-spacing">2</property>
</object>
</interface>

View file

@ -110,6 +110,7 @@ class TestSamples(unittest.TestCase):
self.assert_sample("style") self.assert_sample("style")
self.assert_sample("template") self.assert_sample("template")
self.assert_sample("translated") self.assert_sample("translated")
self.assert_sample("uint")
self.assert_sample("using") self.assert_sample("using")
@ -136,5 +137,6 @@ class TestSamples(unittest.TestCase):
self.assert_sample_error("size_group_obj_dne") self.assert_sample_error("size_group_obj_dne")
self.assert_sample_error("styles_in_non_widget") self.assert_sample_error("styles_in_non_widget")
self.assert_sample_error("two_templates") self.assert_sample_error("two_templates")
self.assert_sample_error("uint")
self.assert_sample_error("using_invalid_namespace") self.assert_sample_error("using_invalid_namespace")
self.assert_sample_error("widgets_in_non_size_group") self.assert_sample_error("widgets_in_non_size_group")