comparison 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
comparison
equal deleted inserted replaced
182:4e703658eca0 183:8ea749b7da91
79 else 79 else
80 exp.left = castExp; 80 exp.left = castExp;
81 81
82 } 82 }
83 } 83 }
84 }
85 if (exp.op >= Operator.LeftShift &&
86 exp.op <= Operator.UnsignedRightShift)
87 {} // FIXME: When we have const-system we need to check for
88 // right site being larger then the bitsize of the
89 // left
90 }
91
92 override void visitDerefExp(DerefExp exp)
93 {
94 if (!exp.exp.type.isPointer)
95 {
96 messages.report(CanOnlyDerefPointers,
97 [exp.exp.sourceRange][],
98 [exp.loc])
99 .arg(exp.exp.type.toString);
100
101 exp._type = DType.Int;
84 } 102 }
85 } 103 }
86 104
87 override void visitCallExp(CallExp exp) 105 override void visitCallExp(CallExp exp)
88 { 106 {
331 new Identifier(identifierType.name), 349 new Identifier(identifierType.name),
332 exp.exp); 350 exp.exp);
333 castExp.env = exp.exp.env; 351 castExp.env = exp.exp.env;
334 exp.exp = castExp; 352 exp.exp = castExp;
335 } 353 }
354
355 if (expType.isStaticArray)
356 messages.report(CannotReassignSArray,
357 [exp.identifier.sourceRange, exp.exp.sourceRange][],
358 [exp.loc]);
336 } 359 }
337 360
338 override void visitReturnStmt(ReturnStmt stmt) 361 override void visitReturnStmt(ReturnStmt stmt)
339 { 362 {
340 super.visitReturnStmt(stmt); 363 super.visitReturnStmt(stmt);