summaryrefslogtreecommitdiff
path: root/libgo/go/go/types/assignments.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/go/types/assignments.go')
-rw-r--r--libgo/go/go/types/assignments.go8
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
}