From: Simon Werbeck Date: Sun, 31 Mar 2013 23:16:21 +0000 (+0200) Subject: Fix recursive declaration in generic base type X-Git-Tag: 0.39.92~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7cdcc81d646be5fdf995df5b24478a1c7d162de0;p=thirdparty%2Fvala.git Fix recursive declaration in generic base type https://bugzilla.gnome.org/show_bug.cgi?id=688732 --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 7ccc8756e..ed90923e9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -192,6 +192,7 @@ TESTS = \ structs/bug669580.vala \ structs/bug685177.vala \ structs/bug686190.vala \ + structs/bug688732.vala \ structs/bug690380.vala \ structs/bug694140.vala \ structs/bug749952.vala \ diff --git a/tests/structs/bug688732.vala b/tests/structs/bug688732.vala new file mode 100644 index 000000000..49295d6b0 --- /dev/null +++ b/tests/structs/bug688732.vala @@ -0,0 +1,9 @@ +struct Foo { + public T t; +} + +struct Bar : Foo { +} + +void main () { +} diff --git a/vala/valasymbolresolver.vala b/vala/valasymbolresolver.vala index 53ad72821..8b7f75cd3 100644 --- a/vala/valasymbolresolver.vala +++ b/vala/valasymbolresolver.vala @@ -270,6 +270,11 @@ public class Vala.SymbolResolver : CodeVisitor { if (st.base_type != null) { // make sure that base type is resolved + if (current_scope == st.scope) { + // recursive declaration in generic base type + return new StructValueType (st); + } + var old_scope = current_scope; current_scope = st.scope;