From b4a084d3280331230cd6a8028cbb6e671b5af9cf Mon Sep 17 00:00:00 2001 From: Mark Freeman Date: Thu, 26 Mar 2026 13:08:31 -0400 Subject: cmd/compile/internal/noder: shapeSig must return shaped signatures Suppose a signature f[P any]() shaped to f[go.shape.int](). This function does not flag f[go.shape.int]() as having a shape because it does not mention a shaped type in its parameter or return fields. This doesn't seem right. Change-Id: I87c4e3b259328b7d27ff0a98d65ed400b4895a69 Reviewed-on: https://go-review.googlesource.com/c/go/+/759660 Auto-Submit: Mark Freeman LUCI-TryBot-Result: Go LUCI Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/noder/reader.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/cmd/compile/internal/noder') diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index 3ae1e2744f..fb5a099efe 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -4114,6 +4114,8 @@ const dictParamName = typecheck.LocalDictName // // The parameter types.Fields are all copied too, so their Nname // fields can be initialized for use by the shape function. +// +// All signatures returned by shapeSig are marked as shaped. func shapeSig(fn *ir.Func, dict *readerDict) *types.Type { sig := fn.Nname.Type() oldRecv := sig.Recv() @@ -4136,5 +4138,7 @@ func shapeSig(fn *ir.Func, dict *readerDict) *types.Type { results[i] = types.NewField(result.Pos, result.Sym, result.Type) } - return types.NewSignature(recv, params, results) + typ := types.NewSignature(recv, params, results) + typ.SetHasShape(true) + return typ } -- cgit v1.3-5-g45d5