From: Rico Tzschichholz Date: Sun, 19 Nov 2017 15:27:22 +0000 (+0100) Subject: vala: Report error for missing type-parameter on enclosing type X-Git-Tag: 0.39.1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b656b078e49de3286deaa3ae8edcfdb6202e6e8;p=thirdparty%2Fvala.git vala: Report error for missing type-parameter on enclosing type Make a qualified guess for the cause of the problem instead of triggering an assertion. https://bugzilla.gnome.org/show_bug.cgi?id=587905 --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 682f33d16..86bc2c406 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -187,6 +187,7 @@ TESTS = \ objects/test-029.vala \ objects/test-034.vala \ objects/bug566909.vala \ + objects/bug587905.test \ objects/bug588203.vala \ objects/bug589928.vala \ objects/bug593260.vala \ diff --git a/tests/objects/bug587905.test b/tests/objects/bug587905.test new file mode 100644 index 000000000..87bf76c32 --- /dev/null +++ b/tests/objects/bug587905.test @@ -0,0 +1,10 @@ +Invalid Code + +class Generic { + class Nested { + public T member; + } +} + +void main () { +} diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index 32a8d2d28..a0a7e3d0a 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -822,7 +822,11 @@ public class Vala.SemanticAnalyzer : CodeVisitor { // trace type arguments back to the datatype where the method has been declared var instance_type = get_instance_base_type_for_member (derived_instance_type, (TypeSymbol) generic_type.type_parameter.parent_symbol, node_reference); - assert (instance_type != null); + if (instance_type == null) { + Report.error (node_reference.source_reference, "The type-parameter `%s' must be defined on enclosing type".printf (generic_type.to_string ())); + node_reference.error = true; + return null; + } int param_index; if (instance_type is DelegateType) {