]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: fix array index out of bounds error message
authorRick Arnold <rickarnoldjr@gmail.com>
Wed, 19 Feb 2014 19:29:36 +0000 (11:29 -0800)
committerRob Pike <r@golang.org>
Wed, 19 Feb 2014 19:29:36 +0000 (11:29 -0800)
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

src/cmd/gc/typecheck.c
test/fixedbugs/issue7150.go [new file with mode: 0644]

index 0ef497f62dfb6adcc0ed54ca5ee0c0696ebe517c..6b5ad8188699641fc80031318be334fcc8c309dd 100644 (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
                                }
                        }
diff --git a/test/fixedbugs/issue7150.go b/test/fixedbugs/issue7150.go
new file mode 100644 (file)
index 0000000..264958a
--- /dev/null
@@ -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\]"
+}