GoPLS Viewer

Home|gopls/go/ssa/builder_go120_test.go
1// Copyright 2021 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build go1.20
6// +build go1.20
7
8package ssa_test
9
10import (
11    "go/ast"
12    "go/parser"
13    "go/token"
14    "go/types"
15    "testing"
16
17    "golang.org/x/tools/go/ssa"
18    "golang.org/x/tools/go/ssa/ssautil"
19)
20
21func TestBuildPackageGo120(t *testing.T) {
22    tests := []struct {
23        name     string
24        src      string
25        importer types.Importer
26    }{
27        {"slice to array""package p; var s []byte; var _ = ([4]byte)(s)"nil},
28        {"slice to zero length array""package p; var s []byte; var _ = ([0]byte)(s)"nil},
29        {"slice to zero length array type parameter""package p; var s []byte; func f[T ~[0]byte]() { tmp := (T)(s); var z T; _ = tmp == z}"nil},
30        {"slice to non-zero length array type parameter""package p; var s []byte; func h[T ~[1]byte | [4]byte]() { tmp := T(s); var z T; _ = tmp == z}"nil},
31        {"slice to maybe-zero length array type parameter""package p; var s []byte; func g[T ~[0]byte | [4]byte]() { tmp := T(s); var z T; _ = tmp == z}"nil},
32    }
33
34    for _tc := range tests {
35        tc := tc
36        t.Run(tc.name, func(t *testing.T) {
37            t.Parallel()
38            fset := token.NewFileSet()
39            ferr := parser.ParseFile(fset"p.go"tc.srcparser.ParseComments)
40            if err != nil {
41                t.Error(err)
42            }
43            files := []*ast.File{f}
44
45            pkg := types.NewPackage("p""")
46            conf := &types.Config{Importertc.importer}
47            if __err := ssautil.BuildPackage(conffsetpkgfilesssa.SanityCheckFunctions); err != nil {
48                t.Errorf("unexpected error: %v"err)
49            }
50        })
51    }
52}
53
MembersX
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.BlockStmt.pkg
TestBuildPackageGo120
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.tc
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.BlockStmt.files
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.BlockStmt.fset
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.BlockStmt.f
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.BlockStmt.err
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.BlockStmt.conf
TestBuildPackageGo120.RangeStmt_1106.BlockStmt.BlockStmt._
TestBuildPackageGo120.t
TestBuildPackageGo120.tests
TestBuildPackageGo120.RangeStmt_1106.tc
Members
X