summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Werbeck <simon.werbeck@gmail.com>2013-04-01 01:16:21 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2018-02-17 16:30:30 +0100
commit7cdcc81d646be5fdf995df5b24478a1c7d162de0 (patch)
tree910add3c44a369b173964688309e8cd12a1c4d55
parent6ebbc3f35e0cd267ffd1efddc5fa4cc5840682aa (diff)
downloadvala-7cdcc81d646be5fdf995df5b24478a1c7d162de0.tar.gz
Fix recursive declaration in generic base type
https://bugzilla.gnome.org/show_bug.cgi?id=688732
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/structs/bug688732.vala9
-rw-r--r--vala/valasymbolresolver.vala5
3 files changed, 15 insertions, 0 deletions
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<T> {
+ public T t;
+}
+
+struct Bar : Foo<Bar> {
+}
+
+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;