aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-02-10 19:22:30 -0800
committerGraydon Hoare <[email protected]>2011-02-10 19:22:30 -0800
commitc9956a65b49f9cf2b1a691f2b88d61ada753d271 (patch)
treefa2df240ae6abb678f2ceee8cca14e49a8dc86b9 /src
parentAdd support to pat_lit to fold. (diff)
downloadrust-c9956a65b49f9cf2b1a691f2b88d61ada753d271.tar.xz
rust-c9956a65b49f9cf2b1a691f2b88d61ada753d271.zip
Teach ty and typeck about pat_lit.
Diffstat (limited to 'src')
-rw-r--r--src/comp/middle/ty.rs1
-rw-r--r--src/comp/middle/typeck.rs7
2 files changed, 8 insertions, 0 deletions
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index 6dd229fb..2bb65fe0 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -656,6 +656,7 @@ fn block_ty(&ast.block b) -> @t {
fn pat_ty(@ast.pat pat) -> @t {
alt (pat.node) {
case (ast.pat_wild(?ann)) { ret ann_to_type(ann); }
+ case (ast.pat_lit(_, ?ann)) { ret ann_to_type(ann); }
case (ast.pat_bind(_, _, ?ann)) { ret ann_to_type(ann); }
case (ast.pat_tag(_, _, _, ?ann)) { ret ann_to_type(ann); }
}
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index d21d4ed2..97453436 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -807,6 +807,10 @@ fn demand_pat(&@fn_ctxt fcx, @ty.t expected, @ast.pat pat) -> @ast.pat {
auto t = demand(fcx, pat.span, expected, ann_to_type(ann));
p_1 = ast.pat_wild(ast.ann_type(t));
}
+ case (ast.pat_lit(?lit, ?ann)) {
+ auto t = demand(fcx, pat.span, expected, ann_to_type(ann));
+ p_1 = ast.pat_lit(lit, ast.ann_type(t));
+ }
case (ast.pat_bind(?id, ?did, ?ann)) {
auto t = demand(fcx, pat.span, expected, ann_to_type(ann));
fcx.locals.insert(did, t);
@@ -1093,6 +1097,9 @@ fn check_pat(&@fn_ctxt fcx, @ast.pat pat) -> @ast.pat {
case (ast.pat_wild(_)) {
new_pat = ast.pat_wild(ast.ann_type(next_ty_var(fcx.ccx)));
}
+ case (ast.pat_lit(?lt, _)) {
+ new_pat = ast.pat_lit(lt, ast.ann_type(check_lit(lt)));
+ }
case (ast.pat_bind(?id, ?def_id, _)) {
auto ann = ast.ann_type(next_ty_var(fcx.ccx));
new_pat = ast.pat_bind(id, def_id, ann);