internal/typeparams: hide go1.18 API usage behind a build constraint

Temporarily hide usage of the new go/types API, so that we can safely
tag x/tools@v0.1.7 without risk of further breakage when these APIs
change.

Updates golang/go#48632

Change-Id: Idba02d09644622b3d973a684a76514c86eefa17f
Reviewed-on: https://go-review.googlesource.com/c/tools/+/352854
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
Robert Findley 2021-09-28 18:05:55 -04:00
parent 7898fe60e6
commit 0df0ca0f43
10 changed files with 29 additions and 18 deletions

View File

@ -22,6 +22,7 @@ import (
"time"
"golang.org/x/tools/internal/testenv"
"golang.org/x/tools/internal/typeparams"
)
func TestMain(m *testing.M) {
@ -106,6 +107,12 @@ func testDir(t *testing.T, dir string, endTime time.Time) (nimports int) {
for _, ext := range pkgExts {
if strings.HasSuffix(f.Name(), ext) {
name := f.Name()[0 : len(f.Name())-len(ext)] // remove extension
if testenv.UsesGenerics(name) && !typeparams.Enabled {
// golang/go#48632: Skip generic packages when type parameters are
// not enabled, as a temporary measure to allow avoiding the new
// go/types API on Go 1.18.
continue
}
if testPath(t, filepath.Join(dir, name), dir) != nil {
nimports++
}

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build go1.18
// +build go1.18
//go:build typeparams && go1.18
// +build typeparams,go1.18
package gcimporter_test

View File

@ -32,6 +32,7 @@ import (
"golang.org/x/tools/go/internal/gcimporter"
"golang.org/x/tools/go/loader"
"golang.org/x/tools/internal/testenv"
"golang.org/x/tools/internal/typeparams"
)
func readExportFile(filename string) ([]byte, error) {
@ -96,9 +97,12 @@ func TestIExportData_stdlib(t *testing.T) {
// TODO(#48595): fix this test with GOEXPERIMENT=unified.
isUnified := isUnifiedBuilder()
for _, path := range buildutil.AllPackages(conf.Build) {
if !(isUnified && testenv.UsesGenerics(path)) {
conf.Import(path)
if testenv.UsesGenerics(path) && (isUnified || !typeparams.Enabled) {
// golang/go#48632: Skip generic packages if we can't handle type
// parameters.
continue
}
conf.Import(path)
}
// Create a package containing type and value errors to ensure

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build !go1.18
// +build !go1.18
//go:build !typeparams || !go1.18
// +build !typeparams !go1.18
package gcimporter

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build go1.18
// +build go1.18
//go:build typeparams && go1.18
// +build typeparams,go1.18
package gcimporter

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build !go1.18
// +build !go1.18
//go:build !typeparams || !go1.18
// +build !typeparams !go1.18
package typeparams

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build go1.18
// +build go1.18
//go:build typeparams && go1.18
// +build typeparams,go1.18
package typeparams

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build !go1.18
// +build !go1.18
//go:build !typeparams || !go1.18
// +build !typeparams !go1.18
package typeparams

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build go1.18
// +build go1.18
//go:build typeparams && go1.18
// +build typeparams,go1.18
package typeparams

View File

@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build go1.18
// +build go1.18
//go:build typeparams && go1.18
// +build typeparams,go1.18
package typeparams_test