summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-06-06 16:13:21 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-06-06 16:13:21 -0700
commitee8c762bdebb9800e768762e8f7d36a44b65f167 (patch)
tree6cc823d3ddb112f731c2ecba6560d869918b8bf9 /src
parentfec3b91a3c9ac49fb3b9a5056497046ae7875525 (diff)
downloadrust-ee8c762bdebb9800e768762e8f7d36a44b65f167.tar.gz
rust-ee8c762bdebb9800e768762e8f7d36a44b65f167.zip
Change subtypes_require to handle class fields correctly
Diffstat (limited to 'src')
-rw-r--r--src/rustc/middle/ty.rs7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/rustc/middle/ty.rs b/src/rustc/middle/ty.rs
index 3b32bca1e5f..b4d2e86e7c6 100644
--- a/src/rustc/middle/ty.rs
+++ b/src/rustc/middle/ty.rs
@@ -1678,11 +1678,8 @@ fn is_instantiable(cx: ctxt, r_ty: t) -> bool {
 
           ty_class(did, substs) {
             vec::push(*seen, did);
-            let r = vec::any(lookup_class_fields(cx, did)) {|f|
-                let fty = ty::lookup_item_type(cx, f.id);
-                let sty = subst(cx, substs, fty.ty);
-                type_requires(cx, seen, r_ty, sty)
-            };
+            let r = vec::any(class_items_as_fields(cx, did, substs)) {|f|
+                      type_requires(cx, seen, r_ty, f.mt.ty)};
             vec::pop(*seen);
             r
           }