]> 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>
Sat, 11 Jul 2020 17:06:04 +0000 (19:06 +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 9980e94bbe5a6e464825336ba2528ab3e4722c61..8cda2904c086e3fdb642b6b23fe4b16f5dd02cc6 100644 (file)
@@ -592,6 +592,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/member-dup-destroy.vala \
        generics/string-literal-comparison.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 986d451aba14e624d38d5bebe1b0038634b84103..d93dad3240b54cd5d0076a6f4352936876c6f7e5 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;