[vala/staging] Support initializer list for structs that have a base type



commit f1ed66d02f7c4adc42dd7688fc59bafe116c87c7
Author: Luca Bruno <lucabru src gnome org>
Date:   Thu Feb 9 09:39:10 2012 +0100

    Support initializer list for structs that have a base type
    
    Fixes bug 669580.

 codegen/valaccodebasemodule.vala |    3 +++
 vala/valainitializerlist.vala    |    3 +++
 2 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 9d7395e..866e8b9 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -2313,6 +2313,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 		if (list.target_type.data_type is Struct) {
 			/* initializer is used as struct initializer */
 			var st = (Struct) list.target_type.data_type;
+			while (st.base_struct != null) {
+				st = st.base_struct;
+			}
 
 			if (list.parent_node is Constant || list.parent_node is Field || list.parent_node is InitializerList) {
 				var clist = new CCodeInitializerList ();
diff --git a/vala/valainitializerlist.vala b/vala/valainitializerlist.vala
index b2350ae..edd9857 100644
--- a/vala/valainitializerlist.vala
+++ b/vala/valainitializerlist.vala
@@ -153,6 +153,9 @@ public class Vala.InitializerList : Expression {
 		} else if (target_type.data_type is Struct) {
 			/* initializer is used as struct initializer */
 			var st = (Struct) target_type.data_type;
+			while (st.base_struct != null) {
+				st = st.base_struct;
+			}
 
 			var field_it = st.get_fields ().iterator ();
 			foreach (Expression e in get_initializers ()) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]