mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-29 20:15:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			999 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			999 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // Test for normalization of projections that appear in the item bounds
 | |
| // (versus those that appear directly in the input types).
 | |
| //
 | |
| //@ revisions: param_ty lifetime param_ty_no_compat lifetime_no_compat
 | |
| 
 | |
| //@[param_ty] check-pass
 | |
| //@[param_ty_no_compat] check-pass
 | |
| //@[lifetime_no_compat] check-pass
 | |
| //@[param_ty_no_compat] compile-flags: -Zno-implied-bounds-compat
 | |
| //@[lifetime_no_compat] compile-flags: -Zno-implied-bounds-compat
 | |
| 
 | |
| pub trait Iter {
 | |
|     type Item;
 | |
| }
 | |
| 
 | |
| #[cfg(any(param_ty, param_ty_no_compat))]
 | |
| impl<X, I> Iter for I
 | |
| where
 | |
|     I: IntoIterator<Item = X>,
 | |
| {
 | |
|     type Item = X;
 | |
| }
 | |
| 
 | |
| #[cfg(any(lifetime, lifetime_no_compat))]
 | |
| impl<'x, I> Iter for I
 | |
| where
 | |
|     I: IntoIterator<Item = &'x ()>,
 | |
| {
 | |
|     type Item = &'x ();
 | |
| }
 | |
| 
 | |
| pub struct Map<I>(I)
 | |
| where
 | |
|     I: Iter,
 | |
|     I::Item: 'static;
 | |
| 
 | |
| pub fn test_wfcheck<'x>(_: Map<Vec<&'x ()>>) {}
 | |
| 
 | |
| pub fn test_borrowck<'x>(_: Map<Vec<&'x ()>>, s: &'x str) -> &'static str {
 | |
|     s
 | |
|     //[lifetime]~^ ERROR lifetime may not live long enough
 | |
| }
 | |
| 
 | |
| fn main() {}
 | 
