diff sema/TypeCheck.d @ 183:8ea749b7da91

Fixed a few errors so that two more tests passes. Also, now you only need a type in a function param.
author Anders Johnsen <skabet@gmail.com>
date Fri, 25 Jul 2008 10:59:16 +0200
parents 59cd211a1bd3
children 86a2ede00e9a
line wrap: on
line diff
--- a/sema/TypeCheck.d	Fri Jul 25 01:40:08 2008 +0200
+++ b/sema/TypeCheck.d	Fri Jul 25 10:59:16 2008 +0200
@@ -82,6 +82,24 @@
                 }
             }
         }
+        if (exp.op >= Operator.LeftShift &&
+            exp.op <= Operator.UnsignedRightShift)
+        {}  // FIXME: When we have const-system we need to check for 
+            //        right site being larger then the bitsize of the 
+            //        left
+    }
+
+    override void visitDerefExp(DerefExp exp)
+    {
+        if (!exp.exp.type.isPointer)
+        {
+            messages.report(CanOnlyDerefPointers,
+                    [exp.exp.sourceRange][], 
+                    [exp.loc])
+                .arg(exp.exp.type.toString);
+
+            exp._type = DType.Int;
+        }
     }
 
     override void visitCallExp(CallExp exp)
@@ -333,6 +351,11 @@
             castExp.env = exp.exp.env;
             exp.exp = castExp;
         }
+
+        if (expType.isStaticArray)
+            messages.report(CannotReassignSArray, 
+                    [exp.identifier.sourceRange, exp.exp.sourceRange][], 
+                    [exp.loc]);
     }
 
     override void visitReturnStmt(ReturnStmt stmt)