about summary refs log tree commit diff
path: root/src/rustc/middle/alias.rs
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-04-18 21:26:25 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-04-19 21:01:11 -0700
commit3c995fb8f3676a313f5ac883e175cc5fe354e640 (patch)
treefa1a0f749b8e6efcb360977f4ad1fa9a397e0cb2 /src/rustc/middle/alias.rs
parentf3f34bf09b2512cac0e77281d8f2249d64cf2743 (diff)
downloadrust-3c995fb8f3676a313f5ac883e175cc5fe354e640.tar.gz
rust-3c995fb8f3676a313f5ac883e175cc5fe354e640.zip
make nominal types optionally parameterized by a self region.
Issue #2201.
Diffstat (limited to 'src/rustc/middle/alias.rs')
-rw-r--r--src/rustc/middle/alias.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/rustc/middle/alias.rs b/src/rustc/middle/alias.rs
index 2dc09a9a60a..de591b9cc4e 100644
--- a/src/rustc/middle/alias.rs
+++ b/src/rustc/middle/alias.rs
@@ -503,7 +503,7 @@ fn ty_can_unsafely_include(cx: ctx, needle: unsafe_ty, haystack: ty::t,
         } { ret true; }
         alt ty::get(haystack).struct {
           ty::ty_enum(_, ts) {
-            for ts.each {|t|
+            for ts.tps.each {|t|
                 if helper(tcx, needle, t, mutbl) { ret true; }
             }
             ret false;
@@ -565,10 +565,11 @@ fn copy_is_expensive(tcx: ty::ctxt, ty: ty::t) -> bool {
           ty::ty_fn(_) { 4u }
           ty::ty_str | ty::ty_vec(_) | ty::ty_param(_, _) { 50u }
           ty::ty_uniq(mt) { 1u + score_ty(tcx, mt.ty) }
-          ty::ty_enum(_, ts) | ty::ty_tup(ts) {
-            let mut sum = 0u;
-            for ts.each {|t| sum += score_ty(tcx, t); }
-            sum
+          ty::ty_enum(_, substs) {
+            substs.tps.foldl(0u) { |sum, t| sum + score_ty(tcx, t) }
+          }
+          ty::ty_tup(ts) {
+            ts.foldl(0u) { |sum, t| sum + score_ty(tcx, t) }
           }
           ty::ty_rec(fs) {
             let mut sum = 0u;