Revert "cgen: fix error for struct with reference alias fields (#13374)"
This reverts commit 4d485ae687.
			
			
				pull/13380/head
			
			
		
							parent
							
								
									4d485ae687
								
							
						
					
					
						commit
						5faabe7464
					
				|  | @ -916,8 +916,7 @@ fn (mut g Gen) gen_str_for_struct(info ast.Struct, styp string, str_fn_name stri | |||
| 			funcprefix += 'isnil(it.${c_name(field.name)})' | ||||
| 			funcprefix += ' ? _SLIT("nil") : ' | ||||
| 			// struct, floats and ints have a special case through the _str function
 | ||||
| 			if sym.kind !in [.struct_, .alias] && !field.typ.is_int_valptr() | ||||
| 				&& !field.typ.is_float_valptr() { | ||||
| 			if sym.kind != .struct_ && !field.typ.is_int_valptr() && !field.typ.is_float_valptr() { | ||||
| 				funcprefix += '*' | ||||
| 			} | ||||
| 		} | ||||
|  |  | |||
|  | @ -5519,9 +5519,6 @@ fn (mut g Gen) struct_init(node ast.StructInit) { | |||
| 							|| sfield.typ.is_pointer()) && !sfield.typ.is_number() { | ||||
| 							g.write('/* autoref */&') | ||||
| 						} | ||||
| 						if sfield.typ.is_ptr() && field_type_sym.kind == .alias { | ||||
| 							g.write('&') | ||||
| 						} | ||||
| 						g.expr_with_cast(sfield.expr, sfield.typ, sfield.expected_type) | ||||
| 					} | ||||
| 				} | ||||
|  |  | |||
|  | @ -85,9 +85,6 @@ fn (mut g Gen) gen_expr_to_string(expr ast.Expr, etype ast.Type) { | |||
| 		g.expr(expr) | ||||
| 		g.write(')') | ||||
| 	} else if typ == ast.string_type { | ||||
| 		if etype.is_ptr() { | ||||
| 			g.write('*') | ||||
| 		} | ||||
| 		g.expr(expr) | ||||
| 	} else if typ == ast.bool_type { | ||||
| 		g.expr(expr) | ||||
|  |  | |||
|  | @ -1,13 +0,0 @@ | |||
| type SS = string | ||||
| 
 | ||||
| struct ST { | ||||
| 	data &SS | ||||
| } | ||||
| 
 | ||||
| fn test_struct_with_reference_alias_fields() { | ||||
| 	mut val := ST{ | ||||
| 		data: &SS('hi') | ||||
| 	} | ||||
| 	println(val.data) | ||||
| 	assert '$val.data' == 'hi' | ||||
| } | ||||
		Loading…
	
		Reference in New Issue