]> Cypherpunks repositories - gostls13.git/commit
[dev.typeparams] Fix problem with 14.go
authorDan Scales <danscales@google.com>
Mon, 19 Jul 2021 19:41:30 +0000 (12:41 -0700)
committerDan Scales <danscales@google.com>
Thu, 22 Jul 2021 04:45:49 +0000 (04:45 +0000)
commit8e9109e95a8c4be92ba018a1353104706acf8466
tree02c74b9d2986860bb1fbe2921dec64023cee74ee
parentee20dff27debb738ca3a89a7a30113771c1c078f
[dev.typeparams] Fix problem with 14.go

Removed a case in transformCall() where we were setting a type on n,
which isn't needed, since noder2 already set the type of n. More
importantly, we are losing information, since the type of the results
may be a shape type, but the actual type of call is the known type
from types2, which may be a concrete type (in this case Zero[MyInt]).
That concrete type will then be used correctly if the concrete result is
converted to an interface.

If we are inlining the call to Zero[MyInt], we need to add an implicit
CONVNOP operation, since we are going to use the result variable
directly, which has a shape type. So, add an implicit CONVNOP to
remember that the known type is the concrete type.

Also cleaned up 14.go a bit, so it is more understandable. Renamed type
T to AnyInt, since T is used elsewhere as a type parameter. Reformatted
Zero function and added a comment.

Change-Id: Id917a2e054e0bbae9bd302232853fa8741d49b64
Reviewed-on: https://go-review.googlesource.com/c/go/+/336430
Trust: Dan Scales <danscales@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ir/expr.go
src/cmd/compile/internal/noder/transform.go
test/run.go
test/typeparam/mdempsky/14.go