diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-04-18 21:26:25 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-04-19 21:01:11 -0700 |
| commit | 3c995fb8f3676a313f5ac883e175cc5fe354e640 (patch) | |
| tree | fa1a0f749b8e6efcb360977f4ad1fa9a397e0cb2 /src/rustc/middle/alias.rs | |
| parent | f3f34bf09b2512cac0e77281d8f2249d64cf2743 (diff) | |
| download | rust-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.rs | 11 |
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; |
