aboutsummaryrefslogtreecommitdiff
path: root/src/comp
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/trans.rs2
-rw-r--r--src/comp/middle/ty.rs10
-rw-r--r--src/comp/middle/typeck.rs4
3 files changed, 15 insertions, 1 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 5f163d10..98433305 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -1144,6 +1144,8 @@ fn linearize_ty_params(@block_ctxt cx, @ty.t t)
}
ret t;
}
+
+ fn fold_tag_ty(@ty.t t) -> @ty.t { ret t; }
}
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index c85892f2..a44cdb4d 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -294,6 +294,7 @@ fn ty_to_str(&@t typ) -> str {
type ty_fold = state obj {
fn fold_simple_ty(@t ty) -> @t;
+ fn fold_tag_ty(@t ty) -> @t;
};
fn fold_ty(ty_fold fld, @t ty) -> @t {
@@ -322,7 +323,8 @@ fn fold_ty(ty_fold fld, @t ty) -> @t {
for (@t subty in subtys) {
new_subtys += vec(fold_ty(fld, subty));
}
- ret rewrap(ty, ty_tag(tid, new_subtys));
+ auto typ = rewrap(ty, ty_tag(tid, new_subtys));
+ ret fld.fold_tag_ty(typ);
}
case (ty_tup(?subtys)) {
let vec[@t] new_subtys = vec();
@@ -611,6 +613,8 @@ fn count_ty_params(@t ty) -> uint {
}
ret ty;
}
+
+ fn fold_tag_ty(@t ty) -> @t { ret ty; }
}
let vec[ast.def_id] param_ids_inner = vec();
@@ -1429,6 +1433,8 @@ fn unify(@ty.t expected, @ty.t actual, &unify_handler handler)
}
}
}
+
+ fn fold_tag_ty(@t typ) -> @t { ret typ; }
}
ret ty.fold_ty(folder(bindings), typ);
@@ -1548,6 +1554,8 @@ fn replace_type_params(@t typ, hashmap[ast.def_id,@t] param_map) -> @t {
}
}
}
+
+ fn fold_tag_ty(@t typ) -> @t { ret typ; }
}
auto replacer = param_replacer(param_map);
ret fold_ty(replacer, typ);
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index f8f7fc72..918cc4f1 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -73,6 +73,8 @@ fn generalize_ty(@crate_ctxt cx, @ty.t t) -> @ty.t {
}
ret t;
}
+
+ fn fold_tag_ty(@ty.t t) -> @ty.t { ret t; }
}
auto generalizer = ty_generalizer(cx, @common.new_def_hash[@ty.t]());
@@ -114,6 +116,8 @@ fn substitute_ty_params(&@crate_ctxt ccx,
case (_) { ret typ; }
}
}
+
+ fn fold_tag_ty(@ty.t typ) -> @ty.t { ret typ; }
}
fn hash_int(&int x) -> uint { ret x as uint; }