summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-06-05 16:20:12 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-06-06 15:45:49 -0700
commit32e448e0da9fd1e93c5bcce953d1ffbc4193565a (patch)
tree9cb6c7db7422be4817c98909f6d92f10dcdfaadb /src
parenta5c9e8d59ed49725550ebd9e60871d51736393b4 (diff)
downloadrust-32e448e0da9fd1e93c5bcce953d1ffbc4193565a.tar.gz
rust-32e448e0da9fd1e93c5bcce953d1ffbc4193565a.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 73f601cf4b0..a426ded68f8 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
           }