ast: fix `new_struct := MyStruct{...(*old_struct)}` (#8544)
parent
27239db427
commit
162c42dbe9
|
@ -1254,6 +1254,8 @@ pub fn (expr Expr) is_lvalue() bool {
|
||||||
CTempVar { return true }
|
CTempVar { return true }
|
||||||
IndexExpr { return expr.left.is_lvalue() }
|
IndexExpr { return expr.left.is_lvalue() }
|
||||||
SelectorExpr { return expr.expr.is_lvalue() }
|
SelectorExpr { return expr.expr.is_lvalue() }
|
||||||
|
ParExpr { return expr.expr.is_lvalue() } // for var := &{...(*pointer_var)}
|
||||||
|
PrefixExpr { return expr.right.is_lvalue() }
|
||||||
else {}
|
else {}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -170,6 +170,14 @@ fn test_assoc_with_vars() {
|
||||||
}
|
}
|
||||||
assert merged.a == 42
|
assert merged.a == 42
|
||||||
assert merged.b == 7
|
assert merged.b == 7
|
||||||
|
|
||||||
|
def3 := &Def{ 100, 200 }
|
||||||
|
merged1 := Def{...(*def3)}
|
||||||
|
merged2 := &Def{...(*def3)}
|
||||||
|
assert merged1.a == 100
|
||||||
|
assert merged1.b == 200
|
||||||
|
assert merged2.a == 100
|
||||||
|
assert merged2.b == 200
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
Loading…
Reference in New Issue