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.38.9~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f53bf8c5dceb284f173ce20d53094d18db4b123;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 6e681af7c..ef62b1bf9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -164,6 +164,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 32c84e4c3..db31aa0ce 100644 --- a/vala/valasymbolresolver.vala +++ b/vala/valasymbolresolver.vala @@ -267,6 +267,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;