mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
cmd/compile: enable more lenient type inference for untyped arguments
This enables the implementation for proposal #58671, which is a likely accept. By enabling it early we get a bit extra soak time for this feature. The change can be reverted trivially, if need be. For #58671. Change-Id: Id6c27515e45ff79f4f1d2fc1706f3f672ccdd1ab Reviewed-on: https://go-review.googlesource.com/c/go/+/495955 Run-TryBot: Robert Griesemer <gri@google.com> Reviewed-by: Robert Griesemer <gri@google.com> Auto-Submit: Robert Griesemer <gri@google.com> Reviewed-by: Robert Findley <rfindley@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
0b86a04db0
commit
956d31ecd5
@ -50,8 +50,9 @@ func checkFiles(m posMap, noders []*noder) (*types2.Package, *types2.Info) {
|
|||||||
}
|
}
|
||||||
base.ErrorfAt(m.makeXPos(terr.Pos), terr.Code, "%s", msg)
|
base.ErrorfAt(m.makeXPos(terr.Pos), terr.Code, "%s", msg)
|
||||||
},
|
},
|
||||||
Importer: &importer,
|
Importer: &importer,
|
||||||
Sizes: &gcSizes{},
|
Sizes: &gcSizes{},
|
||||||
|
InferMaxDefaultType: true, // #58671
|
||||||
}
|
}
|
||||||
info := &types2.Info{
|
info := &types2.Info{
|
||||||
StoreTypesInSyntax: true,
|
StoreTypesInSyntax: true,
|
||||||
|
@ -139,8 +139,9 @@ func testTestDir(t *testing.T, path string, ignore ...string) {
|
|||||||
file, err := syntax.ParseFile(filename, nil, nil, 0)
|
file, err := syntax.ParseFile(filename, nil, nil, 0)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
conf := Config{
|
conf := Config{
|
||||||
GoVersion: goVersion,
|
GoVersion: goVersion,
|
||||||
Importer: stdLibImporter,
|
Importer: stdLibImporter,
|
||||||
|
InferMaxDefaultType: true,
|
||||||
}
|
}
|
||||||
_, err = conf.Check(filename, []*syntax.File{file}, nil)
|
_, err = conf.Check(filename, []*syntax.File{file}, nil)
|
||||||
}
|
}
|
||||||
|
@ -143,6 +143,7 @@ func testTestDir(t *testing.T, path string, ignore ...string) {
|
|||||||
GoVersion: goVersion,
|
GoVersion: goVersion,
|
||||||
Importer: stdLibImporter,
|
Importer: stdLibImporter,
|
||||||
}
|
}
|
||||||
|
*boolFieldAddr(&conf, "_InferMaxDefaultType") = true
|
||||||
_, err = conf.Check(filename, fset, []*ast.File{file}, nil)
|
_, err = conf.Check(filename, fset, []*ast.File{file}, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
19
test/fixedbugs/issue58671.go
Normal file
19
test/fixedbugs/issue58671.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// run
|
||||||
|
|
||||||
|
// Copyright 2023 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
func g[P any](...P) P { var zero P; return zero }
|
||||||
|
|
||||||
|
var (
|
||||||
|
_ int = g(1, 2)
|
||||||
|
_ rune = g(1, 'a')
|
||||||
|
_ float64 = g(1, 'a', 2.3)
|
||||||
|
_ float64 = g('a', 2.3)
|
||||||
|
_ complex128 = g(2.3, 'a', 1i)
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {}
|
Loading…
x
Reference in New Issue
Block a user