From: Robert Griesemer Date: Thu, 12 Jan 2023 19:14:32 +0000 (-0800) Subject: go/types, types2: use factored parse/typecheck functions, generate hilbert_test.go X-Git-Tag: go1.21rc1~1913 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7da4675dadbdb079df486de44365e5685dfd99b7;p=gostls13.git go/types, types2: use factored parse/typecheck functions, generate hilbert_test.go Change-Id: I4a325736d18a98bbcd02bfa3d32b1d1dd2048dc2 Reviewed-on: https://go-review.googlesource.com/c/go/+/461609 Auto-Submit: Robert Griesemer TryBot-Result: Gopher Robot Reviewed-by: Robert Findley Reviewed-by: Robert Griesemer Run-TryBot: Robert Griesemer --- diff --git a/src/cmd/compile/internal/types2/builtins_test.go b/src/cmd/compile/internal/types2/builtins_test.go index 12c139f492..0d4f57e277 100644 --- a/src/cmd/compile/internal/types2/builtins_test.go +++ b/src/cmd/compile/internal/types2/builtins_test.go @@ -7,7 +7,6 @@ package types2_test import ( "cmd/compile/internal/syntax" "fmt" - "strings" "testing" . "cmd/compile/internal/types2" @@ -172,14 +171,9 @@ func TestBuiltinSignatures(t *testing.T) { } } -func parseGenericSrc(path, src string) (*syntax.File, error) { - errh := func(error) {} // dummy error handler so that parsing continues in presence of errors - return syntax.Parse(syntax.NewFileBase(path), strings.NewReader(src), errh, nil, 0) -} - func testBuiltinSignature(t *testing.T, name, src0, want string) { src := fmt.Sprintf(`package p; import "unsafe"; type _ unsafe.Pointer /* use unsafe */; func _[P ~[]byte]() { %s }`, src0) - f, err := parseGenericSrc("", src) + f, err := parse("", src) if err != nil { t.Errorf("%s: %s", src0, err) return diff --git a/src/cmd/compile/internal/types2/hilbert_test.go b/src/cmd/compile/internal/types2/hilbert_test.go index 391a498268..0e9d4c3f5b 100644 --- a/src/cmd/compile/internal/types2/hilbert_test.go +++ b/src/cmd/compile/internal/types2/hilbert_test.go @@ -10,9 +10,6 @@ import ( "fmt" "os" "testing" - - "cmd/compile/internal/syntax" - . "cmd/compile/internal/types2" ) var ( @@ -28,19 +25,7 @@ func TestHilbert(t *testing.T) { return } - // parse source - f, err := syntax.Parse(syntax.NewFileBase("hilbert.go"), bytes.NewReader(src), nil, nil, 0) - if err != nil { - t.Fatal(err) - } - - // type-check file - DefPredeclaredTestFuncs() // define assert built-in - conf := Config{Importer: defaultImporter()} - _, err = conf.Check(f.PkgName.Value, []*syntax.File{f}, nil) - if err != nil { - t.Fatal(err) - } + mustTypecheck("hilbert.go", string(src), nil) } func program(n int, out string) []byte { diff --git a/src/cmd/compile/internal/types2/mono_test.go b/src/cmd/compile/internal/types2/mono_test.go index 890099207c..506762abae 100644 --- a/src/cmd/compile/internal/types2/mono_test.go +++ b/src/cmd/compile/internal/types2/mono_test.go @@ -15,11 +15,7 @@ import ( func checkMono(t *testing.T, body string) error { src := "package x; import `unsafe`; var _ unsafe.Pointer;\n" + body - file, err := syntax.Parse(syntax.NewFileBase("x.go"), strings.NewReader(src), nil, nil, 0) - if err != nil { - t.Fatal(err) - } - files := []*syntax.File{file} + files := []*syntax.File{mustParse("x.go", src)} var buf strings.Builder conf := types2.Config{ diff --git a/src/go/types/builtins_test.go b/src/go/types/builtins_test.go index fb71c4887b..662ececf74 100644 --- a/src/go/types/builtins_test.go +++ b/src/go/types/builtins_test.go @@ -8,7 +8,6 @@ import ( "fmt" "go/ast" "go/importer" - "go/parser" "testing" . "go/types" @@ -173,11 +172,9 @@ func TestBuiltinSignatures(t *testing.T) { } } -// parseGenericSrc in types2 is not necessary. We can just parse in testBuiltinSignature below. - func testBuiltinSignature(t *testing.T, name, src0, want string) { src := fmt.Sprintf(`package p; import "unsafe"; type _ unsafe.Pointer /* use unsafe */; func _[P ~[]byte]() { %s }`, src0) - f, err := parser.ParseFile(fset, "", src, 0) + f, err := parse(fset, "", src) if err != nil { t.Errorf("%s: %s", src0, err) return diff --git a/src/go/types/generator.go b/src/go/types/generator.go index 2c6ef66c4a..1d0863ed12 100644 --- a/src/go/types/generator.go +++ b/src/go/types/generator.go @@ -89,6 +89,7 @@ var filemap = map[string]action{ "context.go": nil, "context_test.go": nil, "gccgosizes.go": nil, + "hilbert_test.go": nil, "instantiate_test.go": func(f *ast.File) { renameImportPath(f, `"cmd/compile/internal/types2"`, `"go/types"`) }, "lookup.go": nil, "main_test.go": nil, diff --git a/src/go/types/hilbert_test.go b/src/go/types/hilbert_test.go index 7d0f58ea40..ed7b9866c9 100644 --- a/src/go/types/hilbert_test.go +++ b/src/go/types/hilbert_test.go @@ -1,3 +1,5 @@ +// Code generated by "go run generator.go"; DO NOT EDIT. + // Copyright 2013 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. @@ -8,14 +10,8 @@ import ( "bytes" "flag" "fmt" - "go/ast" - "go/importer" - "go/parser" - "go/token" "os" "testing" - - . "go/types" ) var ( @@ -31,20 +27,7 @@ func TestHilbert(t *testing.T) { return } - // parse source - fset := token.NewFileSet() - f, err := parser.ParseFile(fset, "hilbert.go", src, 0) - if err != nil { - t.Fatal(err) - } - - // type-check file - DefPredeclaredTestFuncs() // define assert built-in - conf := Config{Importer: importer.Default()} - _, err = conf.Check(f.Name.Name, fset, []*ast.File{f}, nil) - if err != nil { - t.Fatal(err) - } + mustTypecheck("hilbert.go", string(src), nil) } func program(n int, out string) []byte { @@ -84,7 +67,7 @@ type gen struct { bytes.Buffer } -func (g *gen) p(format string, args ...any) { +func (g *gen) p(format string, args ...interface{}) { fmt.Fprintf(&g.Buffer, format, args...) } diff --git a/src/go/types/mono_test.go b/src/go/types/mono_test.go index 02daa4fdc6..9dda2c28f3 100644 --- a/src/go/types/mono_test.go +++ b/src/go/types/mono_test.go @@ -9,7 +9,6 @@ import ( "fmt" "go/ast" "go/importer" - "go/parser" "go/token" "go/types" "strings" @@ -18,11 +17,8 @@ import ( func checkMono(t *testing.T, body string) error { fset := token.NewFileSet() - file, err := parser.ParseFile(fset, "x.go", "package x; import `unsafe`; var _ unsafe.Pointer;\n"+body, 0) - if err != nil { - t.Fatal(err) - } - files := []*ast.File{file} + src := "package x; import `unsafe`; var _ unsafe.Pointer;\n" + body + files := []*ast.File{mustParse(fset, "x.go", src)} var buf strings.Builder conf := types.Config{