]> 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>
Mon, 20 Apr 2020 20:03:58 +0000 (22:03 +0200)
vala/valafield.vala
vala/valalocalvariable.vala
vala/valaparameter.vala

index 93c2399387a6da08fb2b5250221d3dfd1713bee2..f0c5972a77cfdbcc82a004f8156c5b3957ba3aa2 100644 (file)
@@ -105,6 +105,12 @@ public class Vala.Field : Variable, Lockable {
                }
 
                variable_type.check (context);
+               if (!external_package) {
+                       // check symbol availability
+                       if (variable_type.data_type != null) {
+                               variable_type.data_type.version.check (source_reference);
+                       }
+               }
 
                // check whether field type is at least as accessible as the field
                if (!context.analyzer.is_type_accessible (this, variable_type)) {
index f06742327d2df1322d39332b4d736c33ad4a56d1..79cf22bb43588f0b94476ba3ba3e38427af3e83f 100644 (file)
@@ -152,6 +152,13 @@ public class Vala.LocalVariable : Variable {
                        variable_type.check (context);
                }
 
+               if (!external_package) {
+                       // check symbol availability
+                       if (variable_type.data_type != null) {
+                               variable_type.data_type.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 1c4ad30d8bc21996a914aca676d5b9558422af4d..fe7aabd6ef991d31a2d466211ab69f3f744cca4e 100644 (file)
@@ -197,6 +197,13 @@ public class Vala.Parameter : Variable {
                }
 
                if (!ellipsis) {
+                       if (!external_package) {
+                               // check symbol availability
+                               if ((parent_symbol == null || !parent_symbol.external_package) && variable_type.data_type != null) {
+                                       variable_type.data_type.version.check (source_reference);
+                               }
+                       }
+
                        // check whether parameter type is at least as accessible as the method
                        if (!context.analyzer.is_type_accessible (this, variable_type)) {
                                error = true;