]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Check number of generic type arguments of base types
authorJürg Billeter <j@bitron.ch>
Tue, 20 Oct 2009 20:08:52 +0000 (22:08 +0200)
committerJürg Billeter <j@bitron.ch>
Tue, 20 Oct 2009 20:08:52 +0000 (22:08 +0200)
Fixes bug 598658.

vala/valaclass.vala

index d324b1882db54ab5e92f4d459b6b2b13bf76d16d..7b3f3ef2814a4ce93c1e9990a001e6812ae13a13 100644 (file)
@@ -974,6 +974,18 @@ public class Vala.Class : ObjectTypeSymbol {
                                Report.error (source_reference, "base type `%s` is less accessible than class `%s`".printf (base_type_reference.to_string (), get_full_name ()));
                                return false;
                        }
+
+                       int n_type_args = base_type_reference.get_type_arguments ().size;
+                       int n_type_params = ((ObjectTypeSymbol) base_type_reference.data_type).get_type_parameters ().size;
+                       if (n_type_args < n_type_params) {
+                               error = true;
+                               Report.error (base_type_reference.source_reference, "too few type arguments");
+                               return false;
+                       } else if (n_type_args > n_type_params) {
+                               error = true;
+                               Report.error (base_type_reference.source_reference, "too many type arguments");
+                               return false;
+                       }
                }
 
                foreach (DataType type in base_types) {