1
0
mirror of https://github.com/golang/go synced 2024-11-17 19:54:45 -07:00
go/test/typeparam
Matthew Dempsky fa9efd9171 cmd/compile/internal/noder: correct positions for synthetic closures
When inlining functions that contain function literals, we need to be
careful about position information. The OCLOSURE node should use the
inline-adjusted position, but the ODCLFUNC and its body should use the
original positions.

However, the same problem can arise with certain generic constructs,
which require the compiler to synthesize function literals to insert
dictionary arguments.

go.dev/cl/425395 fixed the issue with user-written function literals
in a somewhat kludgy way; this CL extends the same solution to
synthetic function literals.

This is all quite subtle and the solutions aren't terribly robust, so
longer term it's probably desirable to revisit how we track inlining
context for positions. But for now, this seems to be the least bad
solution, esp. for backporting to 1.20.

Updates #54625.
Fixes #58513.

Change-Id: Icc43a70dbb11a0e665cbc9e6a64ef274ad8253d1
Reviewed-on: https://go-review.googlesource.com/c/go/+/468415
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
2023-02-27 23:07:49 +00:00
..
absdiffimp2.dir
absdiffimp.dir
aliasimp.dir
chansimp.dir
dedup.dir
factimp.dir
gencrawler.dir
geninline.dir
issue46461b.dir
issue47514c.dir
issue47775.dir
issue47892.dir
issue47892b.dir
issue48094.dir
issue48094b.dir
issue48185a.dir
issue48185b.dir
issue48280.dir
issue48306.dir
issue48337a.dir
issue48337b.dir
issue48454.dir
issue48462.dir
issue48716.dir
issue48962.dir
issue49027.dir
issue49241.dir
issue49246.dir
issue49497.dir
issue49524.dir
issue49536.dir
issue49659.dir
issue49667.dir
issue49893.dir
issue50121.dir
issue50121b.dir
issue50437.dir
issue50481b.dir
issue50481c.dir
issue50485.dir
issue50486.dir
issue50552.dir
issue50561.dir
issue50598.dir
issue50841.dir
issue51219.dir
issue51219b.dir
issue51250a.dir
issue51367.dir
issue51423.dir
issue51836.dir
issue52117.dir
issue54302.dir
listimp2.dir
listimp.dir all: fix some comments for method 2022-12-03 17:08:51 +00:00
mapimp.dir
mapsimp.dir
mdempsky cmd/compile: use "satisfies" (not "implements") for constraint errors 2023-01-04 19:07:27 +00:00
mincheck.dir cmd/compile: use "satisfies" (not "implements") for constraint errors 2023-01-04 19:07:27 +00:00
minimp.dir
mutualimp.dir
orderedmapsimp.dir
pairimp.dir
recoverimp.dir
select.dir
setsimp.dir
sliceimp.dir
stringerimp.dir
structinit.dir
valimp.dir
absdiff2.go
absdiff3.go
absdiff.go
absdiffimp2.go
absdiffimp.go
adder.go
aliasimp.go
append.go
boundmethod.go
builtins.go
chans.go
chansimp.go
combine.go
cons.go
dedup.go
dedup.out
dictionaryCapture-noinline.go
dictionaryCapture.go
dottype.go
dottype.out
double.go
eface.go
equal.go
fact.go
factimp.go
gencrawler.go
gencrawler.out
genembed2.go
genembed.go
geninline.go
graph.go all: fix typos in go file comments 2023-01-09 15:34:31 +00:00
ifaceconv.go
importtest.go
index2.go
index.go
interfacearg.go
issue23536.go
issue39755.go
issue42758.go
issue44688.go
issue45547.go
issue45722.go
issue45738.go
issue45817.go
issue46461.go go/types, types2: more concise error messages for cycle errors 2022-09-29 14:21:33 +00:00
issue46461b.go
issue46472.go
issue46591.go
issue47258.go
issue47272.go
issue47272.out
issue47514.go
issue47514b.go
issue47514c.go
issue47631.go test: enable issue47631.go for Unified IR 2022-09-30 23:00:20 +00:00
issue47676.go
issue47684.go
issue47684b.go
issue47684c.go
issue47708.go
issue47710.go
issue47713.go
issue47713.out
issue47716.go
issue47723.go
issue47740.go
issue47740.out
issue47740b.go
issue47775.go
issue47775b.go
issue47797.go
issue47877.go
issue47878.go
issue47892.go
issue47892b.go
issue47896.go
issue47901.go
issue47924.go
issue47925.go
issue47925b.go
issue47925c.go
issue47925d.go
issue47929.go
issue47948.go
issue47966.go
issue48013.go
issue48016.go
issue48030.go
issue48042.go
issue48047.go
issue48049.go
issue48056.go
issue48094.go
issue48094b.go
issue48137.go
issue48185a.go
issue48185b.go
issue48191.go
issue48198.go
issue48225.go
issue48253.go
issue48276a.go
issue48276a.out
issue48276b.go
issue48280.go
issue48306.go
issue48317.go
issue48318.go
issue48337a.go
issue48337a.out
issue48337b.go
issue48344.go
issue48424.go
issue48453.go
issue48454.go
issue48462.go
issue48537.go
issue48538.go
issue48598.go
issue48602.go
issue48604.go
issue48609.go
issue48617.go
issue48645a.go
issue48645a.out
issue48645b.go
issue48711.go
issue48716.go
issue48838.go
issue48962.go
issue49027.go
issue49049.go
issue49241.go
issue49246.go
issue49295.go
issue49309.go cmd/compile: enable more inlining for unified IR 2022-08-18 17:26:40 +00:00
issue49421.go
issue49432.go
issue49497.go
issue49516.go
issue49524.go
issue49536.go
issue49538.go
issue49547.go
issue49611.go
issue49659.go
issue49659b.go
issue49667.go
issue49875.go
issue49893.go
issue50002.go
issue50109.go
issue50109.out
issue50109b.go
issue50121.go
issue50121b.go
issue50147.go
issue50177.go
issue50193.go
issue50193.out
issue50259.go
issue50264.go
issue50317.go
issue50417.go
issue50417b.go
issue50419.go
issue50437.go
issue50481b.go
issue50481c.go
issue50481c.out
issue50485.go
issue50486.go
issue50552.go
issue50561.go
issue50598.go
issue50642.go
issue50690a.go
issue50690a.out
issue50690b.go
issue50690b.out
issue50690c.go
issue50690c.out
issue50833.go
issue50841.go
issue50993.go
issue51219.go
issue51219.out
issue51219b.go
issue51232.go
issue51233.go
issue51236.go
issue51245.go
issue51250a.go
issue51303.go
issue51303.out
issue51355.go
issue51367.go
issue51423.go
issue51521.go
issue51522a.go
issue51522b.go
issue51700.go
issue51765.go
issue51832.go
issue51836.go
issue51840.go
issue51909.go
issue51925.go
issue52026.go
issue52117.go
issue52124.go cmd/compile/internal/noder: stop creating TUNION types 2023-01-26 21:43:08 +00:00
issue52228.go
issue52241.go
issue53254.go
issue53390.go
issue53406.go
issue53419.go
issue53477.go
issue53762.go
issue54135.go
issue54225.go cmd/compile: skip emitting dictionaries with missing method expressions 2022-09-19 19:37:22 +00:00
issue54302.go
issue54456.go cmd/compile: fix reflect naming of local generic types 2022-08-23 18:13:48 +00:00
issue54497.go cmd/compile: enable more inlining for unified IR 2022-08-18 17:26:40 +00:00
issue54535.go cmd/compile: fix unified IR's pointer-shaping 2022-08-23 18:14:10 +00:00
issue54537.go cmd/compile: fix "expression has untyped type" ICE in generic code 2022-08-23 18:13:59 +00:00
issue54765.go cmd/compile: reject not-in-heap types as type arguments 2022-08-31 23:52:00 +00:00
issue55101.go test: add regress test for issue 55101 2022-09-19 18:47:00 +00:00
issue58513.go cmd/compile/internal/noder: correct positions for synthetic closures 2023-02-27 23:07:49 +00:00
issue376214.go
list2.go
list.go all: fix some comments for method 2022-12-03 17:08:51 +00:00
listimp2.go
listimp.go
lockable.go
map.go
mapimp.go
maps.go
mapsimp.go
metrics.go
min.go
mincheck.go
minimp.go
mutualimp.go
nested.go cmd/compile: fix unified IR shapifying recursive instantiated types 2022-08-30 17:23:27 +00:00
nested.out cmd/compile: fix reflect naming of local generic types 2022-08-23 18:13:48 +00:00
ordered.go
orderedmap.go
orderedmapsimp.go
pair.go
pairimp.go
pragma.go
recoverimp.go
recoverimp.out
select.go
sets.go
setsimp.go
settable.go
shape1.go
shape1.out
sliceimp.go
slices.go
smallest.go
smoketest.go
stringable.go
stringer.go
stringerimp.go
struct.go
structinit.go
subdict.go
sum.go
tparam1.go
typelist.go
typeswitch1.go
typeswitch1.out
typeswitch2.go
typeswitch2.out
typeswitch3.go
typeswitch3.out
typeswitch4.go
typeswitch4.out
typeswitch5.go
typeswitch5.out
typeswitch6.go
typeswitch6.out
typeswitch7.go
typeswitch7.out
valimp.go
value.go