]> Cypherpunks.ru repositories - gostls13.git/commit
[dev.typeparams] cmd/compile: do transformCall with non-shape type of call
authorDan Scales <danscales@google.com>
Thu, 5 Aug 2021 22:59:39 +0000 (15:59 -0700)
committerDan Scales <danscales@google.com>
Fri, 6 Aug 2021 19:13:56 +0000 (19:13 +0000)
commit5e33d11e1051734b2495021aa64ed9f47fbae87e
treeb1c69f7a1432b77ccdac7203ebe58a34ef11668e
parentac78501b9c4f7458c6b4352b1590db058d9ac27c
[dev.typeparams] cmd/compile: do transformCall with non-shape type of call

Do the transformCall using the original types2-derived type of the call
(in particular, the types of the params as non-shapes). Currently, since
we were using the param types of the instantiation, we might add in
interface conversions to an interface with shapes in the one case of a
full-instantiated generic call. So, we do the transformCall() before
installing the shaped-based instantiation. transformCall() works
correctly even in the case of OCALL/FUNCINST.

Fixed two related bugs:
  - Fixed case where we still were not correctly substituting the types
    for a function instantiation.
  - The type substituter needs to copy field flags while substituting in
    tstruct.

Change-Id: I14e960737d6840a75846ede480e6650534ba3af3
Reviewed-on: https://go-review.googlesource.com/c/go/+/340259
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Dan Scales <danscales@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/noder/expr.go
src/cmd/compile/internal/noder/stencil.go
src/cmd/compile/internal/noder/transform.go
src/cmd/compile/internal/typecheck/subr.go