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 += 'isnil(it.${c_name(field.name)})'
|
||||||
funcprefix += ' ? _SLIT("nil") : '
|
funcprefix += ' ? _SLIT("nil") : '
|
||||||
// struct, floats and ints have a special case through the _str function
|
// struct, floats and ints have a special case through the _str function
|
||||||
if sym.kind !in [.struct_, .alias] && !field.typ.is_int_valptr()
|
if sym.kind != .struct_ && !field.typ.is_int_valptr() && !field.typ.is_float_valptr() {
|
||||||
&& !field.typ.is_float_valptr() {
|
|
||||||
funcprefix += '*'
|
funcprefix += '*'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5519,9 +5519,6 @@ fn (mut g Gen) struct_init(node ast.StructInit) {
|
||||||
|| sfield.typ.is_pointer()) && !sfield.typ.is_number() {
|
|| sfield.typ.is_pointer()) && !sfield.typ.is_number() {
|
||||||
g.write('/* autoref */&')
|
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)
|
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.expr(expr)
|
||||||
g.write(')')
|
g.write(')')
|
||||||
} else if typ == ast.string_type {
|
} else if typ == ast.string_type {
|
||||||
if etype.is_ptr() {
|
|
||||||
g.write('*')
|
|
||||||
}
|
|
||||||
g.expr(expr)
|
g.expr(expr)
|
||||||
} else if typ == ast.bool_type {
|
} else if typ == ast.bool_type {
|
||||||
g.expr(expr)
|
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