1
0
mirror of https://github.com/golang/go synced 2024-09-29 16:34:31 -06:00
go/test
Dan Scales bbe1be5c19 cmd/compile: report channel size errors correctly for -G=3
First, we need to set base.Pos in varDecl() and typeDecl(), so it will
be correct if we need to report type size errors while converting types.
Changed error calls in types/sizes.go to use Errorf, not ErrorfAt, since
we want to use base.Pos (which will set from t.Pos(), if that is
available).

Second, we need to add an extra call CalcSize(t1.Elem()) in the
TCHANARGS case of CalcSize(). We can use CalcSize() rather than
CheckSize(), since we know the top-level recursive type will have been
calculated by the time we process the fake TCHANARGS type. In -G=0 mode,
the size of the channel element has often been calculated because of
some other processing (but not in the case of #49767). But in -G=3 mode,
we just calculate sizes during the single noder2 pass, so we are more
likely to have not gotten to calculating the size of the element yet,
depending on the order of processing of the deferredTypeStack.

Fixes the tests fixedbugs/issue{42058a,42058b}.go that were
disabled for -G=3 mode.

Had to add exceptions in stdlib_test.go for go/types and types2, because
the types2 typechecker does not know about type size limits.

Fixes #49814
Fixes #49771
Updates #49767

Change-Id: I77d058e8ceff68a58c4c386a8cf46799c54b04c3
Reviewed-on: https://go-review.googlesource.com/c/go/+/367955
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2021-12-02 20:49:56 +00:00
..
abi cmd/compile: restore tail call for method wrappers 2021-09-17 22:59:44 +00:00
alias3.dir
asmhdr.dir cmd/compile: emit sensible go_asm.h consts for big ints 2021-10-30 18:30:05 +00:00
bench test/bench/go1: fix size for RegexpMatchMedium_32 2021-07-18 21:03:43 +00:00
chan [dev.typeparams] cmd/compile/internal/types2: implement close(ch) where ch is of type parameter type 2021-07-14 23:33:46 +00:00
closure3.dir cmd/compile/internal/inline: revise closure inl position fix 2021-11-24 15:55:56 +00:00
closure5.dir
codegen test/codegen: updated arithmetic tests to verify on ppc64,ppc64le 2021-11-01 13:12:37 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile: report channel size errors correctly for -G=3 2021-12-02 20:49:56 +00:00
import2.dir
import4.dir
interface cmd/compile: match Go 1.17 compiler error messages more closely 2021-11-12 23:07:01 +00:00
intrinsic.dir
ken
linkname.dir cmd/compile: allow inlining of ORANGE 2021-10-28 14:25:03 +00:00
method4.dir
oldescape_linkname.dir
retjmp.dir
runtime
stress all: update references to symbols moved from io/ioutil to io 2021-04-05 17:51:15 +00:00
syntax test/syntax: remove interface.go 2021-04-06 18:55:39 +00:00
typeparam cmd/compile: fix case where g.curDecl should be saved/restored 2021-12-02 07:04:05 +00:00
uintptrescapes.dir
64bit.go
235.go
alg.go
alias1.go
alias2.go cmd/compile: match Go 1.17 compiler error messages more closely 2021-11-12 23:07:01 +00:00
alias3.go
alias.go
align.go
append1.go cmd/compile: match Go 1.17 compiler error messages more closely 2021-11-12 23:07:01 +00:00
append.go
args.go
armimm.go
asmhdr.go cmd/compile: emit sensible go_asm.h consts for big ints 2021-10-30 18:30:05 +00:00
assign1.go
assign.go
atomicload.go
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
cannotassign.go
chancap.go
chanlinear.go
char_lit1.go cmd/compile: do not report error for invalid constant 2021-03-05 18:46:43 +00:00
char_lit.go
checkbce.go
clearfat.go
closedchan.go
closure1.go
closure2.go
closure3.go cmd/compile: disable inlining functions with closures for now 2021-02-24 21:34:21 +00:00
closure4.go
closure5.go
closure6.go
closure7.go
closure.go
cmp6.go
cmp.go
cmplx.go
cmplxdivide1.go
cmplxdivide.c
cmplxdivide.go
complit1.go test: fix error check messages for 2 types2 tests 2021-06-02 05:14:45 +00:00
complit.go
compos.go
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go
const7.go
const.go
convert1.go
convert2.go cmd/compile: allow conversion from slice to array ptr 2021-04-21 00:53:48 +00:00
convert3.go
convert4.go cmd/compile: allow conversion from slice to array ptr 2021-04-21 00:53:48 +00:00
convert.go
convlit1.go
convlit.go cmd/compile/internal/types2: refactor untyped conversions 2021-03-23 05:11:09 +00:00
convT2X.go
copy1.go
copy.go
crlf.go
ddd1.go cmd/compile: match Go 1.17 compiler error messages more closely 2021-11-12 23:07:01 +00:00
ddd2.go
ddd.go
decl.go
declbad.go cmd/compile: rewrite a, b = f() to use temporaries when type not identical 2021-06-14 07:12:37 +00:00
defer.go
defererrcheck.go
deferfin.go
defernil.go
deferprint.go
deferprint.out
devirt.go [dev.typeparams] cmd/compile: simplify interface conversions 2021-08-09 16:10:20 +00:00
directive.go
divide.go
divmod.go
embedfunc.go
embedvers.go
empty.go
env.go
eof1.go
eof.go
escape2.go [dev.typeparams] cmd/compile: move call logic from order.go to escape 2021-06-23 16:48:12 +00:00
escape2n.go [dev.typeparams] cmd/compile: move call logic from order.go to escape 2021-06-23 16:48:12 +00:00
escape3.go
escape4.go
escape5.go [dev.typeparams] test: rename blank functions 2021-07-28 21:41:07 +00:00
escape_array.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape_calls.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape_closure.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape_field.go
escape_goto.go [dev.typeparams] test: rename blank functions 2021-07-28 21:41:07 +00:00
escape_hash_maphash.go
escape_iface.go
escape_indir.go
escape_level.go
escape_map.go
escape_param.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape_runtime_atomic.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape_selfassign.go
escape_slice.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape_sync_atomic.go
escape_unsafe.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
escape.go
fibo.go
finprofiled.go
float_lit2.go
float_lit3.go
float_lit.go
floatcmp.go
for.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
func.go
funcdup2.go
funcdup.go
fuse.go test: do not run fuse test in noopt mode 2021-04-28 15:55:10 +00:00
gc1.go
gc2.go
gc.go
gcgort.go
gcstring.go
goprint.go
goprint.out
goto.go
heapsampling.go
helloworld.go
helloworld.out
if.go
import1.go
import2.go
import4.go
import5.go
import6.go
import.go
index0.go
index1.go
index2.go
index.go
indirect1.go
indirect.go
init1.go
init.go
initcomma.go
initempty.go
initexp.go
initialize.go
initializerr.go
initloop.go
inline_big.go [dev.typeparams] cmd/compile/internal/inline: refactor mkinlcall 2021-05-27 23:40:56 +00:00
inline_caller.go
inline_callers.go
inline_endian.go test: skip endian inlining test on noopt builder 2021-10-07 00:39:17 +00:00
inline_literal.go
inline_math_bits_rotate.go
inline_sync.go
inline_variadic.go [dev.typeparams] cmd/compile: simplify inlining variadic calls 2021-05-26 23:50:45 +00:00
inline.go cmd/compile/internal/inline: revise closure inl position fix 2021-11-24 15:55:56 +00:00
int_lit.go
intcvt.go
intrinsic_atomic.go
intrinsic.go
iota.go
label1.go
label.go
linkmain_run.go
linkmain.go
linkname2.go cmd/compile: resolve the TODO of processPragmas 2021-10-28 01:15:26 +00:00
linkname.go
linkobj.go
linkx_run.go
linkx.go
literal2.go
literal.go
live1.go
live2.go
live_regabi.go test: enable regabi test on arm64 2021-08-20 19:58:13 +00:00
live_syscall.go
live.go [dev.typeparams] cmd/compile: simplify interface conversions 2021-08-09 16:10:20 +00:00
locklinear.go
loopbce.go
mainsig.go
makechan.go cmd/compile/internal/types2: add unsafe.Add and unsafe.Slice 2021-04-23 00:41:01 +00:00
makemap.go cmd/compile/internal/types2: add unsafe.Add and unsafe.Slice 2021-04-23 00:41:01 +00:00
makenew.go
makeslice.go
mallocfin.go
map1.go
map.go
mapclear.go
maplinear.go
maymorestack.go cmd/{asm,compile,internal/obj}: add "maymorestack" support 2021-11-05 00:52:06 +00:00
mergemul.go
method1.go
method2.go
method3.go
method4.go
method5.go
method6.go
method7.go
method.go
named1.go
named.go
nil.go
nilcheck.go
nilptr2.go
nilptr3.go
nilptr4.go
nilptr5_aix.go
nilptr5_wasm.go
nilptr5.go
nilptr_aix.go
nilptr.go
nosplit.go test: make nosplit test invariant to ABI wrappers 2021-03-18 16:51:25 +00:00
notinheap2.go
notinheap3.go
notinheap.go
nowritebarrier.go
nul1.go
opt_branchlikely.go
parentype.go
peano.go
phiopt.go cmd/compile/internal/ssa: strengthen phiopt pass 2021-03-29 05:50:11 +00:00
print.go
print.out
printbig.go
printbig.out
prove.go docs: fix spelling 2021-02-24 04:11:43 +00:00
range.go
README.md
recover1.go
recover2.go
recover3.go
recover4.go test/recover4.go: use mprotect to create a hole instead of munmap 2021-11-12 16:58:34 +00:00
recover5.go
recover.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
reflectmethod5.go
reflectmethod6.go
reflectmethod7.go all: use reflect.{Pointer,PointerTo} 2021-10-26 14:24:17 +00:00
reflectmethod8.go [dev.typeparams] cmd/compile: fix missing condition in usemethod 2021-07-22 17:48:41 +00:00
rename1.go
rename.go
reorder2.go
reorder.go
retjmp.go
return.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
rotate.go
run.go cmd/compile: report channel size errors correctly for -G=3 2021-12-02 20:49:56 +00:00
rune.go
runtime.go
shift1.go
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit_run.go
sinit.go
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go
solitaire.go
stack.go
stackobj2.go
stackobj3.go
stackobj.go
strcopy.go
strength.go
string_lit.go
stringrange.go
struct0.go
switch2.go
switch3.go
switch4.go
switch5.go
switch6.go cmd/compile, types2: better error message for invalid type assertion 2021-10-19 17:01:35 +00:00
switch7.go
switch.go
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch1.go
typeswitch2.go
typeswitch2b.go
typeswitch3.go cmd/compile/internal/types2: better error for type assertion/switch on type parameter value 2021-11-12 22:20:51 +00:00
typeswitch.go
uintptrescapes2.go [dev.typeparams] cmd/compile: skip escape analysis diagnostics for wrappers 2021-06-24 18:24:24 +00:00
uintptrescapes3.go
uintptrescapes.go
undef.go
unsafebuiltins.go unsafe: allow unsafe.Slice up to end of address space 2021-10-13 18:15:16 +00:00
used.go
utf.go
varerr.go
varinit.go
winbatch.go
writebarrier.go cmd/compile: don't emit write barriers for offsets of global addresses 2021-08-23 19:46:36 +00:00
zerodivide.go all: use bytes.Cut, strings.Cut 2021-10-06 15:53:04 +00:00

The test directory contains tests of the Go tool chain and runtime. It includes black box tests, regression tests, and error output tests. They are run as part of all.bash.

To run just these tests, execute:

../bin/go run run.go

To run just tests from specified files in this directory, execute:

../bin/go run run.go -- file1.go file2.go ...

Standard library tests should be written as regular Go tests in the appropriate package.

The tool chain and runtime also have regular Go tests in their packages. The main reasons to add a new test to this directory are:

  • it is most naturally expressed using the test runner; or
  • it is also applicable to gccgo and other Go tool chains.