diff options
| author | Michael Sullivan <sully@msully.net> | 2013-06-25 14:07:44 -0700 |
|---|---|---|
| committer | Michael Sullivan <sully@msully.net> | 2013-06-28 16:12:08 -0700 |
| commit | a9e51f5f701d8104be0adfb50f5d409f8bf233ff (patch) | |
| tree | 4bb62509e2d462d2cec71891645d102713c70bd0 | |
| parent | 050d0e6b29d19978584f6e389f53612497b7e41e (diff) | |
| download | rust-a9e51f5f701d8104be0adfb50f5d409f8bf233ff.tar.gz rust-a9e51f5f701d8104be0adfb50f5d409f8bf233ff.zip | |
Make default method handling not choke on self region params. Closes #7341.
| -rw-r--r-- | src/librustc/middle/trans/callee.rs | 7 | ||||
| -rw-r--r-- | src/libstd/vec.rs | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/librustc/middle/trans/callee.rs b/src/librustc/middle/trans/callee.rs index 3405db8e52f..27f1c4d039d 100644 --- a/src/librustc/middle/trans/callee.rs +++ b/src/librustc/middle/trans/callee.rs @@ -233,7 +233,12 @@ pub fn trans_fn_ref_with_vtables( // Polytype of the function item (may have type params) let fn_tpt = ty::lookup_item_type(tcx, def_id); - let substs = ty::substs { self_r: None, self_ty: None, + // For simplicity, we want to use the Subst trait when composing + // substitutions for default methods. The subst trait does + // substitutions with regions, though, so we put a dummy self + // region parameter in to keep it from failing. This is a hack. + let substs = ty::substs { self_r: Some(ty::re_empty), + self_ty: None, tps: /*bad*/ type_params.to_owned() }; diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index aa4d632a482..8555d99255d 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -2346,6 +2346,7 @@ impl<T> FromIter<T> for ~[T]{ } } +#[cfg(stage0)] impl<A, T: Iterator<A>> FromIterator<A, T> for ~[A] { pub fn from_iterator(iterator: &mut T) -> ~[A] { let mut xs = ~[]; @@ -2356,7 +2357,8 @@ impl<A, T: Iterator<A>> FromIterator<A, T> for ~[A] { } } -/* FIXME: #7341 - ICE + +#[cfg(not(stage0))] impl<A, T: Iterator<A>> FromIterator<A, T> for ~[A] { pub fn from_iterator(iterator: &mut T) -> ~[A] { let (lower, _) = iterator.size_hint(); @@ -2367,7 +2369,7 @@ impl<A, T: Iterator<A>> FromIterator<A, T> for ~[A] { xs } } -*/ + #[cfg(test)] mod tests { |
