]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Perform version check for types of non-external variable declarations
authorRico Tzschichholz <ricotz@ubuntu.com>
Thu, 16 Apr 2020 10:37:26 +0000 (12:37 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Thu, 16 Apr 2020 10:59:14 +0000 (12:59 +0200)
vala/valafield.vala
vala/valalocalvariable.vala
vala/valaparameter.vala

index c7201d02e46e5cc0d802f156b4b4976021dec14e..3b6eeda75a51704e20acc2c5fd0d8632494e21ad 100644 (file)
@@ -107,6 +107,11 @@ public class Vala.Field : Variable, Lockable {
                variable_type.check (context);
                if (!external_package) {
                        context.analyzer.check_type (variable_type);
+
+                       // check symbol availability
+                       if (variable_type.type_symbol != null) {
+                               variable_type.type_symbol.version.check (source_reference);
+                       }
                }
 
                // check whether field type is at least as accessible as the field
index 64e16325b6926303047e28ae743d6d51e8340d1f..dbe9ace1147bb511acb1d77fa0e660f4a201c1e6 100644 (file)
@@ -160,6 +160,13 @@ public class Vala.LocalVariable : Variable {
                        variable_type.check (context);
                }
 
+               if (!external_package) {
+                       // check symbol availability
+                       if (variable_type.type_symbol != null) {
+                               variable_type.type_symbol.version.check (source_reference);
+                       }
+               }
+
                unowned ArrayType? variable_array_type = variable_type as ArrayType;
                if (variable_array_type != null && variable_array_type.inline_allocated
                    && initializer is ArrayCreationExpression && ((ArrayCreationExpression) initializer).initializer_list == null) {
index f99f484dab506fee25ed16bec16a3320da98cb9f..0267a76759a8333f04f399495fb545e0de1b3708 100644 (file)
@@ -199,6 +199,11 @@ public class Vala.Parameter : Variable {
                if (!ellipsis) {
                        if (!external_package) {
                                context.analyzer.check_type (variable_type);
+
+                               // check symbol availability
+                               if ((parent_symbol == null || !parent_symbol.external_package) && variable_type.type_symbol != null) {
+                                       variable_type.type_symbol.version.check (source_reference);
+                               }
                        }
 
                        // check whether parameter type is at least as accessible as the method