]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix position info for implicit nodes due to generics
authorDan Scales <danscales@google.com>
Sun, 14 Nov 2021 00:17:52 +0000 (16:17 -0800)
committerDan Scales <danscales@google.com>
Mon, 15 Nov 2021 18:02:28 +0000 (18:02 +0000)
commit1dc9af5cdc6dabe4841afb4edf9dbf5124946ea0
tree106b4cb9a3acb261f2c246cd954f0dc10de65b4a
parentf986191325e9c8be606b5f4db69a33692728274b
cmd/compile: fix position info for implicit nodes due to generics

The main fix is that we should call ir.SetPos() at the beginning of
(*subster).node.edit function, since that is analogous to the
ir.SetPos() at the beginning of typecheck.typecheck(). It ensures that
transform functions can use base.Pos() with appropriate results, just
like their corresponding tc*() functions do.

A small fix is to make sure that the new nodes creates for dictionary
references have the correct position based on the location of the
function call.

Another small fix is to the use of base.Pos when creating a new selector
expression (including implicit XDOTs) for a method expression in
buildClosure().

Also, I converted the final use of base.Pos in stencil.go to src.NoXPos,
since the nodes created by AddImplicitDots will be checked for their
type, but won't actually be used.

I also needed to add an ir.SetPos() at the beginning of transformCall(),
since transformCall() is called in the modify and dict passes, when we
base.Pos is not being set for each node.

This change fixes all the line numbering problems printed out from
Alessandro's program, except for auto-generated functions (which I think
are fine).

Fixes #49523

Change-Id: I9836a497b7beba25ecafdde653a6c2036a3020d3
Reviewed-on: https://go-review.googlesource.com/c/go/+/363835
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/noder/stencil.go
src/cmd/compile/internal/noder/transform.go