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