Auto merge of #36333 - apasel422:issue-35668, r=eddyb
Handle `ReEmpty` for `impl Trait` Closes #35668 r? @eddyb
This commit is contained in:
commit
a5f4cc527d
|
@ -319,7 +319,8 @@ impl<'cx, 'gcx, 'tcx> WritebackCx<'cx, 'gcx, 'tcx> {
|
|||
let outside_ty = gcx.fold_regions(&inside_ty, &mut false, |r, _| {
|
||||
match *r {
|
||||
// 'static is valid everywhere.
|
||||
ty::ReStatic => gcx.mk_region(ty::ReStatic),
|
||||
ty::ReStatic |
|
||||
ty::ReEmpty => gcx.mk_region(*r),
|
||||
|
||||
// Free regions that come from early-bound regions are valid.
|
||||
ty::ReFree(ty::FreeRegion {
|
||||
|
@ -341,7 +342,6 @@ impl<'cx, 'gcx, 'tcx> WritebackCx<'cx, 'gcx, 'tcx> {
|
|||
}
|
||||
|
||||
ty::ReVar(_) |
|
||||
ty::ReEmpty |
|
||||
ty::ReErased => {
|
||||
let span = reason.span(self.tcx());
|
||||
span_bug!(span, "invalid region in impl Trait: {:?}", r);
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(conservative_impl_trait)]
|
||||
|
||||
fn func<'a, T>(a: &'a [T]) -> impl Iterator<Item=&'a T> {
|
||||
a.iter().map(|a| a*a)
|
||||
//~^ ERROR binary operation `*` cannot be applied to type `&T`
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let a = (0..30).collect::<Vec<_>>();
|
||||
|
||||
for k in func(&a) {
|
||||
println!("{}", k);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue