about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2010-11-25 14:44:04 -0800
committerGraydon Hoare <graydon@mozilla.com>2010-11-25 14:44:04 -0800
commit092af6fb764207693a01bb37ce4e38ddb8010e1e (patch)
treed591f945f6a8ba1769b7f19f4975928721996d8b /src/comp
parentcffdb66aa42b6c5a1d30a1b4364d65f409976202 (diff)
downloadrust-092af6fb764207693a01bb37ce4e38ddb8010e1e.tar.gz
rust-092af6fb764207693a01bb37ce4e38ddb8010e1e.zip
Typecheck tup expressions.
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/typeck.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index 9c66895d4fb..76636896f57 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -1200,6 +1200,21 @@ fn check_expr(&fn_ctxt fcx, @ast.expr expr) -> @ast.expr {
                                                       ast.ann_type(t_1)));
         }
 
+        case (ast.expr_tup(?args, _)) {
+            let vec[tup(bool, @ast.expr)] args_1 = vec();
+            let vec[tup(bool, @ty)] args_t = vec();
+
+            for (tup(bool, @ast.expr) arg in args) {
+                auto expr_1 = check_expr(fcx, arg._1);
+                args_1 += tup(arg._0, expr_1);
+                args_t += tup(arg._0, expr_ty(expr_1));
+            }
+
+            auto ann = ast.ann_type(plain_ty(ty_tup(args_t)));
+            ret @fold.respan[ast.expr_](expr.span,
+                                        ast.expr_tup(args_1, ann));
+        }
+
         case (_) {
             // TODO
             ret expr;