diff options
Diffstat (limited to 'libgo/go/go/types/assignments.go')
-rw-r--r-- | libgo/go/go/types/assignments.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libgo/go/go/types/assignments.go b/libgo/go/go/types/assignments.go index 10ab17b9cf9..6ebf3b5eab0 100644 --- a/libgo/go/go/types/assignments.go +++ b/libgo/go/go/types/assignments.go @@ -179,6 +179,14 @@ func (check *Checker) assignVar(lhs ast.Expr, x *operand) Type { case variable, mapindex: // ok default: + if sel, ok := z.expr.(*ast.SelectorExpr); ok { + var op operand + check.expr(&op, sel.X) + if op.mode == mapindex { + check.errorf(z.pos(), "cannot assign to struct field %s in map", ExprString(z.expr)) + return nil + } + } check.errorf(z.pos(), "cannot assign to %s", &z) return nil } |