import (
"cmd/compile/internal/syntax"
"fmt"
- "strings"
"testing"
. "cmd/compile/internal/types2"
}
}
-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
"fmt"
"os"
"testing"
-
- "cmd/compile/internal/syntax"
- . "cmd/compile/internal/types2"
)
var (
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 {
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{
"fmt"
"go/ast"
"go/importer"
- "go/parser"
"testing"
. "go/types"
}
}
-// 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
"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,
+// 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.
"bytes"
"flag"
"fmt"
- "go/ast"
- "go/importer"
- "go/parser"
- "go/token"
"os"
"testing"
-
- . "go/types"
)
var (
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 {
bytes.Buffer
}
-func (g *gen) p(format string, args ...any) {
+func (g *gen) p(format string, args ...interface{}) {
fmt.Fprintf(&g.Buffer, format, args...)
}
"fmt"
"go/ast"
"go/importer"
- "go/parser"
"go/token"
"go/types"
"strings"
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{