1
2
3
4
5 package test
6
7 import (
8 "internal/testenv"
9 "os"
10 "path/filepath"
11 "testing"
12 )
13
14
15
16
17
18
19
20
21
22
23
24 func TestBinarySearchFuncInlinable(t *testing.T) {
25 testenv.MustHaveGoBuild(t)
26 t.Parallel()
27
28 dir := t.TempDir()
29 src := filepath.Join(dir, "x.go")
30 const prog = `package x
31
32 import "slices"
33
34 var _ = slices.BinarySearchFunc[[]string, string, string]
35 `
36 if err := os.WriteFile(src, []byte(prog), 0o644); err != nil {
37 t.Fatal(err)
38 }
39
40 cmd := testenv.Command(t, testenv.GoToolPath(t), "build", "-gcflags=-m", src)
41 cmd.Dir = dir
42 out, err := cmd.CombinedOutput()
43 if err != nil {
44 t.Fatalf("%v: %v\n%s", cmd, err, out)
45 }
46
47 inlCands := collectInlCands(string(out))
48 want := "slices.BinarySearchFunc[go.shape.[]string,go.shape.string,go.shape.string]"
49 if _, ok := inlCands[want]; !ok {
50 t.Errorf("BinarySearchFunc is no longer inlinable: %q not found in compiler output:\n%s", want, out)
51 }
52 }
53
View as plain text