go/test
Cuong Manh Le e99f285d52 cmd/compile: fix ICE when checking implicit dot for method call
CL 414836 limited the check for implicit dot for method call enabled by
a type bound. However, the checking condition for ODOTMETH only is not
right. For example, for promoted method, we have a OXDOT node instead,
and we still have to check for implicit dot in this case.

However, if the base type and embedded types have the same method name,
e.g in issue #53419, typecheck.AddImplicitDots will be confused and
result in an ambigus selector.

To fix this, we ensure methods for the base type are computed, then only
do the implicit dot check if we can find a matched method.

Fixes #54348

Change-Id: Iefe84ff330830afe35c5daffd499824db108da23
Reviewed-on: https://go-review.googlesource.com/c/go/+/422274
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2022-08-15 17:49:19 +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: use exact constant in go_asm.h 2022-01-10 21:27:19 +00:00
bench
chan
closure3.dir cmd/compile/internal/inline: revise closure inl position fix 2021-11-24 15:55:56 +00:00
closure5.dir test: use dot-relative imports where appropriate 2022-03-24 02:14:15 +00:00
codegen cmd/compile: combine more constant stores on amd64 2022-08-15 16:19:21 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile: fix ICE when checking implicit dot for method call 2022-08-15 17:49:19 +00:00
import2.dir
import4.dir
interface cmd/compile: require -p flag 2022-03-09 21:31:58 +00:00
intrinsic.dir
ken test/ken/slicearray.go: correct type width in comment 2021-12-05 12:50:44 +00:00
linkname.dir test: compile source files as if from "test" module 2022-03-24 17:50:47 +00:00
method4.dir
retjmp.dir cmd/internal/obj: fix tail call in non-zero frame leaf function on MIPS and S390X 2021-12-13 22:42:08 +00:00
runtime
stress
syntax cmd/compile/internal/syntax: better errors for syntax errors in lists 2022-03-31 00:26:58 +00:00
typeparam test: test method expressions promoted to derived types 2022-08-09 16:42:12 +00:00
uintptrescapes.dir
64bit.go
235.go
README.md
alg.go
alias.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
align.go
append.go
append1.go cmd/compile: match Go 1.17 compiler error messages more closely 2021-11-12 23:07:01 +00:00
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
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
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 cmd/compile: require -p flag 2022-03-09 21:31:58 +00:00
const8.go test: add more tests for const decls with ommitted RHS expressions 2022-06-28 18:11:31 +00:00
convT2X.go
convert.go
convert1.go
convert2.go
convert3.go
convert4.go
convlit.go
convlit1.go
copy.go
copy1.go
crlf.go
ddd.go
ddd1.go cmd/compile: match Go 1.17 compiler error messages more closely 2021-11-12 23:07:01 +00:00
ddd2.go
decl.go
declbad.go
defer.go
defererrcheck.go
deferfin.go
defernil.go
deferprint.go
deferprint.out
devirt.go
directive.go test: re-enable a bunch of tests with types2 2021-12-03 16:24:32 +00:00
directive2.go test: re-enable a bunch of tests with types2 2021-12-03 16:24:32 +00:00
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 [dev.unified] test: break escape_iface.go into unified/nounified variants 2022-06-30 18:41:26 +00:00
escape_iface_nounified.go [dev.unified] test: break escape_iface.go into unified/nounified variants 2022-06-30 18:41:26 +00:00
escape_iface_unified.go [dev.unified] cmd/compile/internal/noder: implicit conversions for multi-valued expressions 2022-06-30 18:42:24 +00:00
escape_indir.go
escape_level.go
escape_map.go
escape_param.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 test: re-enable a bunch of tests with types2 2021-12-03 16:24:32 +00:00
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 test/heapsampling.go: slow down allocation rate and reduce iterations 2022-05-27 21:36:06 +00:00
helloworld.go
helloworld.out
if.go
import.go
import1.go test: re-enable most go/tests that were disabled because of types2 differences 2022-01-11 02:26:58 +00:00
import2.go
import4.go
import5.go
import6.go test: re-enable most go/tests that were disabled because of types2 differences 2022-01-11 02:26:58 +00:00
index.go
index0.go
index1.go
index2.go
indirect.go
indirect1.go
init.go
init1.go
initcomma.go
initempty.go
initexp.go
initialize.go
initializerr.go test: re-enable most go/tests that were disabled because of types2 differences 2022-01-11 02:26:58 +00:00
initloop.go
inline.go [dev.unified] test: extract different inline test between unified and non-unified 2022-06-15 21:22:56 +00:00
inline_big.go
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_nounified.go [dev.unified] test: extract different inline test between unified and non-unified 2022-06-15 21:22:56 +00:00
inline_sync.go
inline_unified.go [dev.unified] test: extract different inline test between unified and non-unified 2022-06-15 21:22:56 +00:00
inline_variadic.go
int_lit.go
intcvt.go
intrinsic.go
intrinsic_atomic.go misc, test: fix test error for loong64 2022-05-20 16:16:37 +00:00
iota.go
label.go
label1.go
linkmain.go
linkmain_run.go cmd/compile: require -p flag 2022-03-09 21:31:58 +00:00
linkname.go
linkname3.go test: re-enable a bunch of tests with types2 2021-12-03 16:24:32 +00:00
linkobj.go cmd/compile: require -p flag 2022-03-09 21:31:58 +00:00
linkx.go
linkx_run.go
literal.go
literal2.go
live.go test: relax live.go for GOEXPERIMENT=unified 2022-08-10 18:52:08 +00:00
live1.go
live2.go
live_regabi.go [dev.unified] test: relax live_regabi.go 2022-06-30 18:41:17 +00:00
live_uintptrkeepalive.go all: fix spelling 2022-05-17 19:51:29 +00:00
loopbce.go cmd/compile: rework induction variable detector 2022-07-06 17:00:37 +00:00
mainsig.go
makechan.go
makemap.go
makenew.go
makeslice.go
mallocfin.go
map.go
map1.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
method.go
method1.go
method2.go go/types, types2: better error message when using *interface instead of interface 2022-01-10 22:48:40 +00:00
method3.go
method4.go
method5.go
method6.go
method7.go
named.go
named1.go
nil.go
nilcheck.go [dev.unified] test: tweak nilcheck test 2022-06-30 18:41:59 +00:00
nilptr.go
nilptr2.go
nilptr3.go
nilptr4.go
nilptr5.go
nilptr5_aix.go
nilptr5_wasm.go
nilptr_aix.go
nosplit.go misc, test: fix test error for loong64 2022-05-20 16:16:37 +00:00
notinheap.go
notinheap2.go
notinheap3.go
nowritebarrier.go
nul1.go
opt_branchlikely.go
parentype.go
peano.go
phiopt.go
print.go
print.out
printbig.go
printbig.out
prove.go cmd/compile: teach prove about and operation 2022-05-08 20:10:06 +00:00
prove_constant_folding.go cmd/compile: fold constants found by prove 2022-05-04 20:30:17 +00:00
range.go
recover.go
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
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
rename.go
rename1.go
reorder.go
reorder2.go
retjmp.go
return.go
rotate.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
run.go test: add test case for issue 53702 2022-08-14 00:14:04 +00:00
rune.go
runtime.go
shift1.go test: re-enable a bunch of tests with types2 2021-12-03 16:24:32 +00:00
shift2.go
shift3.go cmd/compile: adjust types2 shift check to match go/types (cleanup) 2022-04-07 17:19:55 +00:00
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit.go
sinit_run.go cmd/compile: require -p flag 2022-03-09 21:31:58 +00:00
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 [dev.unified] test: add switch test case for tricky nil handling 2022-07-19 23:30:49 +00:00
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
tinyfin.go
torture.go
turing.go
typecheck.go test: re-enable most go/tests that were disabled because of types2 differences 2022-01-11 02:26:58 +00:00
typecheckloop.go
typeswitch.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
uintptrescapes.go
uintptrescapes2.go
uintptrescapes3.go
uintptrkeepalive.go cmd/compile: add //go:uintptrkeepalive 2022-04-21 18:06:38 +00:00
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
zerodivide.go all: use bytes.Cut, strings.Cut 2021-10-06 15:53:04 +00:00

README.md

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.