1
0
mirror of https://github.com/golang/go synced 2024-11-23 06:50:05 -07:00
go/test
Matthew Dempsky 638f112d69 cmd/compile: cleanup method symbol creation
There were multiple ad hoc ways to create method symbols, with subtle
and confusing differences between them. This CL unifies them into a
single well-documented encoding and implementation.

This introduces some inconsequential changes to symbol format for the
sake of simplicity and consistency. Two notable changes:

1) Symbol construction is now insensitive to the package currently
being compiled. Previously, non-exported methods on anonymous types
received different method symbols depending on whether the method was
local or imported.

2) Symbols for method values parenthesized non-pointer receiver types
and non-exported method names, and also always package-qualified
non-exported method names. Now they use the same rules as normal
method symbols.

The methodSym function is also now stricter about rejecting
non-sensical method/receiver combinations. Notably, this means that
typecheckfunc needs to call addmethod to validate the method before
calling declare, which also means we no longer emit errors about
redeclaring bogus methods.

Change-Id: I9501c7a53dd70ef60e5c74603974e5ecc06e2003
Reviewed-on: https://go-review.googlesource.com/104876
Reviewed-by: Robert Griesemer <gri@golang.org>
2018-04-05 22:01:17 +00:00
..
alias3.dir
bench test/bench/go1: fix typo in parserdata_test.go comment 2017-03-22 03:23:16 +00:00
chan all: fix article typos 2017-09-15 02:39:16 +00:00
closure3.dir cmd/compile: inline closures with captures 2017-11-05 04:18:05 +00:00
codegen test/codegen: port arm64 byte slice zeroing tests 2018-04-04 13:18:15 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile/internal/syntax: better error message for incorrect if/switch header 2018-04-03 21:57:37 +00:00
import2.dir
import4.dir
interface cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
intrinsic.dir cmd/compile: intrinsics for math/bits.TrailingZerosX 2017-03-16 02:44:16 +00:00
ken
linkname.dir
method4.dir
retjmp.dir cmd/asm: fix assembling return jump 2018-03-01 21:11:16 +00:00
safe
stress
syntax cmd/compile: better handling of incorrect type switches 2018-04-03 05:34:20 +00:00
uintptrescapes.dir
64bit.go
235.go
alg.go
alias1.go
alias2.go cmd/compile: cleanup method symbol creation 2018-04-05 22:01:17 +00:00
alias3.go
alias.go
append1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
append.go
args.go
armimm.go cmd/internal/obj: continue to optimize ARM's constant pool 2017-05-11 13:53:54 +00:00
assign1.go
assign.go
atomicload.go
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
chancap.go runtime: use sparse mappings for the heap 2018-02-15 21:12:23 +00:00
chanlinear.go
char_lit1.go
char_lit.go
checkbce.go test: add missing copyright header to checkbce.go 2017-05-18 00:05:25 +00:00
clearfat.go
closedchan.go
closure1.go
closure2.go
closure3.go cmd/compile: fix reassignment check 2017-11-03 20:09:26 +00:00
closure.go
cmp6.go
cmp.go
cmplx.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
cmplxdivide1.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide.c runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
complit1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
complit.go
compos.go
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go
const.go
convert1.go
convert2.go
convert3.go
convert.go
convlit1.go
convlit.go
convT2X.go
copy1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
copy.go
crlf.go
ddd1.go test: reenable ... test 2017-08-11 17:41:17 +00:00
ddd2.go
ddd.go
decl.go
declbad.go
defer.go
deferfin.go
deferprint.go
deferprint.out
devirt.go cmd/compile: de-virtualize interface calls 2017-03-14 18:49:23 +00:00
divide.go
divmod.go
empty.go
env.go
eof1.go
eof.go
errchk test: skip "# package/path" output from cmd/go in errchk 2017-12-13 21:32:01 +00:00
escape2.go test: add missing escape analysis test 2017-08-11 00:56:21 +00:00
escape2n.go test: add missing escape analysis test 2017-08-11 00:56:21 +00:00
escape3.go
escape4.go cmd/compile: inline calls to local closures 2017-10-11 22:32:36 +00:00
escape5.go cmd/compile: mark anonymous receiver parameters as non-escaping 2018-03-08 00:20:01 +00:00
escape_array.go cmd/compile: print accurate escape reason for non-const-length slices 2018-03-28 16:56:03 +00:00
escape_because.go test: update list of escape reasons 2018-03-29 14:17:40 +00:00
escape_calls.go
escape_closure.go
escape_field.go
escape_iface.go
escape_indir.go
escape_level.go
escape_map.go
escape_param.go
escape_slice.go
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go
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
gc1.go
gc2.go
gc.go
gcstring.go
goprint.go
goprint.out
goto.go cmd/compile: report block start for gotos jumping into blocks 2017-04-19 02:27:58 +00:00
heapsampling.go
helloworld.go
helloworld.out
if.go
import1.go
import2.go
import4.go
import5.go cmd/compile: be slightly more tolerant in case of certain syntax errors 2017-03-24 20:07:15 +00:00
import6.go
import.go
index0.go
index1.go
index2.go
index.go
indirect1.go
indirect.go
init1.go
init.go Revert "cmd/compile: improve error message if init is directly invoked" 2017-03-06 23:48:37 +00:00
initcomma.go
initialize.go
initializerr.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
initloop.go
inline_caller.go runtime: skip logical frames in runtime.Caller 2017-04-18 19:56:30 +00:00
inline_callers.go test: make inline_callers.go test not inline the runtime 2017-11-22 00:52:54 +00:00
inline_literal.go cmd/compile: copy literals when inlining 2017-03-03 21:29:32 +00:00
inline_variadic.go cmd/compile: enable inlining variadic functions 2018-03-13 20:34:03 +00:00
inline.go cmd/compile: inline closures with captures 2017-11-05 04:18:05 +00:00
int_lit.go
intcvt.go
intrinsic_atomic.go cmd/compile: intrinsify atomics on MIPS64 2017-10-10 19:43:38 +00:00
intrinsic.go
iota.go
label1.go cmd/compile/internal/gc: don't panic on continue in switch 2017-04-12 14:27:45 +00:00
label.go
linkmain_run.go
linkmain.go
linkname.go
linkobj.go
linkx_run.go
linkx.go
literal.go
live1.go
live2.go cmd/compile: specialize map creation for small hint sizes 2017-11-02 17:03:45 +00:00
live_syscall.go cmd/compile: fix unsafe.Pointer liveness for Syscall-like functions 2017-12-08 21:34:24 +00:00
live.go cmd/compile: mark the first word of an interface as a uintptr 2018-02-27 22:58:32 +00:00
locklinear.go test: skip locklinear's lockmany test for now 2018-04-05 10:53:40 +00:00
loopbce.go cmd/compile: make loop guard+rotate conditional on GOEXPERIMENT 2017-06-21 22:07:33 +00:00
makechan.go cmd/compile: generate makechan calls with int arguments 2017-08-15 05:54:24 +00:00
makemap.go test: check that size argument errors are emitted at call site 2018-03-14 08:36:15 +00:00
makenew.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
mallocfin.go
map1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
map.go
maplinear.go
mergemul.go cmd/compile: combine x*n - y*n into (x-y)*n 2017-09-03 14:29:38 +00:00
method1.go
method2.go cmd/compile: add two error position tests for the typechecker 2017-10-12 20:50:20 +00:00
method3.go
method4.go
method5.go
method6.go cmd/compile: add two error position tests for the typechecker 2017-10-12 20:50:20 +00:00
method7.go test: disable broken test for 1.10 2017-12-04 19:29:14 +00:00
method.go
named1.go
named.go
nil.go
nilcheck.go
nilptr2.go
nilptr3.go cmd/compile: remove more nil ptr checks after newobject 2017-08-25 03:26:58 +00:00
nilptr4.go
nilptr.go
nosplit.go test: fix and re-enable nosplit.go 2017-10-31 19:12:11 +00:00
notinheap2.go
notinheap3.go cmd/compile: []T where T is go:notinheap does not need write barriers 2017-11-06 21:07:57 +00:00
notinheap.go
nowritebarrier.go cmd/compile: improve coverage of nowritebarrierrec check 2017-10-29 19:36:44 +00:00
nul1.go
opt_branchlikely.go
parentype.go
peano.go
phiopt.go
print.go cmd/compile: fix print/println when input is uint 2017-09-26 04:08:38 +00:00
print.out cmd/compile: fix print/println when input is uint 2017-09-26 04:08:38 +00:00
printbig.go
printbig.out
prove.go cmd/compile: in prove, complete support for OpIsInBounds/OpIsSliceInBounds 2018-04-03 20:25:34 +00:00
range.go cmd/compile: improve single blank variable handling in walkrange 2017-09-12 05:50:54 +00:00
README.md test: use the version of Go used to run run.go 2018-03-03 19:52:00 +00:00
recover1.go
recover2.go
recover3.go
recover4.go all: use Fatalf instead of Fatal if format is given 2018-01-10 01:35:45 +00:00
recover5.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
recover.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
rename1.go cmd/compile: avoid duplicate cast error 2017-08-22 13:44:35 +00:00
rename.go
reorder2.go
reorder.go
retjmp.go cmd/asm: fix assembling return jump 2018-03-01 21:11:16 +00:00
return.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
rotate.go
run.go test: avoid touching GOOS/GOARCH in codegen driver 2018-03-29 19:00:10 +00:00
rune.go
runtime.go cmd/compile/internal/gc: separate builtin and real runtime packages 2017-03-01 01:06:32 +00:00
shift1.go cmd/compile: permit indices of certain non-constant shifts 2017-12-01 20:39:50 +00:00
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 cmd/compile: make prove pass use unsatisfiability 2018-03-08 22:25:25 +00:00
solitaire.go
stack.go
strength.go
string_lit.go
stringrange.go
struct0.go
switch2.go
switch3.go
switch4.go
switch5.go cmd/compile: make duplicate expr cases readable 2017-05-19 18:11:51 +00:00
switch6.go
switch7.go cmd/compile: make duplicate expr cases readable 2017-05-19 18:11:51 +00:00
switch.go
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch1.go
typeswitch2.go
typeswitch3.go cmd/compile: add test for non interface type switch 2017-03-25 22:52:54 +00:00
typeswitch.go
uintptrescapes2.go cmd/compile: fix go:uintptrescapes tag for unnamed parameters 2018-02-14 21:41:39 +00:00
uintptrescapes.go
undef.go
utf.go
varerr.go
varinit.go
writebarrier.go cmd/compile: don't use statictmps for SSA-able composite literals 2017-05-11 18:28:40 +00:00
zerodivide.go

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

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.