cgen: fix blank identifier in IfGard (`if _ := <-ch { ... }`, etc) (#9650)
							parent
							
								
									6948419595
								
							
						
					
					
						commit
						b346dd9464
					
				|  | @ -4576,10 +4576,15 @@ fn (mut g Gen) if_expr(node ast.IfExpr) { | |||
| 						g.expr(branch.cond.expr) | ||||
| 						g.writeln(', ${var_name}.state == 0) {') | ||||
| 					} | ||||
| 					if branch.cond.var_name != '_' { | ||||
| 					if short_opt || branch.cond.var_name != '_' { | ||||
| 						base_type := g.base_type(branch.cond.expr_type) | ||||
| 						if short_opt { | ||||
| 							g.write('\t$base_type $branch.cond.var_name = ') | ||||
| 							cond_var_name := if branch.cond.var_name == '_' { | ||||
| 								'_dummy_${g.tmp_count + 1}' | ||||
| 							} else { | ||||
| 								branch.cond.var_name | ||||
| 							} | ||||
| 							g.write('\t$base_type $cond_var_name = ') | ||||
| 							g.expr(branch.cond.expr) | ||||
| 							g.writeln(';') | ||||
| 						} else { | ||||
|  |  | |||
|  | @ -17,6 +17,14 @@ fn test_fn_return() { | |||
| 	assert res == [31.0, 7.5] | ||||
| } | ||||
| 
 | ||||
| fn test_fn_return_empty() { | ||||
| 	if _ := f(-3) { | ||||
| 		assert false | ||||
| 	} else { | ||||
| 		assert true | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn test_map_get() { | ||||
| 	mut m := map{ | ||||
| 		'xy': 5 | ||||
|  | @ -33,6 +41,18 @@ fn test_map_get() { | |||
| 	assert res == [-17, 7] | ||||
| } | ||||
| 
 | ||||
| fn test_map_get_empty() { | ||||
| 	mut m := map{ | ||||
| 		'xy': 5 | ||||
| 		'zu': 7 | ||||
| 	} | ||||
| 	if _ := m['jk'] { | ||||
| 		assert false | ||||
| 	} else { | ||||
| 		assert true | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn test_array_get() { | ||||
| 	mut a := [12.5, 6.5, -17.25] | ||||
| 	mut res := []f64{cap: 2} | ||||
|  | @ -46,6 +66,15 @@ fn test_array_get() { | |||
| 	assert res == [6.5, -23.0] | ||||
| } | ||||
| 
 | ||||
| fn test_array_get_empty() { | ||||
| 	mut a := [12.5, 6.5, -17.25] | ||||
| 	if _ := a[7] { | ||||
| 		assert false | ||||
| 	} else { | ||||
| 		assert true | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn test_chan_pop() { | ||||
| 	mut res := []f64{cap: 3} | ||||
| 	ch := chan f64{cap: 10} | ||||
|  | @ -62,6 +91,20 @@ fn test_chan_pop() { | |||
| 	assert res == [6.75, -3.25, -37.5] | ||||
| } | ||||
| 
 | ||||
| fn test_chan_pop_empty() { | ||||
| 	ch := chan f64{cap: 10} | ||||
| 	ch <- 6.75 | ||||
| 	ch <- -3.25 | ||||
| 	ch.close() | ||||
| 	for i in 0 .. 3 { | ||||
| 		if _ := <-ch { | ||||
| 			assert i < 2 | ||||
| 		} else { | ||||
| 			assert i == 2 | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| struct Thing { | ||||
| 	name string | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue