parser: deprecate `{var |` struct update (#8618)
parent
f2100166c7
commit
e2ff2a5405
|
@ -1054,6 +1054,8 @@ pub:
|
|||
pos token.Position
|
||||
}
|
||||
*/
|
||||
|
||||
// deprecated
|
||||
pub struct Assoc {
|
||||
pub:
|
||||
var_name string
|
||||
|
|
|
@ -1136,8 +1136,7 @@ pub fn (mut f Fmt) cast_expr(node ast.CastExpr) {
|
|||
pub fn (mut f Fmt) assoc(node ast.Assoc) {
|
||||
f.writeln('{')
|
||||
// f.indent++
|
||||
f.writeln('\t$node.var_name |')
|
||||
// TODO StructInit copy pasta
|
||||
f.writeln('\t...$node.var_name')
|
||||
for i, field in node.fields {
|
||||
f.write('\t$field: ')
|
||||
f.expr(node.exprs[i])
|
||||
|
|
|
@ -7,5 +7,8 @@ fn main() {
|
|||
u := User{
|
||||
age: 54
|
||||
}
|
||||
println(u)
|
||||
_ = User{
|
||||
...u
|
||||
name: 'hi'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6240,9 +6240,9 @@ $staticprefix $interface_name* I_${cctype}_to_Interface_${interface_name}_ptr($c
|
|||
//
|
||||
params_start_pos := g.out.len
|
||||
mut params := method.params.clone()
|
||||
first_param := params[0] // workaround, { params[0] | ... } doesn't work
|
||||
// hack to mutate typ
|
||||
params[0] = {
|
||||
first_param |
|
||||
...params[0]
|
||||
typ: params[0].typ.set_nr_muls(1)
|
||||
}
|
||||
fargs, _ := g.fn_args(params, false) // second argument is ignored anyway
|
||||
|
|
|
@ -244,7 +244,8 @@ pub fn (mut p Parser) expr(precedence int) ast.Expr {
|
|||
node = p.map_init()
|
||||
} else {
|
||||
// it should be a struct
|
||||
if p.peek_tok.kind == .pipe {
|
||||
if p.tok.kind == .name && p.peek_tok.kind == .pipe {
|
||||
p.warn_with_pos('use e.g. `...struct_var` instead', p.peek_tok.position())
|
||||
node = p.assoc()
|
||||
} else if (p.tok.kind == .name && p.peek_tok.kind == .colon)
|
||||
|| p.tok.kind in [.rcbr, .comment, .ellipsis] {
|
||||
|
|
Loading…
Reference in New Issue