Enable array creation with initialization for MGC. Now array initialization is fully...
authorjzhou <jzhou>
Thu, 27 Jan 2011 19:26:16 +0000 (19:26 +0000)
committerjzhou <jzhou>
Thu, 27 Jan 2011 19:26:16 +0000 (19:26 +0000)
Robust/src/IR/Flat/BuildFlat.java
Robust/src/IR/Tree/SemanticCheck.java
Robust/src/Tests/ArrayInitializerTest.java

index d8e4442efd4eec0694f04a17e2cb0f689124e56e..48b07b78329250c63dfdb439a91b0f5917c295be 100644 (file)
@@ -360,6 +360,7 @@ public class BuildFlat {
       }
       return new NodePair(fn,last);
     } else {
+      if(con.getArrayInitializer() == null) {
       FlatNode first=null;
       FlatNode last=null;
       TempDescriptor[] temps=new TempDescriptor[con.numArgs()];
@@ -390,6 +391,11 @@ public class BuildFlat {
        return new NodePair(first,np.getEnd());
       } else
        return new NodePair(first, fn);
+      } else if(state.MGC) {
+      // array creation with initializers
+        return flattenArrayInitializerNode(con.getArrayInitializer(), out_temp);
+      }
+      return null;
     }
   }
 
index ddc0dc5a0d61525403f30423e09fca1516291fb7..be2e490a3f9faa20bb5ddd1c626d561fffca88e4 100644 (file)
@@ -900,6 +900,11 @@ public class SemanticCheck {
 
     if (td!=null&&!typeutil.isSuperorType(td, typetolookin))
       throw new Error(typetolookin + " isn't a "+td);
+    
+    /* Check Array Initializers */
+    if(state.MGC && (con.getArrayInitializer() != null)) {
+      checkArrayInitializerNode(md, nametable, con.getArrayInitializer(), td);
+    }
 
     /* Check flag effects */
     if (con.getFlagEffects()!=null) {
index f7d664d6df012bc3fcf9db79acb1d697faf74090..c14db846ac09e9d04ca7c0f1898dd0b1d10eb6b7 100644 (file)
@@ -25,5 +25,16 @@ public class ArrayInitializerTest {
     for(int i = 0; i < ait.sa.length; i++) {
       System.out.println(ait.sa[i]);
     }
+    
+    int[][] ja = new int[][]{null, {3,4}};
+    for (int i = 0; i < 2; i++) {
+      if(ja[i] != null) {
+        for (int j = 0; j < 2; j++) {
+            System.out.println(ja[i][j]);
+        }
+      } else {
+        System.out.println("ja[" + i + "] is null");
+      }
+    }
   }
 }
\ No newline at end of file