diff sema/SymbolTableBuilder.d @ 55:79cb0afafabe new_gen

Now structs are somewhat useable to use.
author Anders Johnsen <skabet@gmail.com>
date Sat, 26 Apr 2008 23:11:13 +0200
parents da551f90e03f
children 4ae365eff712
line wrap: on
line diff
--- a/sema/SymbolTableBuilder.d	Sat Apr 26 19:13:10 2008 +0200
+++ b/sema/SymbolTableBuilder.d	Sat Apr 26 23:11:13 2008 +0200
@@ -42,12 +42,13 @@
     override void visitStructDecl(StructDecl s)
     {
         DType[char[]] types;
+
+        auto st = (cast(DStruct)s.env.types[s.identifier.get]);
         foreach(varDecl ; s.vars)
         {
-            types[varDecl.identifier.get] = typeOf(varDecl.type, s.env);
+            st.addMember(typeOf(varDecl.type, varDecl.env), varDecl.identifier.get);
         }
 
-        (cast(DStruct)s.env.types[s.identifier.get]).setMembers(types);
         super.visitStructDecl(s);
     }
 
@@ -142,12 +143,15 @@
     {
         auto sc = current();
         auto sym = sc.add(s.identifier);
+        s.env = sc;
+        auto type = new DStruct(s.identifier);
 
-        auto type = new DStruct(s.identifier);
         
         sc.types[s.identifier.get] = type;
-        s.env = sc;
+
+        sc = push();
         super.visitStructDecl(s);
+        pop(sc);
     }
 
     override void visitDeclStmt(DeclStmt d)