go/test/typeparam
Dan Scales 1c783dc148 [dev.typeparams] Add optional sub-dict entry for typeparam bound calls
In the case that a generic function/method f does a method call on a
type param allowed by its bound, an instantiation of f may do a direct
method call of a concrete type or a method call defined on a generic
type, depending on whether the passed type in a concrete type or an
instantiated type with the appropriate method defined. See the test case
boundmethod.go added to this change.

In order to keep the dictionary format the same for all instantiations
of a generic function/method, I decided to have an optional
sub-dictionary entry for "bounds" calls. At the point that we are
creating the actual dictionary, we can then fill in the needed
sub-dictionary, if the type arg is an instantiated type, or a zeroed
dictionary entry, if type arg is not instantiated and the method will be
on a concrete type.

In order to implement this, I now fill in n.Selection for "bounds"
method calls in generic functions as well. Also, I need to calculate
n.Selection correctly during import for the case where it is now set -
method calls on generic types, and bounds calls on typeparams.

With this change, the dictionaries/sub-dictionaries are correct for
absdiff.go. The new test boundmethod.go illustrates the case where the
bound sub-dict entry is not used for a dictionary for stringify[myint],
but is used for a dictionary for stringify[StringInt[myint]].

Change-Id: Ie2bcb971b7019a9f1da68c97eb03da2333327457
Reviewed-on: https://go-review.googlesource.com/c/go/+/333456
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Trust: Dan Scales <danscales@google.com>
2021-07-12 16:09:57 +00:00
..
absdiffimp.dir [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
aliasimp.dir [dev.typeparams] cmd/compile: get type aliases working with generic types 2021-05-26 21:38:54 +00:00
chansimp.dir [dev.typeparams] cmd/compile: fixing import of comm clauses/closures in generic functions 2021-05-21 23:13:46 +00:00
factimp.dir [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
listimp.dir [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
listimp2.dir [dev.typeparams] cmd/compile: Fix handling of Name nodes during stenciling 2021-05-24 22:16:09 +00:00
mapimp.dir [dev.typeparams] cmd/compile: add import/export of calls to builtin functions 2021-05-21 17:14:19 +00:00
mapsimp.dir [dev.typeparams] Don't check typecheck(3) on transform, so no need to export/import it 2021-05-24 22:17:33 +00:00
mdempsky [dev.typeparams] test: add regress tests that fail(ed) with -G=3 2021-07-07 11:12:24 +00:00
mincheck.dir [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
minimp.dir [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
mutualimp.dir [dev.typeparams] cmd/compile: create .dict Param in the package of the instantiated function 2021-06-07 19:34:39 +00:00
orderedmapsimp.dir [dev.typeparams] cmd/compile: allow inlining in instantiated functions 2021-06-04 17:48:10 +00:00
pairimp.dir [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
setsimp.dir [dev.typeparams] cmd/compile: always generate (*T).M wrappers for instantiated methods 2021-05-26 21:39:54 +00:00
sliceimp.dir [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
stringerimp.dir [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
valimp.dir [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
absdiff.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
absdiffimp.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
adder.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
aliasimp.go [dev.typeparams] cmd/compile: get type aliases working with generic types 2021-05-26 21:38:54 +00:00
append.go
boundmethod.go [dev.typeparams] Add optional sub-dict entry for typeparam bound calls 2021-07-12 16:09:57 +00:00
chans.go
chansimp.go [dev.typeparams] cmd/compile: fixing import of comm clauses/closures in generic functions 2021-05-21 23:13:46 +00:00
combine.go [dev.typeparams] cmd/compile: export OFUNCINST and OSELRECV2 nodes (for generic functions) 2021-05-21 17:03:30 +00:00
cons.go [dev.typeparams] cmd/compile: export OFUNCINST and OSELRECV2 nodes (for generic functions) 2021-05-21 17:03:30 +00:00
dictionaryCapture-noinline.go [dev.typeparams] test: add string quoting support to test/run.go 2021-06-12 14:36:25 +00:00
dictionaryCapture.go [dev.typeparams] cmd/compile: handle the (*T).M method expression with dictionaries 2021-07-07 17:31:57 +00:00
double.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
fact.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
factimp.go [dev.typeparams] cmd/compile: export OFUNCINST and OSELRECV2 nodes (for generic functions) 2021-05-21 17:03:30 +00:00
graph.go
ifaceconv.go [dev.typeparams] cmd/compile: handle derived types that are converted to interfaces 2021-07-07 17:40:11 +00:00
importtest.go
index.go [dev.typeparams] cmd/compile: functions to create GC shape types/names for a concrete type 2021-06-30 20:51:17 +00:00
interfacearg.go
issue44688.go [dev.typeparams] cmd/compile: generate wrappers within unified IR 2021-06-25 05:00:20 +00:00
issue45547.go cmd/compile: look for function in instantiations in all global assignments 2021-04-15 00:14:55 +00:00
issue45722.go cmd/compile: fix handling of ir.CurFunc during stenciling 2021-04-27 16:55:20 +00:00
issue45738.go cmd/compile: fix nongeneric closures in generic functions 2021-04-27 19:30:11 +00:00
issue45817.go [dev.typeparams] cmd/compile: fix use of method values with stenciled methods 2021-05-12 22:25:00 +00:00
issue46472.go [dev.typeparams] cmd/compile: handle ONONAME in subster.node 2021-06-01 17:10:20 +00:00
list.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
list2.go [dev.typeparams] cmd/compile: Fix handling of Name nodes during stenciling 2021-05-24 22:16:09 +00:00
listimp.go [dev.typeparams] cmd/compile: move to new export version, keep reading previous version 2021-05-21 04:03:26 +00:00
listimp2.go [dev.typeparams] cmd/compile: Fix handling of Name nodes during stenciling 2021-05-24 22:16:09 +00:00
lockable.go [dev.typeparams] cmd/compile: export OFUNCINST and OSELRECV2 nodes (for generic functions) 2021-05-21 17:03:30 +00:00
map.go
mapimp.go [dev.typeparams] cmd/compile: add import/export of calls to builtin functions 2021-05-21 17:14:19 +00:00
maps.go
mapsimp.go [dev.typeparams] Don't check typecheck(3) on transform, so no need to export/import it 2021-05-24 22:17:33 +00:00
metrics.go
min.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
mincheck.go [dev.typeparams] cmd/compile: adding union support in types1 2021-05-26 15:33:02 +00:00
minimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
mutualimp.go [dev.typeparams] cmd/compile: create .dict Param in the package of the instantiated function 2021-06-07 19:34:39 +00:00
nested.go [dev.typeparams] test: add expected failure mechanism 2021-07-07 11:12:13 +00:00
nested.out [dev.typeparams] cmd/compile/internal/types2: support local defined types 2021-06-16 21:38:50 +00:00
ordered.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
orderedmap.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
orderedmapsimp.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
pair.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
pairimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
pragma.go cmd/compile: propagate pragmas from generic function to stenciled implementation 2021-04-15 00:29:05 +00:00
sets.go
setsimp.go [dev.typeparams] cmd/compile: always generate (*T).M wrappers for instantiated methods 2021-05-26 21:39:54 +00:00
settable.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
sliceimp.go [dev.typeparams] cmd/compile: fix handling of Nname field in (*subster).tstruct. 2021-05-21 23:25:07 +00:00
slices.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
smallest.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
smoketest.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
stringable.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
stringer.go
stringerimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
struct.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
subdict.go [dev.typeparams] cmd/compile: start using sub-dictionary entries where needed 2021-07-02 19:07:06 +00:00
sum.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
tparam1.go
typelist.go
valimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
value.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00