go/test/typeparam
Dan Scales eeadfa2d38 cmd/compile: fix various small bugs related to type lists
Fix various small bugs related to delaying transformations due to type
params. Most of these relate to the need to delay a transformation when
an argument of an expression or statement has a type parameter that has
a structural constraint. The structural constraint implies the operation
should work, but the transformation can't happen until the actual value
of the type parameter is known.

 - delay transformations for send statements and return statements if
   any args/values have type params.

 - similarly, delay transformation of a call where the function arg has
   type parameters. This is mainly important for the case where the
   function arg is a pure type parameter, but has a structural
   constraint that requires it to be a function. Move the setting of
   n.Use to transformCall(), since we may not know how many return
   values there are until then, if the function arg is a type parameter.

 - set the type of unary expressions from the type2 type (as we do with
   most other expressions), since that works better with expressions
   with type params.

 - deal with these delayed transformations in subster.node() and convert
   the CALL checks to a switch statement.

 - make sure ir.CurFunc is set properly during stenciling, including
   closures (needed for transforming return statements during
   stenciling).

New test file typelist.go with tests for these cases.

Change-Id: I1b82f949d8cec47d906429209e846f4ebc8ec85e
Reviewed-on: https://go-review.googlesource.com/c/go/+/305729
Trust: Dan Scales <danscales@google.com>
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
2021-03-30 03:05:45 +00:00
..
absdiff.go cmd/compile: getting more built-ins to work with generics 2021-03-17 16:53:00 +00:00
adder.go cmd/compile: replace calls to typecheck with transform functions 2021-03-23 04:23:52 +00:00
append.go cmd/compile: getting more built-ins to work with generics 2021-03-17 16:53:00 +00:00
chans.go cmd/compile: add support for generic channels and type conversion during calls 2021-03-15 20:28:10 +00:00
combine.go cmd/compile: deal with closures in generic functions and instantiated function values 2021-02-26 18:57:20 +00:00
cons.go cmd/compile: add support for generic channels and type conversion during calls 2021-03-15 20:28:10 +00:00
double.go cmd/compile: get untyped constants working in generic functions 2021-03-18 22:18:32 +00:00
fact.go [dev.typeparams] cmd/compile: make type conversions by type parameters work 2021-02-10 03:33:05 +00:00
graph.go cmd/compile: deal with comparable embedded in a constraint 2021-03-16 18:42:06 +00:00
importtest.go [dev.typeparams] cmd/compile: use existing findpkg algorithm when importing through types2 2020-11-11 01:11:43 +00:00
index.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
list.go cmd/compile: get untyped constants working in generic functions 2021-03-18 22:18:32 +00:00
list2.go cmd/compile: replace calls to typecheck with transform functions 2021-03-23 04:23:52 +00:00
lockable.go cmd/compile: fix noder.Addr() to not call typechecker 2021-03-12 02:30:33 +00:00
map.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
maps.go cmd/compile: add support for generic maps 2021-03-15 20:28:34 +00:00
metrics.go cmd/compile: fix case where func-valued field of a generic type is called 2021-03-15 20:29:11 +00:00
min.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
ordered.go cmd/compile: get instantiated generic types working with interfaces 2021-03-09 16:37:52 +00:00
orderedmap.go cmd/compile: fix case where func-valued field of a generic type is called 2021-03-15 20:29:11 +00:00
pair.go [dev.typeparams] cmd/compile: support generic types (with stenciling of method calls) 2021-02-18 22:37:06 +00:00
sets.go cmd/compile: add support for generic maps 2021-03-15 20:28:34 +00:00
settable.go cmd/compile: getting more built-ins to work with generics 2021-03-17 16:53:00 +00:00
slices.go cmd/compile: fix case where func-valued field of a generic type is called 2021-03-15 20:29:11 +00:00
smallest.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
smoketest.go
stringable.go [dev.typeparams] cmd/compile: support generic types (with stenciling of method calls) 2021-02-18 22:37:06 +00:00
stringer.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
struct.go [dev.typeparams] cmd/compile: support generic types (with stenciling of method calls) 2021-02-18 22:37:06 +00:00
sum.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
tparam1.go [dev.typeparams] cmd/compile/internal/types2: set compiler error message for undeclared variable 2020-12-02 04:48:13 +00:00
typelist.go cmd/compile: fix various small bugs related to type lists 2021-03-30 03:05:45 +00:00
value.go [dev.typeparams] cmd/compile: support generic types (with stenciling of method calls) 2021-02-18 22:37:06 +00:00