gc: bug278

Fixes #804.

R=ken2
CC=golang-dev
https://golang.org/cl/1224045
This commit is contained in:
Russ Cox 2010-05-24 14:22:54 -07:00
parent 80ac15ec12
commit 5e253645d2
2 changed files with 26 additions and 0 deletions

View file

@ -2074,6 +2074,9 @@ islvalue(Node *n)
{
switch(n->op) {
case OINDEX:
if(isfixedarray(n->left->type))
return islvalue(n->left);
// fall through
case OIND:
case ODOTPTR:
return 1;

23
test/fixedbugs/bug278.go Normal file
View file

@ -0,0 +1,23 @@
// errchk $G $D/$F.go
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This is a test case for issue 804.
package main
func f() [10]int {
return [10]int{}
}
var m map[int][10]int
func main() {
f()[1] = 2 // ERROR "cannot"
f()[2:3][0] = 4 // ERROR "cannot"
var x = "abc"
x[2] = 3 // ERROR "cannot"
m[0][5] = 6 // ERROR "cannot"
}