diff sema/DType.d @ 39:1a7a308f75b2 new_gen

Added some struct tests, and implemented a wrong struct assignment It assumes 8 bytes for all struct, we have no DType available at that point Slight improvement to an error message (Member access to unknown members)
author Anders Halager <halager@gmail.com>
date Mon, 21 Apr 2008 22:47:12 +0200
parents 858b9805843d
children c7cde6af0095
line wrap: on
line diff
--- a/sema/DType.d	Sun Apr 20 23:53:42 2008 +0200
+++ b/sema/DType.d	Mon Apr 21 22:47:12 2008 +0200
@@ -54,6 +54,7 @@
     char[] name() { return id; }
     Location getLoc() { return loc; }
     LLVM.Type llvm() { return llvmType; }
+    int byteSize() { return 0; }
 
     static DInteger
         Bool,
@@ -89,6 +90,8 @@
         llvmType = LLVM.IntegerType.Get(bits);
     }
 
+    override int byteSize() { return bits / 8; }
+
     int bits;
     bool unsigned;
 }
@@ -100,19 +103,25 @@
         super(id, actual);
     }
 
+    int byteSize() { return bytes_total; }
+
     void setMembers(DType[char[]] members)
     {
         this.members = members;
 
         LLVM.Type[] types;
 
-        foreach( type ; members)
+        foreach (type; members)
+        {
             types ~= type.llvm;
+            bytes_total += type.byteSize();
+        }
 
         this.llvmType = LLVM.StructType.Get(types);
 
     }
     DType[char[]] members;
+    private int bytes_total;
 }
 
 class DFunction : DType