about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <andersrb@gmail.com>2011-03-13 03:26:11 -0400
committerGraydon Hoare <graydon@mozilla.com>2011-03-14 16:41:46 -0700
commit83f758cf0dfaefc2ebb3a26404e8a9e009847af7 (patch)
tree913706fba43d70835e4b8d4b8325926aa6c5725a /src/comp
parenta309f74a94f99127cf0667999d4080450bb62491 (diff)
downloadrust-83f758cf0dfaefc2ebb3a26404e8a9e009847af7.tar.gz
rust-83f758cf0dfaefc2ebb3a26404e8a9e009847af7.zip
Typecheck expr_send and expr_recv
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/typeck.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index f44292d581b..a654a2fc329 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -1830,6 +1830,22 @@ fn check_expr(&@fn_ctxt fcx, @ast.expr expr) -> @ast.expr {
             ret @fold.respan[ast.expr_](expr.span, newexpr);
         }
 
+        case (ast.expr_send(?lhs, ?rhs, _)) {
+            auto checked = check_assignment_like(fcx, lhs, rhs);
+            auto newexpr = ast.expr_send(checked._0,
+                                         checked._1,
+                                         checked._2);
+            ret @fold.respan[ast.expr_](expr.span, newexpr);
+        }
+
+        case (ast.expr_recv(?lhs, ?rhs, _)) {
+            auto checked = check_assignment_like(fcx, lhs, rhs);
+            auto newexpr = ast.expr_recv(checked._0,
+                                         checked._1,
+                                         checked._2);
+            ret @fold.respan[ast.expr_](expr.span, newexpr);
+        }
+
         case (ast.expr_if(?cond, ?thn, ?elifs, ?elsopt, _)) {
             auto cond_0 = check_expr(fcx, cond);
             auto cond_1 = demand_expr(fcx, plain_ty(ty.ty_bool), cond_0);