Mercurial > projects > dang
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