about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2011-02-10 11:30:29 -0800
committerGraydon Hoare <graydon@mozilla.com>2011-02-10 11:30:29 -0800
commit3d63aa14e0db38afa06467db8e17722c4f744eac (patch)
tree6f3b746c24cb08d6afbc15c151f1462217046369 /src/comp
parentc4a56f7368404265a1189d3f3202f4dedfd5d0f1 (diff)
downloadrust-3d63aa14e0db38afa06467db8e17722c4f744eac.tar.gz
rust-3d63aa14e0db38afa06467db8e17722c4f744eac.zip
Handle instantiations where some type parameters remain parameters (eg. derived typedefs).
Diffstat (limited to 'src/comp')
-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 5412f13135e..5b14eea4101 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;