cgen: fix channel of sumtype (#12938)
							parent
							
								
									b4723c18fc
								
							
						
					
					
						commit
						d3ccdfd75c
					
				| 
						 | 
					@ -70,7 +70,11 @@ fn (mut g Gen) infix_expr_arrow_op(node ast.InfixExpr) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	g.expr(node.left)
 | 
						g.expr(node.left)
 | 
				
			||||||
	g.write(', ')
 | 
						g.write(', ')
 | 
				
			||||||
	g.expr(node.right)
 | 
						if g.table.sym(elem_type).kind in [.sum_type, .interface_] {
 | 
				
			||||||
 | 
							g.expr_with_cast(node.right, node.right_type, elem_type)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							g.expr(node.right)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	g.write(')')
 | 
						g.write(')')
 | 
				
			||||||
	if gen_or {
 | 
						if gen_or {
 | 
				
			||||||
		g.or_block(tmp_opt, node.or_block, ast.void_type)
 | 
							g.or_block(tmp_opt, node.or_block, ast.void_type)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,3 +27,21 @@ fn test_printing_of_channels() {
 | 
				
			||||||
	fch.close()
 | 
						fch.close()
 | 
				
			||||||
	assert fch.str() == 'chan f64{cap: 100, closed: 1}'
 | 
						assert fch.str() == 'chan f64{cap: 100, closed: 1}'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct Aa {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct Ab {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type As = Aa | Ab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn func(ch chan As) {
 | 
				
			||||||
 | 
						ch <- Aa{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn test_chan_of_sumtype() {
 | 
				
			||||||
 | 
						a := chan As{}
 | 
				
			||||||
 | 
						go func(a)
 | 
				
			||||||
 | 
						ret := <-a
 | 
				
			||||||
 | 
						println(ret)
 | 
				
			||||||
 | 
						assert '$ret' == 'As(Aa{})'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue