mirror of
https://github.com/golang/go
synced 2025-05-03 03:01:34 +00:00
.github
api
doc
lib
misc
src
test
abi
alias3.dir
arenas
asmhdr.dir
chan
closure3.dir
closure5.dir
codegen
ddd2.dir
dwarf
fixedbugs
import2.dir
import4.dir
interface
intrinsic.dir
ken
linkname.dir
linknameasm.dir
method4.dir
retjmp.dir
runtime
stress
syntax
typeparam
uintptrescapes.dir
235.go
64bit.go
README.md
alg.go
alias.go
alias1.go
alias2.go
alias3.go
align.go
append.go
append1.go
args.go
armimm.go
asmhdr.go
assign.go
assign1.go
atomicload.go
bigalg.go
bigmap.go
blank.go
blank1.go
bom.go
bombad.go
bounds.go
cannotassign.go
chancap.go
chanlinear.go
char_lit.go
char_lit1.go
checkbce.go
clear.go
clearfat.go
closedchan.go
closure.go
closure1.go
closure2.go
closure3.go
closure4.go
closure5.go
closure6.go
closure7.go
cmp.go
cmp6.go
cmplx.go
cmplxdivide.c
cmplxdivide.go
cmplxdivide1.go
complit.go
complit1.go
compos.go
const.go
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go
const7.go
const8.go
convT2X.go
convert.go
convert1.go
convert2.go
convert3.go
convert4.go
convinline.go
convlit.go
convlit1.go
copy.go
copy1.go
crlf.go
ddd.go
ddd1.go
ddd2.go
decl.go
declbad.go
defer.go
defererrcheck.go
deferfin.go
defernil.go
deferprint.go
deferprint.out
devirt.go
directive.go
directive2.go
divide.go
divmod.go
embedfunc.go
embedvers.go
empty.go
env.go
eof.go
eof1.go
escape.go
escape2.go
escape2n.go
escape3.go
escape4.go
escape5.go
escape_array.go
escape_calls.go
escape_closure.go
escape_field.go
escape_goto.go
escape_hash_maphash.go
escape_iface.go
escape_indir.go
escape_level.go
escape_map.go
escape_mutations.go
escape_param.go
escape_reflect.go
escape_runtime_atomic.go
escape_selfassign.go
escape_slice.go
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go
escape_sync_atomic.go
escape_unsafe.go
fibo.go
finprofiled.go
float_lit.go
float_lit2.go
float_lit3.go
floatcmp.go
for.go
func.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
funcdup.go
funcdup2.go
fuse.go
gc.go
gc1.go
gc2.go
gcgort.go
gcstring.go
goprint.go
goprint.out
goto.go
heapsampling.go
helloworld.go
helloworld.out
if.go
import.go
import1.go
import2.go
import4.go
import5.go
import6.go
index.go
index0.go
index1.go
index2.go
indirect.go
indirect1.go
init.go
init1.go
initcomma.go
initexp.go
initialize.go
initializerr.go
initloop.go
inline.go
inline_big.go
inline_caller.go
inline_callers.go
inline_endian.go
inline_literal.go
inline_math_bits_rotate.go
inline_sync.go
inline_variadic.go
int_lit.go
intcvt.go
intrinsic.go
intrinsic_atomic.go
iota.go
label.go
label1.go
linkmain.go
linkmain_run.go
linkname.go
linkname3.go
linknameasm.go
linkobj.go
linkx.go
linkx_run.go
literal.go
literal2.go
live.go
live1.go
live2.go
live_regabi.go
live_uintptrkeepalive.go
loopbce.go
mainsig.go
makechan.go
makemap.go
makenew.go
makeslice.go
mallocfin.go
map.go
map1.go
mapclear.go
maplinear.go
maymorestack.go
mergemul.go
method.go
method1.go
method2.go
method3.go
method4.go
method5.go
method6.go
method7.go
named.go
named1.go
newinline.go
nil.go
nilcheck.go
nilptr.go
nilptr2.go
nilptr3.go
nilptr4.go
nilptr5.go
nilptr5_aix.go
nilptr5_wasm.go
nilptr_aix.go
noinit.go
nosplit.go
nowritebarrier.go
nul1.go
opt_branchlikely.go
parentype.go
peano.go
phiopt.go
print.go
print.out
printbig.go
printbig.out
prove.go
prove_constant_folding.go
prove_invert_loop_with_unused_iterators.go
range.go
range2.go
range3.go
range4.go
rangegen.go
recover.go
recover1.go
recover2.go
recover3.go
recover4.go
recover5.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
reflectmethod5.go
reflectmethod6.go
reflectmethod7.go
reflectmethod8.go
rename.go
rename1.go
reorder.go
reorder2.go
retjmp.go
return.go
rotate.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
rune.go
runtime.go
shift1.go
shift2.go
shift3.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go
solitaire.go
stack.go
stackobj.go
stackobj2.go
stackobj3.go
strcopy.go
strength.go
string_lit.go
stringrange.go
struct0.go
switch.go
switch2.go
switch3.go
switch4.go
switch5.go
switch6.go
switch7.go
tighten.go
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch.go
typeswitch1.go
typeswitch2.go
typeswitch2b.go
typeswitch3.go
uintptrescapes.go
uintptrescapes2.go
uintptrescapes3.go
uintptrkeepalive.go
undef.go
unsafe_slice_data.go
unsafe_string.go
unsafe_string_data.go
unsafebuiltins.go
used.go
utf.go
varerr.go
varinit.go
winbatch.go
writebarrier.go
zerodivide.go
zerosize.go
.gitattributes
.gitignore
CONTRIBUTING.md
LICENSE
PATENTS
README.md
SECURITY.md
VERSION
codereview.cfg
go.env
Also: Adjusted error patterns for passing test that have different error messages. Change-Id: I216294b4c4855aa93da22cdc3c0b3303e54a8420 Reviewed-on: https://go-review.googlesource.com/c/go/+/277994 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com> TryBot-Result: Go Bot <gobot@golang.org>
122 lines
5.2 KiB
Go
122 lines
5.2 KiB
Go
// errorcheck
|
|
|
|
// Copyright 2013 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.
|
|
|
|
package p
|
|
|
|
var array *[10]int
|
|
var slice []int
|
|
var str string
|
|
var i, j, k int
|
|
|
|
func f() {
|
|
// check what missing arguments are allowed
|
|
_ = array[:]
|
|
_ = array[i:]
|
|
_ = array[:j]
|
|
_ = array[i:j]
|
|
_ = array[::] // ERROR "middle index required in 3-index slice|invalid slice indices" "final index required in 3-index slice"
|
|
_ = array[i::] // ERROR "middle index required in 3-index slice|invalid slice indices" "final index required in 3-index slice"
|
|
_ = array[:j:] // ERROR "final index required in 3-index slice|invalid slice indices"
|
|
_ = array[i:j:] // ERROR "final index required in 3-index slice|invalid slice indices"
|
|
_ = array[::k] // ERROR "middle index required in 3-index slice|invalid slice indices"
|
|
_ = array[i::k] // ERROR "middle index required in 3-index slice|invalid slice indices"
|
|
_ = array[:j:k]
|
|
_ = array[i:j:k]
|
|
|
|
_ = slice[:]
|
|
_ = slice[i:]
|
|
_ = slice[:j]
|
|
_ = slice[i:j]
|
|
_ = slice[::] // ERROR "middle index required in 3-index slice|invalid slice indices" "final index required in 3-index slice"
|
|
_ = slice[i::] // ERROR "middle index required in 3-index slice|invalid slice indices" "final index required in 3-index slice"
|
|
_ = slice[:j:] // ERROR "final index required in 3-index slice|invalid slice indices"
|
|
_ = slice[i:j:] // ERROR "final index required in 3-index slice|invalid slice indices"
|
|
_ = slice[::k] // ERROR "middle index required in 3-index slice|invalid slice indices"
|
|
_ = slice[i::k] // ERROR "middle index required in 3-index slice|invalid slice indices"
|
|
_ = slice[:j:k]
|
|
_ = slice[i:j:k]
|
|
|
|
_ = str[:]
|
|
_ = str[i:]
|
|
_ = str[:j]
|
|
_ = str[i:j]
|
|
_ = str[::] // ERROR "3-index slice of string" "middle index required in 3-index slice" "final index required in 3-index slice"
|
|
_ = str[i::] // ERROR "3-index slice of string" "middle index required in 3-index slice" "final index required in 3-index slice"
|
|
_ = str[:j:] // ERROR "3-index slice of string" "final index required in 3-index slice"
|
|
_ = str[i:j:] // ERROR "3-index slice of string" "final index required in 3-index slice"
|
|
_ = str[::k] // ERROR "3-index slice of string" "middle index required in 3-index slice"
|
|
_ = str[i::k] // ERROR "3-index slice of string" "middle index required in 3-index slice"
|
|
_ = str[:j:k] // ERROR "3-index slice of string"
|
|
_ = str[i:j:k] // ERROR "3-index slice of string"
|
|
|
|
// check invalid indices
|
|
_ = array[1:2]
|
|
_ = array[2:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = array[2:2]
|
|
_ = array[i:1]
|
|
_ = array[1:j]
|
|
_ = array[1:2:3]
|
|
_ = array[1:3:2] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = array[2:1:3] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = array[2:3:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = array[3:1:2] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = array[3:2:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = array[i:1:2]
|
|
_ = array[i:2:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = array[1:j:2]
|
|
_ = array[2:j:1] // ERROR "invalid slice index|invalid slice indices"
|
|
_ = array[1:2:k]
|
|
_ = array[2:1:k] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
|
|
_ = slice[1:2]
|
|
_ = slice[2:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[2:2]
|
|
_ = slice[i:1]
|
|
_ = slice[1:j]
|
|
_ = slice[1:2:3]
|
|
_ = slice[1:3:2] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[2:1:3] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[2:3:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[3:1:2] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[3:2:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[i:1:2]
|
|
_ = slice[i:2:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[1:j:2]
|
|
_ = slice[2:j:1] // ERROR "invalid slice index|invalid slice indices"
|
|
_ = slice[1:2:k]
|
|
_ = slice[2:1:k] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
|
|
_ = str[1:2]
|
|
_ = str[2:1] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = str[2:2]
|
|
_ = str[i:1]
|
|
_ = str[1:j]
|
|
|
|
// check out of bounds indices on array
|
|
_ = array[11:11] // ERROR "out of bounds"
|
|
_ = array[11:12] // ERROR "out of bounds"
|
|
_ = array[11:] // ERROR "out of bounds"
|
|
_ = array[:11] // ERROR "out of bounds"
|
|
_ = array[1:11] // ERROR "out of bounds"
|
|
_ = array[1:11:12] // ERROR "out of bounds"
|
|
_ = array[1:2:11] // ERROR "out of bounds"
|
|
_ = array[1:11:3] // ERROR "out of bounds|invalid slice index"
|
|
_ = array[11:2:3] // ERROR "out of bounds|inverted slice|invalid slice index"
|
|
_ = array[11:12:13] // ERROR "out of bounds"
|
|
|
|
// slice bounds not checked
|
|
_ = slice[11:11]
|
|
_ = slice[11:12]
|
|
_ = slice[11:]
|
|
_ = slice[:11]
|
|
_ = slice[1:11]
|
|
_ = slice[1:11:12]
|
|
_ = slice[1:2:11]
|
|
_ = slice[1:11:3] // ERROR "invalid slice index|invalid slice indices"
|
|
_ = slice[11:2:3] // ERROR "invalid slice index|invalid slice indices|inverted slice"
|
|
_ = slice[11:12:13]
|
|
}
|