cmd/gc: fix array index out of bounds error message

The error message was previously off by one in all cases.

Fixes #7150.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/65850043
This commit is contained in:
Rick Arnold 2014-02-19 11:29:36 -08:00 committed by Rob Pike
parent d4d77052b4
commit 8eec4ebd7d
2 changed files with 18 additions and 1 deletions

View file

@ -2503,7 +2503,7 @@ typecheckcomplit(Node **np)
len = i;
if(t->bound >= 0 && len > t->bound) {
setlineno(l);
yyerror("array index %d out of bounds [0:%d]", len, t->bound);
yyerror("array index %d out of bounds [0:%d]", len-1, t->bound);
t->bound = -1; // no more errors
}
}

View file

@ -0,0 +1,17 @@
// errorcheck
// Copyright 2014 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.
// issue 7150: array index out of bounds error off by one
package main
func main() {
_ = [0]int{-1: 50} // ERROR "array index must be non-negative integer constant"
_ = [0]int{0: 0} // ERROR "array index 0 out of bounds \[0:0\]"
_ = [0]int{5: 25} // ERROR "array index 5 out of bounds \[0:0\]"
_ = [10]int{2: 10, 15: 30} // ERROR "array index 15 out of bounds \[0:10\]"
_ = [10]int{5: 5, 1: 1, 12: 12} // ERROR "array index 12 out of bounds \[0:10\]"
}