]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Handle parameter initializer without value-type
authorRico Tzschichholz <ricotz@ubuntu.com>
Sat, 11 Jul 2020 17:06:04 +0000 (19:06 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 26 Jul 2020 08:46:19 +0000 (10:46 +0200)
This caused criticals like:

  vala_data_type_compatible: assertion 'self != NULL' failed

See https://gitlab.gnome.org/GNOME/vala/issues/1029

tests/Makefile.am
tests/generics/parameter-invalid-initializer.test [new file with mode: 0644]
vala/valaparameter.vala

index 4f12d128ba0fe8c14cd35956bac4c4b789024aee..2ed899e7deb56770d874cc136e3afa4e1c927cd0 100644 (file)
@@ -564,6 +564,7 @@ TESTS = \
        generics/inference-argument-may-fail.vala \
        generics/inference-static-function.vala \
        generics/integer-type-cast.vala \
+       generics/parameter-invalid-initializer.test \
        generics/parameter-sizeof-initializer.vala \
        generics/string-literal-comparison.vala \
        generics/type-parameter-properties.vala \
diff --git a/tests/generics/parameter-invalid-initializer.test b/tests/generics/parameter-invalid-initializer.test
new file mode 100644 (file)
index 0000000..d3b8b80
--- /dev/null
@@ -0,0 +1,8 @@
+Invalid Code
+
+class Class<G> {
+    public Class (Type type = G);
+}
+
+void main () {
+}
index fe7aabd6ef991d31a2d466211ab69f3f744cca4e..09c73ffa5b24b7c95c2700ec6d0d19731f6a4e85 100644 (file)
@@ -166,6 +166,9 @@ public class Vala.Parameter : Variable {
                        if (initializer != null) {
                                initializer.target_type = variable_type.copy ();
                                initializer.check (context);
+                               if (initializer.value_type == null) {
+                                       initializer.value_type = new InvalidType ();
+                               }
                        }
 
                        unowned ArrayType? variable_array_type = variable_type as ArrayType;