aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-02-10 11:30:29 -0800
committerGraydon Hoare <[email protected]>2011-02-10 11:30:29 -0800
commit3d63aa14e0db38afa06467db8e17722c4f744eac (patch)
tree6f3b746c24cb08d6afbc15c151f1462217046369
parentCommit the trap-failure hack to the runtime, since I keep using it in my work... (diff)
downloadrust-3d63aa14e0db38afa06467db8e17722c4f744eac.tar.xz
rust-3d63aa14e0db38afa06467db8e17722c4f744eac.zip
Handle instantiations where some type parameters remain parameters (eg. derived typedefs).
-rw-r--r--src/comp/middle/typeck.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index 5412f131..5b14eea4 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -86,7 +86,11 @@ fn ast_ty_to_ty(ty_getter getter, &@ast.ty ast_ty) -> @ty.t {
fn fold_simple_ty(@ty.t t) -> @ty.t {
alt (t.struct) {
case (ty.ty_param(?param_def)) {
- ret param_map.get(param_def);
+ if (param_map.contains_key(param_def)) {
+ ret param_map.get(param_def);
+ } else {
+ ret t;
+ }
}
case (_) {
ret t;