cgen: small interface conversion fix (#11229)
							parent
							
								
									7a3fe3ca70
								
							
						
					
					
						commit
						09e854c064
					
				|  | @ -6466,6 +6466,9 @@ fn (mut g Gen) as_cast(node ast.AsCast) { | |||
| 		} | ||||
| 	} else if expr_type_sym.kind == .interface_ && sym.kind == .interface_ { | ||||
| 		g.write('I_${expr_type_sym.cname}_as_I_${sym.cname}(') | ||||
| 		if node.expr_type.is_ptr() { | ||||
| 			g.write('*') | ||||
| 		} | ||||
| 		g.expr(node.expr) | ||||
| 		g.write(')') | ||||
| 
 | ||||
|  |  | |||
|  | @ -448,6 +448,9 @@ fn (mut g Gen) gen_interface_is_op(node ast.InfixExpr) { | |||
| 		return | ||||
| 	} | ||||
| 	g.write('I_${left_sym.cname}_is_I_${right_sym.cname}(') | ||||
| 	if node.left_type.is_ptr() { | ||||
| 		g.write('*') | ||||
| 	} | ||||
| 	g.expr(node.left) | ||||
| 	g.write(')') | ||||
| } | ||||
|  |  | |||
|  | @ -21,6 +21,15 @@ fn draw(w Widget) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn draw_ref(w &Widget) { | ||||
| 	if w is ResizableWidget { | ||||
| 		rw := w as ResizableWidget | ||||
| 		assert rw.resize(10, 20) == 200 | ||||
| 	} else { | ||||
| 		assert false | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // implements Widget, but not ResizableWidget
 | ||||
| struct WidgetA { | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue