checker: fix error of map selector assign (#12902)
parent
d07975335d
commit
7c85c2ab1f
|
@ -300,6 +300,13 @@ pub fn (mut c Checker) assign_stmt(mut node ast.AssignStmt) {
|
||||||
c.error('non-name on the left side of `:=`', left.pos)
|
c.error('non-name on the left side of `:=`', left.pos)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ast.SelectorExpr {
|
||||||
|
if mut left.expr is ast.IndexExpr {
|
||||||
|
if left.expr.is_map {
|
||||||
|
left.expr.is_setter = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
if mut left is ast.IndexExpr {
|
if mut left is ast.IndexExpr {
|
||||||
// eprintln('>>> left.is_setter: ${left.is_setter:10} | left.is_map: ${left.is_map:10} | left.is_array: ${left.is_array:10}')
|
// eprintln('>>> left.is_setter: ${left.is_setter:10} | left.is_map: ${left.is_map:10} | left.is_array: ${left.is_array:10}')
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
struct Test {
|
||||||
|
mut:
|
||||||
|
data int
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_map_selector_assign() {
|
||||||
|
mut m := map[int]Test{}
|
||||||
|
m[0].data = 1
|
||||||
|
println(m[0].data)
|
||||||
|
assert m[0].data == 1
|
||||||
|
}
|
Loading…
Reference in New Issue