diff sema/AstAction.d @ 77:13eea2c4e60d new_gen

Now able of --ast-dump-code with Pointer types and also codeGen int* x;
author Anders Johnsen <skabet@gmail.com>
date Fri, 02 May 2008 16:37:13 +0200
parents 381975d76baf
children 81813366ef92
line wrap: on
line diff
--- a/sema/AstAction.d	Fri May 02 15:48:57 2008 +0200
+++ b/sema/AstAction.d	Fri May 02 16:37:13 2008 +0200
@@ -19,6 +19,15 @@
  */
 class AstAction : Action
 {
+    Identifier handleType(Id type)
+    {
+        if(auto t = cast(PointerId)type)
+            return new PointerIdentifier(handleType(t.id));
+        else
+            return new Identifier(type.tok);
+    }
+
+
     // -- Declarations --
     override DeclT actOnDeclarator(ref Id type, ref Id id, ExprT init)
     {
@@ -26,7 +35,7 @@
         if(type.tok.type == Tok.Struct)
             return new StructDecl(new Identifier(id.tok));
         else
-            return new VarDecl(new Identifier(type.tok), new Identifier(id.tok), exp);
+            return new VarDecl(handleType(type), new Identifier(id.tok), exp);
     }
     
     override void actOnStructMember(DeclT decl, ref Id type, ref Id name, ExprT init)
@@ -39,7 +48,7 @@
                 exp);
     }
 
-    ExprT actOnMemberReference(ExprT lhs, Location op, Id member)
+    override ExprT actOnMemberReference(ExprT lhs, Location op, Id member)
     {
         return new MemberReference(cast(Exp)lhs, new Identifier(member.tok));
     }