checker: fix generics fn selector expr with unexpected symbol (#10851)
							parent
							
								
									11161f4550
								
							
						
					
					
						commit
						fdba3607af
					
				| 
						 | 
				
			
			@ -1780,7 +1780,7 @@ fn (mut c Checker) fail_if_immutable(expr ast.Expr) (string, token.Position) {
 | 
			
		|||
						c.error('`$typ_sym.kind` can not be modified', expr.pos)
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				.aggregate {
 | 
			
		||||
				.aggregate, .placeholder {
 | 
			
		||||
					c.fail_if_immutable(expr.expr)
 | 
			
		||||
				}
 | 
			
		||||
				else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,18 +4,22 @@ interface Iter<T> {
 | 
			
		|||
 | 
			
		||||
struct ArrayIter<T> {
 | 
			
		||||
	data []T
 | 
			
		||||
mut:
 | 
			
		||||
	index int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn (mut i ArrayIter<T>) next<T>() ?T {
 | 
			
		||||
	if i.data.len == 0 {
 | 
			
		||||
		return none
 | 
			
		||||
	}
 | 
			
		||||
	return i.data[0]
 | 
			
		||||
	i.index += 1
 | 
			
		||||
	return i.data[i.index]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn iter<T>(arr []T) Iter<T> {
 | 
			
		||||
	return ArrayIter<T>{
 | 
			
		||||
		data: arr
 | 
			
		||||
		index: 0
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,5 +28,5 @@ fn test_generics_fn_return_generic_interface() {
 | 
			
		|||
	println(x)
 | 
			
		||||
	y := x.next() or { 0 }
 | 
			
		||||
	println(y)
 | 
			
		||||
	assert y == 1
 | 
			
		||||
	assert y == 2
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue