aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2023-01-12 11:14:32 -0800
committerGopher Robot <gobot@golang.org>2023-01-17 19:56:39 +0000
commit7da4675dadbdb079df486de44365e5685dfd99b7 (patch)
tree1c5f5fbdb51878c3f383f5f5a8772d9e740fa133
parent354c8fb4360ae46f0f978dab7f0b3037f9175e48 (diff)
downloadgo-7da4675dadbdb079df486de44365e5685dfd99b7.tar.xz
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 <gri@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com> Reviewed-by: Robert Griesemer <gri@google.com> Run-TryBot: Robert Griesemer <gri@google.com>
-rw-r--r--src/cmd/compile/internal/types2/builtins_test.go8
-rw-r--r--src/cmd/compile/internal/types2/hilbert_test.go17
-rw-r--r--src/cmd/compile/internal/types2/mono_test.go6
-rw-r--r--src/go/types/builtins_test.go5
-rw-r--r--src/go/types/generator.go1
-rw-r--r--src/go/types/hilbert_test.go25
-rw-r--r--src/go/types/mono_test.go8
7 files changed, 11 insertions, 59 deletions
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{