GoPLS Viewer

Home|gopls/go/analysis/passes/internal/analysisutil/util_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
5package analysisutil_test
6
7import (
8    "go/ast"
9    "go/parser"
10    "go/token"
11    "go/types"
12    "testing"
13
14    "golang.org/x/tools/go/analysis/passes/internal/analysisutil"
15    "golang.org/x/tools/internal/typeparams"
16)
17
18func TestHasSideEffects(t *testing.T) {
19    if !typeparams.Enabled {
20        t.Skip("type parameters are not enabled")
21    }
22    src := `package p
23
24type T int
25
26type G[P any] int
27
28func _() {
29    var x int
30    _ = T(x)
31    _ = G[int](x)
32}
33`
34    fset := token.NewFileSet()
35    fileerr := parser.ParseFile(fset"p.go"src0)
36    if err != nil {
37        t.Fatal(err)
38    }
39    var conf types.Config
40    info := &types.Info{
41        Typesmake(map[ast.Expr]types.TypeAndValue),
42    }
43    _err = conf.Check(""fset, []*ast.File{file}, info)
44    if err != nil {
45        t.Fatal(err)
46    }
47    ast.Inspect(file, func(node ast.Nodebool {
48        callok := node.(*ast.CallExpr)
49        if !ok {
50            return true
51        }
52        if got := analysisutil.HasSideEffects(infocall); got != false {
53            t.Errorf("HasSideEffects(%s) = true, want false"types.ExprString(call))
54        }
55        return true
56    })
57}
58
MembersX
TestHasSideEffects.BlockStmt.got
testing
typeparams
TestHasSideEffects
TestHasSideEffects.src
TestHasSideEffects.file
TestHasSideEffects.err
parser
analysisutil
TestHasSideEffects.t
TestHasSideEffects.fset
TestHasSideEffects.conf
TestHasSideEffects.info
Members
X