compiler/libec: Fixed missing braces in generated code for array types
authorJerome St-Louis <jerome@ecere.com>
Tue, 17 Jun 2014 03:58:06 +0000 (23:58 -0400)
committerJerome St-Louis <jerome@ecere.com>
Tue, 17 Jun 2014 03:58:06 +0000 (23:58 -0400)
- This fixes warnings on Matrix m { }

compiler/bootstrap/libec/bootstrap/pass16.c
compiler/libec/src/pass16.ec

index 1541f2a..4d34ada 100644 (file)
@@ -2946,6 +2946,19 @@ FreeInstance(inst);
 init->type = 1;
 init->__anon1.list = subList;
 }
+else if(dataMember->dataType && dataMember->dataType->kind == 12)
+{
+struct Type * t = dataMember->dataType->__anon1.type;
+struct Initializer * i = MkInitializerAssignment(MkExpConstant("0"));
+
+while(t && t->kind == 12)
+{
+i = MkInitializerList(MkListOne(i));
+t = t->__anon1.type;
+}
+init->type = 1;
+init->__anon1.list = MkListOne(i);
+}
 else
 {
 init->type = 0;
index 6455d73..49c7ea2 100644 (file)
@@ -1914,6 +1914,18 @@ static bool ProcessBracketInst_DataMember(DataMember parentMember, Instantiation
          init.type = listInitializer;
          init.list = subList;
       }
+      else if(dataMember.dataType && dataMember.dataType.kind == arrayType)
+      {
+         Type t = dataMember.dataType.type;
+         Initializer i = MkInitializerAssignment(MkExpConstant("0"));
+         while(t && t.kind == arrayType)
+         {
+            i = MkInitializerList(MkListOne(i));
+            t = t.type;
+         }
+         init.type = listInitializer;
+         init.list = MkListOne(i);
+      }
       else
       {
          init.type = expInitializer;