diff --git a/cmd/stringer/endtoend_test.go b/cmd/stringer/endtoend_test.go
index d513c1b..e68b612 100644
--- a/cmd/stringer/endtoend_test.go
+++ b/cmd/stringer/endtoend_test.go
@@ -23,7 +23,6 @@
 	"testing"
 
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 // This file contains a test that compiles and runs each program in testdata
@@ -62,9 +61,6 @@
 	if err != nil {
 		t.Fatalf("Readdirnames: %s", err)
 	}
-	if typeparams.Enabled {
-		names = append(names, moreTests(t, "testdata/typeparams", "typeparams")...)
-	}
 	// Generate, compile, and run the test programs.
 	for _, name := range names {
 		if name == "typeparams" {
diff --git a/cmd/stringer/testdata/typeparams/conv2.go b/cmd/stringer/testdata/conv2.go
similarity index 100%
rename from cmd/stringer/testdata/typeparams/conv2.go
rename to cmd/stringer/testdata/conv2.go
diff --git a/cmd/stringer/testdata/typeparams/prime2.go b/cmd/stringer/testdata/prime2.go
similarity index 100%
rename from cmd/stringer/testdata/typeparams/prime2.go
rename to cmd/stringer/testdata/prime2.go
diff --git a/go/analysis/passes/assign/assign_test.go b/go/analysis/passes/assign/assign_test.go
index 146385f..5ca6128 100644
--- a/go/analysis/passes/assign/assign_test.go
+++ b/go/analysis/passes/assign/assign_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/assign"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, assign.Analyzer, tests...)
+	analysistest.RunWithSuggestedFixes(t, testdata, assign.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/atomic/atomic_test.go b/go/analysis/passes/atomic/atomic_test.go
index c17064c..755f5de 100644
--- a/go/analysis/passes/atomic/atomic_test.go
+++ b/go/analysis/passes/atomic/atomic_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/atomic"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, atomic.Analyzer, tests...)
+	analysistest.Run(t, testdata, atomic.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/bools/bools_test.go b/go/analysis/passes/bools/bools_test.go
index ea51437..0297dea 100644
--- a/go/analysis/passes/bools/bools_test.go
+++ b/go/analysis/passes/bools/bools_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/bools"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, bools.Analyzer, tests...)
+	analysistest.Run(t, testdata, bools.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/buildssa/buildssa_test.go b/go/analysis/passes/buildssa/buildssa_test.go
index c61a9f0..cc895bb 100644
--- a/go/analysis/passes/buildssa/buildssa_test.go
+++ b/go/analysis/passes/buildssa/buildssa_test.go
@@ -11,7 +11,6 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/buildssa"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
@@ -30,9 +29,6 @@
 }
 
 func TestGenericDecls(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("TestGenericDecls requires type parameters.")
-	}
 	testdata := analysistest.TestData()
 	result := analysistest.Run(t, testdata, buildssa.Analyzer, "b")[0].Result
 
@@ -48,9 +44,6 @@
 }
 
 func TestImporting(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("TestImporting depends on testdata/b/b/go which uses type parameters.")
-	}
 	testdata := analysistest.TestData()
 	result := analysistest.Run(t, testdata, buildssa.Analyzer, "c")[0].Result
 
diff --git a/go/analysis/passes/cgocall/cgocall_test.go b/go/analysis/passes/cgocall/cgocall_test.go
index 45ca1da..59d2649 100644
--- a/go/analysis/passes/cgocall/cgocall_test.go
+++ b/go/analysis/passes/cgocall/cgocall_test.go
@@ -9,15 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/cgocall"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a", "b", "c"}
-	if typeparams.Enabled {
-		// and testdata/src/typeparams/typeparams.go when possible
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, cgocall.Analyzer, tests...)
+	analysistest.Run(t, testdata, cgocall.Analyzer, "a", "b", "c", "typeparams")
 }
diff --git a/go/analysis/passes/composite/composite_test.go b/go/analysis/passes/composite/composite_test.go
index 7afaaa7..5764cf5 100644
--- a/go/analysis/passes/composite/composite_test.go
+++ b/go/analysis/passes/composite/composite_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/composite"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{"a"}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, composite.Analyzer, pkgs...)
+	analysistest.RunWithSuggestedFixes(t, testdata, composite.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/copylock/copylock_test.go b/go/analysis/passes/copylock/copylock_test.go
index 869955b..5726806 100644
--- a/go/analysis/passes/copylock/copylock_test.go
+++ b/go/analysis/passes/copylock/copylock_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/copylock"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{"a"}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.Run(t, testdata, copylock.Analyzer, pkgs...)
+	analysistest.Run(t, testdata, copylock.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/ctrlflow/ctrlflow_test.go b/go/analysis/passes/ctrlflow/ctrlflow_test.go
index 1503c33..5afd01c 100644
--- a/go/analysis/passes/ctrlflow/ctrlflow_test.go
+++ b/go/analysis/passes/ctrlflow/ctrlflow_test.go
@@ -10,19 +10,11 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/ctrlflow"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-
-	// load testdata/src/a/a.go
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		// and testdata/src/typeparams/typeparams.go when possible
-		tests = append(tests, "typeparams")
-	}
-	results := analysistest.Run(t, testdata, ctrlflow.Analyzer, tests...)
+	results := analysistest.Run(t, testdata, ctrlflow.Analyzer, "a", "typeparams")
 
 	// Perform a minimal smoke test on
 	// the result (CFG) computed by ctrlflow.
diff --git a/go/analysis/passes/deepequalerrors/deepequalerrors_test.go b/go/analysis/passes/deepequalerrors/deepequalerrors_test.go
index 0094173..0f21cd8 100644
--- a/go/analysis/passes/deepequalerrors/deepequalerrors_test.go
+++ b/go/analysis/passes/deepequalerrors/deepequalerrors_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/deepequalerrors"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, deepequalerrors.Analyzer, tests...)
+	analysistest.Run(t, testdata, deepequalerrors.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/errorsas/errorsas_test.go b/go/analysis/passes/errorsas/errorsas_test.go
index 7908e89..6689d81 100644
--- a/go/analysis/passes/errorsas/errorsas_test.go
+++ b/go/analysis/passes/errorsas/errorsas_test.go
@@ -12,14 +12,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/errorsas"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, errorsas.Analyzer, tests...)
+	analysistest.Run(t, testdata, errorsas.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/httpresponse/httpresponse_test.go b/go/analysis/passes/httpresponse/httpresponse_test.go
index 34dc78c..e5fe225 100644
--- a/go/analysis/passes/httpresponse/httpresponse_test.go
+++ b/go/analysis/passes/httpresponse/httpresponse_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/httpresponse"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, httpresponse.Analyzer, tests...)
+	analysistest.Run(t, testdata, httpresponse.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/ifaceassert/ifaceassert_test.go b/go/analysis/passes/ifaceassert/ifaceassert_test.go
index b07c276..266e2ed 100644
--- a/go/analysis/passes/ifaceassert/ifaceassert_test.go
+++ b/go/analysis/passes/ifaceassert/ifaceassert_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/ifaceassert"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{"a"}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.Run(t, testdata, ifaceassert.Analyzer, pkgs...)
+	analysistest.Run(t, testdata, ifaceassert.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/internal/analysisutil/util_test.go b/go/analysis/passes/internal/analysisutil/util_test.go
index 2d7e94e..9f49252 100644
--- a/go/analysis/passes/internal/analysisutil/util_test.go
+++ b/go/analysis/passes/internal/analysisutil/util_test.go
@@ -12,13 +12,9 @@
 	"testing"
 
 	"golang.org/x/tools/go/analysis/passes/internal/analysisutil"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func TestHasSideEffects(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type parameters are not enabled")
-	}
 	src := `package p
 
 type T int
diff --git a/go/analysis/passes/loopclosure/loopclosure_test.go b/go/analysis/passes/loopclosure/loopclosure_test.go
index 896247c..386f532 100644
--- a/go/analysis/passes/loopclosure/loopclosure_test.go
+++ b/go/analysis/passes/loopclosure/loopclosure_test.go
@@ -13,17 +13,13 @@
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/loopclosure"
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/typeparams"
 	"golang.org/x/tools/txtar"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a", "golang.org/...", "subtests"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, loopclosure.Analyzer, tests...)
+	analysistest.Run(t, testdata, loopclosure.Analyzer,
+		"a", "golang.org/...", "subtests", "typeparams")
 }
 
 func TestVersions22(t *testing.T) {
diff --git a/go/analysis/passes/lostcancel/lostcancel_test.go b/go/analysis/passes/lostcancel/lostcancel_test.go
index bda0293..89e9d25 100644
--- a/go/analysis/passes/lostcancel/lostcancel_test.go
+++ b/go/analysis/passes/lostcancel/lostcancel_test.go
@@ -5,17 +5,13 @@
 package lostcancel_test
 
 import (
+	"testing"
+
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/lostcancel"
-	"golang.org/x/tools/internal/typeparams"
-	"testing"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a", "b"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, lostcancel.Analyzer, tests...)
+	analysistest.Run(t, testdata, lostcancel.Analyzer, "a", "b", "typeparams")
 }
diff --git a/go/analysis/passes/nilfunc/nilfunc_test.go b/go/analysis/passes/nilfunc/nilfunc_test.go
index e147a44..e6e7e5c 100644
--- a/go/analysis/passes/nilfunc/nilfunc_test.go
+++ b/go/analysis/passes/nilfunc/nilfunc_test.go
@@ -5,17 +5,13 @@
 package nilfunc_test
 
 import (
+	"testing"
+
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/nilfunc"
-	"golang.org/x/tools/internal/typeparams"
-	"testing"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, nilfunc.Analyzer, tests...)
+	analysistest.Run(t, testdata, nilfunc.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/nilness/nilness_test.go b/go/analysis/passes/nilness/nilness_test.go
index 99c4dfb..d07a930 100644
--- a/go/analysis/passes/nilness/nilness_test.go
+++ b/go/analysis/passes/nilness/nilness_test.go
@@ -9,7 +9,6 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/nilness"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
@@ -18,17 +17,11 @@
 }
 
 func TestInstantiated(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("TestInstantiated requires type parameters")
-	}
 	testdata := analysistest.TestData()
 	analysistest.Run(t, testdata, nilness.Analyzer, "c")
 }
 
 func TestTypeSet(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("TestTypeSet requires type parameters")
-	}
 	testdata := analysistest.TestData()
 	analysistest.Run(t, testdata, nilness.Analyzer, "d")
 }
diff --git a/go/analysis/passes/printf/printf_test.go b/go/analysis/passes/printf/printf_test.go
index ed857fe..e206a3f 100644
--- a/go/analysis/passes/printf/printf_test.go
+++ b/go/analysis/passes/printf/printf_test.go
@@ -10,7 +10,6 @@
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/printf"
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
@@ -19,9 +18,5 @@
 	testdata := analysistest.TestData()
 	printf.Analyzer.Flags.Set("funcs", "Warn,Warnf")
 
-	tests := []string{"a", "b", "nofmt"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, printf.Analyzer, tests...)
+	analysistest.Run(t, testdata, printf.Analyzer, "a", "b", "nofmt", "typeparams")
 }
diff --git a/go/analysis/passes/shift/shift_test.go b/go/analysis/passes/shift/shift_test.go
index e60943e..cdce0cf 100644
--- a/go/analysis/passes/shift/shift_test.go
+++ b/go/analysis/passes/shift/shift_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/shift"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{"a"}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.Run(t, testdata, shift.Analyzer, pkgs...)
+	analysistest.Run(t, testdata, shift.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/stdmethods/stdmethods_test.go b/go/analysis/passes/stdmethods/stdmethods_test.go
index 9bfa032..9df50fe 100644
--- a/go/analysis/passes/stdmethods/stdmethods_test.go
+++ b/go/analysis/passes/stdmethods/stdmethods_test.go
@@ -9,16 +9,11 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/stdmethods"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{"a"}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.Run(t, testdata, stdmethods.Analyzer, pkgs...)
+	analysistest.Run(t, testdata, stdmethods.Analyzer, "a", "typeparams")
 }
 
 func TestAnalyzeEncodingXML(t *testing.T) {
diff --git a/go/analysis/passes/stringintconv/string_test.go b/go/analysis/passes/stringintconv/string_test.go
index 13f2133..0b1f99b 100644
--- a/go/analysis/passes/stringintconv/string_test.go
+++ b/go/analysis/passes/stringintconv/string_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/stringintconv"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{"a"}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, stringintconv.Analyzer, pkgs...)
+	analysistest.RunWithSuggestedFixes(t, testdata, stringintconv.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/tests/tests_test.go b/go/analysis/passes/tests/tests_test.go
index 740adc5..7454234 100644
--- a/go/analysis/passes/tests/tests_test.go
+++ b/go/analysis/passes/tests/tests_test.go
@@ -9,18 +9,14 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/tests"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{
+	analysistest.Run(t, testdata, tests.Analyzer,
 		"a",        // loads "a", "a [a.test]", and "a.test"
 		"b_x_test", // loads "b" and "b_x_test"
 		"divergent",
-	}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.Run(t, testdata, tests.Analyzer, pkgs...)
+		"typeparams",
+	)
 }
diff --git a/go/analysis/passes/unmarshal/unmarshal_test.go b/go/analysis/passes/unmarshal/unmarshal_test.go
index e6171f2..1659d8d 100644
--- a/go/analysis/passes/unmarshal/unmarshal_test.go
+++ b/go/analysis/passes/unmarshal/unmarshal_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/unmarshal"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, unmarshal.Analyzer, tests...)
+	analysistest.Run(t, testdata, unmarshal.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/unsafeptr/unsafeptr_test.go b/go/analysis/passes/unsafeptr/unsafeptr_test.go
index 424de1f..b926f04 100644
--- a/go/analysis/passes/unsafeptr/unsafeptr_test.go
+++ b/go/analysis/passes/unsafeptr/unsafeptr_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/unsafeptr"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	pkgs := []string{"a"}
-	if typeparams.Enabled {
-		pkgs = append(pkgs, "typeparams")
-	}
-	analysistest.Run(t, testdata, unsafeptr.Analyzer, pkgs...)
+	analysistest.Run(t, testdata, unsafeptr.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/unusedresult/unusedresult_test.go b/go/analysis/passes/unusedresult/unusedresult_test.go
index a2b079a..08dcf61 100644
--- a/go/analysis/passes/unusedresult/unusedresult_test.go
+++ b/go/analysis/passes/unusedresult/unusedresult_test.go
@@ -9,16 +9,11 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/unusedresult"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
 	funcs := "typeparams/userdefs.MustUse,errors.New,fmt.Errorf,fmt.Sprintf,fmt.Sprint"
 	unusedresult.Analyzer.Flags.Set("funcs", funcs)
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, unusedresult.Analyzer, tests...)
+	analysistest.Run(t, testdata, unusedresult.Analyzer, "a", "typeparams")
 }
diff --git a/go/analysis/passes/usesgenerics/usesgenerics_test.go b/go/analysis/passes/usesgenerics/usesgenerics_test.go
index 3dcff24..d5fb73e 100644
--- a/go/analysis/passes/usesgenerics/usesgenerics_test.go
+++ b/go/analysis/passes/usesgenerics/usesgenerics_test.go
@@ -9,13 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/go/analysis/passes/usesgenerics"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type parameters are not enabled at this Go version")
-	}
 	testdata := analysistest.TestData()
 	analysistest.Run(t, testdata, usesgenerics.Analyzer, "a", "b", "c", "d")
 }
diff --git a/go/ast/astutil/enclosing_test.go b/go/ast/astutil/enclosing_test.go
index de96d44..1f9d06c 100644
--- a/go/ast/astutil/enclosing_test.go
+++ b/go/ast/astutil/enclosing_test.go
@@ -19,7 +19,6 @@
 	"testing"
 
 	"golang.org/x/tools/go/ast/astutil"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 // pathToString returns a string containing the concrete types of the
@@ -59,10 +58,7 @@
 }
 
 // Common input for following tests.
-var input = makeInput()
-
-func makeInput() string {
-	src := `
+const input = `
 // Hello.
 package main
 import "fmt"
@@ -71,10 +67,7 @@
 	z := (x + y) // add them
         f() // NB: ExprStmt and its CallExpr have same Pos/End
 }
-`
 
-	if typeparams.Enabled {
-		src += `
 func g[A any, P interface{ctype1| ~ctype2}](a1 A, p1 P) {}
 
 type PT[T constraint] struct{ t T }
@@ -83,9 +76,6 @@
 
 var h = g[ targ2, targ3]
 `
-	}
-	return src
-}
 
 func TestPathEnclosingInterval_Exact(t *testing.T) {
 	type testCase struct {
@@ -129,31 +119,27 @@
 			"func f() {}"},
 		{" f",
 			"f"},
-	}
-	if typeparams.Enabled {
-		tests = append(tests, []testCase{
-			dup("[A any, P interface{ctype1| ~ctype2}]"),
-			{"[", "[A any, P interface{ctype1| ~ctype2}]"},
-			dup("A"),
-			{" any", "any"},
-			dup("ctype1"),
-			{"|", "ctype1| ~ctype2"},
-			dup("ctype2"),
-			{"~", "~ctype2"},
-			dup("~ctype2"),
-			{" ~ctype2", "~ctype2"},
-			{"]", "[A any, P interface{ctype1| ~ctype2}]"},
-			dup("a1"),
-			dup("a1 A"),
-			dup("(a1 A, p1 P)"),
-			dup("type PT[T constraint] struct{ t T }"),
-			dup("PT"),
-			dup("[T constraint]"),
-			dup("constraint"),
-			dup("targ1"),
-			{" targ2", "targ2"},
-			dup("g[ targ2, targ3]"),
-		}...)
+		dup("[A any, P interface{ctype1| ~ctype2}]"),
+		{"[", "[A any, P interface{ctype1| ~ctype2}]"},
+		dup("A"),
+		{" any", "any"},
+		dup("ctype1"),
+		{"|", "ctype1| ~ctype2"},
+		dup("ctype2"),
+		{"~", "~ctype2"},
+		dup("~ctype2"),
+		{" ~ctype2", "~ctype2"},
+		{"]", "[A any, P interface{ctype1| ~ctype2}]"},
+		dup("a1"),
+		dup("a1 A"),
+		dup("(a1 A, p1 P)"),
+		dup("type PT[T constraint] struct{ t T }"),
+		dup("PT"),
+		dup("[T constraint]"),
+		dup("constraint"),
+		dup("targ1"),
+		{" targ2", "targ2"},
+		dup("g[ targ2, targ3]"),
 	}
 	for _, test := range tests {
 		f, start, end := findInterval(t, new(token.FileSet), input, test.substr)
@@ -218,18 +204,14 @@
 			"[Ident File],true"},
 		{"f() // NB",
 			"[CallExpr ExprStmt BlockStmt FuncDecl File],true"},
-	}
-	if typeparams.Enabled {
-		tests = append(tests, []testCase{
-			{" any", "[Ident Field FieldList FuncDecl File],true"},
-			{"|", "[BinaryExpr Field FieldList InterfaceType Field FieldList FuncDecl File],true"},
-			{"ctype2",
-				"[Ident UnaryExpr BinaryExpr Field FieldList InterfaceType Field FieldList FuncDecl File],true"},
-			{"a1", "[Ident Field FieldList FuncDecl File],true"},
-			{"PT[T constraint]", "[TypeSpec GenDecl File],false"},
-			{"[T constraint]", "[FieldList TypeSpec GenDecl File],true"},
-			{"targ2", "[Ident IndexListExpr ValueSpec GenDecl File],true"},
-		}...)
+		{" any", "[Ident Field FieldList FuncDecl File],true"},
+		{"|", "[BinaryExpr Field FieldList InterfaceType Field FieldList FuncDecl File],true"},
+		{"ctype2",
+			"[Ident UnaryExpr BinaryExpr Field FieldList InterfaceType Field FieldList FuncDecl File],true"},
+		{"a1", "[Ident Field FieldList FuncDecl File],true"},
+		{"PT[T constraint]", "[TypeSpec GenDecl File],false"},
+		{"[T constraint]", "[FieldList TypeSpec GenDecl File],true"},
+		{"targ2", "[Ident IndexListExpr ValueSpec GenDecl File],true"},
 	}
 	for _, test := range tests {
 		f, start, end := findInterval(t, new(token.FileSet), input, test.substr)
diff --git a/go/ast/astutil/rewrite_test.go b/go/ast/astutil/rewrite_test.go
index 4ef6fe9..57136a0 100644
--- a/go/ast/astutil/rewrite_test.go
+++ b/go/ast/astutil/rewrite_test.go
@@ -13,7 +13,6 @@
 	"testing"
 
 	"golang.org/x/tools/go/ast/astutil"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 type rewriteTest struct {
@@ -191,13 +190,9 @@
 			return true
 		},
 	},
-}
-
-func init() {
-	if typeparams.Enabled {
-		rewriteTests = append(rewriteTests, rewriteTest{
-			name: "replace",
-			orig: `package p
+	{
+		name: "replace",
+		orig: `package p
 
 type T[P1, P2 any] int
 
@@ -205,9 +200,9 @@
 
 func F[Q1 any](q Q1) {}
 `,
-			// TODO: note how the rewrite adds a trailing comma in "func F".
-			// Is that a bug in the test, or in astutil.Apply?
-			want: `package p
+		// TODO: note how the rewrite adds a trailing comma in "func F".
+		// Is that a bug in the test, or in astutil.Apply?
+		want: `package p
 
 type S[R1, P2 any] int32
 
@@ -215,23 +210,22 @@
 
 func F[X1 any](q X1,) {}
 `,
-			post: func(c *astutil.Cursor) bool {
-				if ident, ok := c.Node().(*ast.Ident); ok {
-					switch ident.Name {
-					case "int":
-						c.Replace(ast.NewIdent("int32"))
-					case "T":
-						c.Replace(ast.NewIdent("S"))
-					case "P1":
-						c.Replace(ast.NewIdent("R1"))
-					case "Q1":
-						c.Replace(ast.NewIdent("X1"))
-					}
+		post: func(c *astutil.Cursor) bool {
+			if ident, ok := c.Node().(*ast.Ident); ok {
+				switch ident.Name {
+				case "int":
+					c.Replace(ast.NewIdent("int32"))
+				case "T":
+					c.Replace(ast.NewIdent("S"))
+				case "P1":
+					c.Replace(ast.NewIdent("R1"))
+				case "Q1":
+					c.Replace(ast.NewIdent("X1"))
 				}
-				return true
-			},
-		})
-	}
+			}
+			return true
+		},
+	},
 }
 
 func valspec(name, typ string) *ast.ValueSpec {
diff --git a/go/ast/inspector/inspector_test.go b/go/ast/inspector/inspector_test.go
index e88d584..4b26ff6 100644
--- a/go/ast/inspector/inspector_test.go
+++ b/go/ast/inspector/inspector_test.go
@@ -72,10 +72,6 @@
 }
 
 func TestInspectGenericNodes(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type parameters are not supported at this Go version")
-	}
-
 	// src is using the 16 identifiers i0, i1, ... i15 so
 	// we can easily verify that we've found all of them.
 	const src = `package a
diff --git a/go/callgraph/cha/cha_test.go b/go/callgraph/cha/cha_test.go
index 0737a98..f99357b 100644
--- a/go/callgraph/cha/cha_test.go
+++ b/go/callgraph/cha/cha_test.go
@@ -26,7 +26,6 @@
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/ssautil"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 var inputs = []string{
@@ -74,10 +73,6 @@
 
 // TestCHAGenerics is TestCHA tailored for testing generics,
 func TestCHAGenerics(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("TestCHAGenerics requires type parameters")
-	}
-
 	filename := "testdata/generics.go"
 	prog, f, mainPkg, err := loadProgInfo(filename, ssa.InstantiateGenerics)
 	if err != nil {
diff --git a/go/callgraph/rta/rta_test.go b/go/callgraph/rta/rta_test.go
index d96483b..a855dd6 100644
--- a/go/callgraph/rta/rta_test.go
+++ b/go/callgraph/rta/rta_test.go
@@ -23,7 +23,6 @@
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/ssautil"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 // TestRTA runs RTA on each testdata/*.go file and compares the
@@ -38,10 +37,6 @@
 	}
 	for _, filename := range filenames {
 		t.Run(filename, func(t *testing.T) {
-			if !typeparams.Enabled && strings.HasSuffix(filename, "generics.go") {
-				t.Skip("TestRTAGenerics requires type parameters")
-			}
-
 			// Load main program and build SSA.
 			// TODO(adonovan): use go/packages instead.
 			conf := loader.Config{ParserMode: parser.ParseComments}
diff --git a/go/callgraph/static/static_test.go b/go/callgraph/static/static_test.go
index 0a108d3..4b61dbf 100644
--- a/go/callgraph/static/static_test.go
+++ b/go/callgraph/static/static_test.go
@@ -16,7 +16,6 @@
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/ssautil"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 const input = `package P
@@ -99,12 +98,6 @@
 			"instantiated[P.B] -> (B).F",
 		}, true},
 	} {
-		if e.typeparams && !typeparams.Enabled {
-			// Skip tests with type parameters when the build
-			// environment is not supporting any.
-			continue
-		}
-
 		conf := loader.Config{ParserMode: parser.ParseComments}
 		f, err := conf.ParseFile("P.go", e.input)
 		if err != nil {
diff --git a/go/callgraph/vta/vta_test.go b/go/callgraph/vta/vta_test.go
index 69f2181..2c6538c 100644
--- a/go/callgraph/vta/vta_test.go
+++ b/go/callgraph/vta/vta_test.go
@@ -13,7 +13,6 @@
 	"golang.org/x/tools/go/callgraph/cha"
 	"golang.org/x/tools/go/ssa"
 	"golang.org/x/tools/go/ssa/ssautil"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func TestVTACallGraph(t *testing.T) {
@@ -119,10 +118,6 @@
 }
 
 func TestVTACallGraphGenerics(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("TestVTACallGraphGenerics requires type parameters")
-	}
-
 	// TODO(zpavlinovic): add more tests
 	files := []string{
 		"testdata/src/arrays_generics.go",
diff --git a/go/ssa/interp/interp_test.go b/go/ssa/interp/interp_test.go
index d217ded..6f8e21a 100644
--- a/go/ssa/interp/interp_test.go
+++ b/go/ssa/interp/interp_test.go
@@ -38,7 +38,6 @@
 	"golang.org/x/tools/go/ssa/interp"
 	"golang.org/x/tools/go/ssa/ssautil"
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 // Each line contains a space-separated list of $GOROOT/test/
@@ -135,19 +134,15 @@
 	"static.go",
 	"width32.go",
 	"rangevarlifetime_old.go",
-
 	"fixedbugs/issue52342.go",
 	"fixedbugs/issue55115.go",
+	"fixedbugs/issue52835.go",
+	"fixedbugs/issue55086.go",
+	"typeassert.go",
+	"zeros.go",
 }
 
 func init() {
-	if typeparams.Enabled {
-		testdataTests = append(testdataTests, "fixedbugs/issue52835.go")
-		testdataTests = append(testdataTests, "fixedbugs/issue55086.go")
-		testdataTests = append(testdataTests, "typeassert.go")
-		testdataTests = append(testdataTests, "zeros.go")
-	}
-
 	// GOROOT/test used to assume that GOOS and GOARCH were explicitly set in the
 	// environment, so do that here for TestGorootTest.
 	os.Setenv("GOOS", runtime.GOOS)
@@ -315,9 +310,6 @@
 // in $GOROOT/test/typeparam/*.go.
 
 func TestTypeparamTest(t *testing.T) {
-	if !typeparams.Enabled {
-		return
-	}
 	goroot := makeGoroot(t)
 
 	// Skip known failures for the given reason.
diff --git a/go/types/typeutil/callee_test.go b/go/types/typeutil/callee_test.go
index ed59071..3ce6879 100644
--- a/go/types/typeutil/callee_test.go
+++ b/go/types/typeutil/callee_test.go
@@ -68,9 +68,6 @@
 }
 
 func TestTypeParamStaticCallee(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type parameters are not enabled")
-	}
 	testStaticCallee(t, []string{
 		`package q
 		func R[T any]() {}
diff --git a/go/types/typeutil/map_test.go b/go/types/typeutil/map_test.go
index ee73ff9..4197b69 100644
--- a/go/types/typeutil/map_test.go
+++ b/go/types/typeutil/map_test.go
@@ -178,10 +178,6 @@
 }
 
 func TestMapGenerics(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type params are not enabled at this Go version")
-	}
-
 	const src = `
 package p
 
diff --git a/godoc/godoc_test.go b/godoc/godoc_test.go
index 7f3470e..5e54db5 100644
--- a/godoc/godoc_test.go
+++ b/godoc/godoc_test.go
@@ -10,8 +10,6 @@
 	"go/token"
 	"strings"
 	"testing"
-
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func TestPkgLinkFunc(t *testing.T) {
@@ -372,10 +370,6 @@
 }
 
 func TestLinkifyGenerics(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type params are not enabled at this Go version")
-	}
-
 	got := linkifySource(t, []byte(`
 package foo
 
diff --git a/godoc/server_test.go b/godoc/server_test.go
index d6cc923..7fa02c5 100644
--- a/godoc/server_test.go
+++ b/godoc/server_test.go
@@ -15,7 +15,6 @@
 	"text/template"
 
 	"golang.org/x/tools/godoc/vfs/mapfs"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 // TestIgnoredGoFiles tests the scenario where a folder has no .go or .c files,
@@ -133,10 +132,6 @@
 }
 
 func TestGenerics(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type params are not enabled at this Go version")
-	}
-
 	c := NewCorpus(mapfs.New(map[string]string{
 		"blah/blah.go": `package blah
 
diff --git a/gopls/internal/analysis/embeddirective/embeddirective_test.go b/gopls/internal/analysis/embeddirective/embeddirective_test.go
index 1165c0b..22e43af 100644
--- a/gopls/internal/analysis/embeddirective/embeddirective_test.go
+++ b/gopls/internal/analysis/embeddirective/embeddirective_test.go
@@ -8,15 +8,9 @@
 	"testing"
 
 	"golang.org/x/tools/go/analysis/analysistest"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests)
-	}
-
-	analysistest.RunWithSuggestedFixes(t, testdata, Analyzer, tests...)
+	analysistest.RunWithSuggestedFixes(t, testdata, Analyzer, "a")
 }
diff --git a/gopls/internal/analysis/fillreturns/fillreturns_test.go b/gopls/internal/analysis/fillreturns/fillreturns_test.go
index e57b4b9..f766766 100644
--- a/gopls/internal/analysis/fillreturns/fillreturns_test.go
+++ b/gopls/internal/analysis/fillreturns/fillreturns_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/fillreturns"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, fillreturns.Analyzer, tests...)
+	analysistest.RunWithSuggestedFixes(t, testdata, fillreturns.Analyzer, "a", "typeparams")
 }
diff --git a/gopls/internal/analysis/fillstruct/fillstruct_test.go b/gopls/internal/analysis/fillstruct/fillstruct_test.go
index 3b1f8fd..39fc81f 100644
--- a/gopls/internal/analysis/fillstruct/fillstruct_test.go
+++ b/gopls/internal/analysis/fillstruct/fillstruct_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/fillstruct"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.Run(t, testdata, fillstruct.Analyzer, tests...)
+	analysistest.Run(t, testdata, fillstruct.Analyzer, "a", "typeparams")
 }
diff --git a/gopls/internal/analysis/infertypeargs/infertypeargs_test.go b/gopls/internal/analysis/infertypeargs/infertypeargs_test.go
index 7d3900f..25c88e8 100644
--- a/gopls/internal/analysis/infertypeargs/infertypeargs_test.go
+++ b/gopls/internal/analysis/infertypeargs/infertypeargs_test.go
@@ -9,13 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/infertypeargs"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type params are not enabled")
-	}
 	testdata := analysistest.TestData()
 	analysistest.RunWithSuggestedFixes(t, testdata, infertypeargs.Analyzer, "a")
 }
diff --git a/gopls/internal/analysis/nonewvars/nonewvars_test.go b/gopls/internal/analysis/nonewvars/nonewvars_test.go
index a8af6c4..49e19db 100644
--- a/gopls/internal/analysis/nonewvars/nonewvars_test.go
+++ b/gopls/internal/analysis/nonewvars/nonewvars_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/nonewvars"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, nonewvars.Analyzer, tests...)
+	analysistest.RunWithSuggestedFixes(t, testdata, nonewvars.Analyzer, "a", "typeparams")
 }
diff --git a/gopls/internal/analysis/noresultvalues/noresultvalues_test.go b/gopls/internal/analysis/noresultvalues/noresultvalues_test.go
index b7ced5d..e9f1a36 100644
--- a/gopls/internal/analysis/noresultvalues/noresultvalues_test.go
+++ b/gopls/internal/analysis/noresultvalues/noresultvalues_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/noresultvalues"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, noresultvalues.Analyzer, tests...)
+	analysistest.RunWithSuggestedFixes(t, testdata, noresultvalues.Analyzer, "a", "typeparams")
 }
diff --git a/gopls/internal/analysis/simplifyslice/simplifyslice_test.go b/gopls/internal/analysis/simplifyslice/simplifyslice_test.go
index dd70b8b..969161e 100644
--- a/gopls/internal/analysis/simplifyslice/simplifyslice_test.go
+++ b/gopls/internal/analysis/simplifyslice/simplifyslice_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/simplifyslice"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, simplifyslice.Analyzer, tests...)
+	analysistest.RunWithSuggestedFixes(t, testdata, simplifyslice.Analyzer, "a", "typeparams")
 }
diff --git a/gopls/internal/analysis/unusedparams/unusedparams_test.go b/gopls/internal/analysis/unusedparams/unusedparams_test.go
index 17c1516..1e2d885 100644
--- a/gopls/internal/analysis/unusedparams/unusedparams_test.go
+++ b/gopls/internal/analysis/unusedparams/unusedparams_test.go
@@ -9,14 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/unusedparams"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
 	testdata := analysistest.TestData()
-	tests := []string{"a"}
-	if typeparams.Enabled {
-		tests = append(tests, "typeparams")
-	}
-	analysistest.RunWithSuggestedFixes(t, testdata, unusedparams.Analyzer, tests...)
+	analysistest.RunWithSuggestedFixes(t, testdata, unusedparams.Analyzer, "a", "typeparams")
 }
diff --git a/gopls/internal/analysis/useany/useany_test.go b/gopls/internal/analysis/useany/useany_test.go
index a8c505a..a8cb692 100644
--- a/gopls/internal/analysis/useany/useany_test.go
+++ b/gopls/internal/analysis/useany/useany_test.go
@@ -9,13 +9,9 @@
 
 	"golang.org/x/tools/go/analysis/analysistest"
 	"golang.org/x/tools/gopls/internal/analysis/useany"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func Test(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type params are not enabled")
-	}
 	testdata := analysistest.TestData()
 	analysistest.RunWithSuggestedFixes(t, testdata, useany.Analyzer, "a")
 }
diff --git a/gopls/internal/test/integration/misc/semantictokens_test.go b/gopls/internal/test/integration/misc/semantictokens_test.go
index 3cecb27..b0b49ec 100644
--- a/gopls/internal/test/integration/misc/semantictokens_test.go
+++ b/gopls/internal/test/integration/misc/semantictokens_test.go
@@ -13,7 +13,6 @@
 	"golang.org/x/tools/gopls/internal/lsp/protocol"
 	. "golang.org/x/tools/gopls/internal/test/integration"
 	"golang.org/x/tools/gopls/internal/test/integration/fake"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 func TestBadURICrash_VSCodeIssue1498(t *testing.T) {
@@ -109,9 +108,6 @@
 // fix inconsistency in TypeParameters
 // https://github.com/golang/go/issues/57619
 func TestSemantic_57619(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type parameters are needed for this test")
-	}
 	src := `
 -- go.mod --
 module example.com
diff --git a/internal/facts/facts_test.go b/internal/facts/facts_test.go
index 4f1e8d6..56eb599 100644
--- a/internal/facts/facts_test.go
+++ b/internal/facts/facts_test.go
@@ -20,7 +20,6 @@
 	"golang.org/x/tools/go/packages"
 	"golang.org/x/tools/internal/facts"
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/typeparams"
 )
 
 type myFact struct {
@@ -250,9 +249,6 @@
 		test := tests[i]
 		t.Run(test.name, func(t *testing.T) {
 			t.Parallel()
-			if test.typeparams && !typeparams.Enabled {
-				t.Skip("type parameters are not enabled")
-			}
 			testEncodeDecode(t, test.files, test.plookups)
 		})
 	}
@@ -444,9 +440,6 @@
 // happen when Analyzers have RunDespiteErrors set to true. So this
 // needs to robust, e.g. no infinite loops.
 func TestMalformed(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("type parameters are not enabled")
-	}
 	var findPkg func(*types.Package, string) *types.Package
 	findPkg = func(p *types.Package, name string) *types.Package {
 		if p.Name() == name {
diff --git a/internal/typeparams/coretype_test.go b/internal/typeparams/coretype_test.go
index 2884399..a9575f9 100644
--- a/internal/typeparams/coretype_test.go
+++ b/internal/typeparams/coretype_test.go
@@ -15,10 +15,6 @@
 )
 
 func TestCoreType(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("TestCoreType requires type parameters.")
-	}
-
 	const source = `
 	package P
 
diff --git a/internal/typeparams/enabled_go117.go b/internal/typeparams/enabled_go117.go
deleted file mode 100644
index 1821239..0000000
--- a/internal/typeparams/enabled_go117.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2021 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.
-
-//go:build !go1.18
-// +build !go1.18
-
-package typeparams
-
-// Enabled reports whether type parameters are enabled in the current build
-// environment.
-const Enabled = false
diff --git a/internal/typeparams/enabled_go118.go b/internal/typeparams/enabled_go118.go
deleted file mode 100644
index d671488..0000000
--- a/internal/typeparams/enabled_go118.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2021 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.
-
-//go:build go1.18
-// +build go1.18
-
-package typeparams
-
-// Note: this constant is in a separate file as this is the only acceptable
-// diff between the <1.18 API of this package and the 1.18 API.
-
-// Enabled reports whether type parameters are enabled in the current build
-// environment.
-const Enabled = true
diff --git a/internal/typeparams/normalize_test.go b/internal/typeparams/normalize_test.go
index 769433d..a6253fa 100644
--- a/internal/typeparams/normalize_test.go
+++ b/internal/typeparams/normalize_test.go
@@ -18,10 +18,6 @@
 )
 
 func TestStructuralTerms(t *testing.T) {
-	if !Enabled {
-		t.Skip("typeparams are not enabled")
-	}
-
 	// In the following tests, src must define a type T with (at least) one type
 	// parameter. We will compute the structural terms of the first type
 	// parameter.
diff --git a/internal/typeparams/typeparams_go117.go b/internal/typeparams/typeparams_go117.go
deleted file mode 100644
index 7ed86e1..0000000
--- a/internal/typeparams/typeparams_go117.go
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2021 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.
-
-//go:build !go1.18
-// +build !go1.18
-
-package typeparams
-
-import (
-	"go/ast"
-	"go/token"
-	"go/types"
-)
-
-func unsupported() {
-	panic("type parameters are unsupported at this go version")
-}
-
-// IndexListExpr is a placeholder type, as type parameters are not supported at
-// this Go version. Its methods panic on use.
-type IndexListExpr struct {
-	ast.Expr
-	X       ast.Expr   // expression
-	Lbrack  token.Pos  // position of "["
-	Indices []ast.Expr // index expressions
-	Rbrack  token.Pos  // position of "]"
-}
-
-// ForTypeSpec returns an empty field list, as type parameters on not supported
-// at this Go version.
-func ForTypeSpec(*ast.TypeSpec) *ast.FieldList {
-	return nil
-}
-
-// ForFuncType returns an empty field list, as type parameters are not
-// supported at this Go version.
-func ForFuncType(*ast.FuncType) *ast.FieldList {
-	return nil
-}
-
-// TypeParam is a placeholder type, as type parameters are not supported at
-// this Go version. Its methods panic on use.
-type TypeParam struct{ types.Type }
-
-func (*TypeParam) Index() int             { unsupported(); return 0 }
-func (*TypeParam) Constraint() types.Type { unsupported(); return nil }
-func (*TypeParam) Obj() *types.TypeName   { unsupported(); return nil }
-
-// TypeParamList is a placeholder for an empty type parameter list.
-type TypeParamList struct{}
-
-func (*TypeParamList) Len() int          { return 0 }
-func (*TypeParamList) At(int) *TypeParam { unsupported(); return nil }
-
-// TypeList is a placeholder for an empty type list.
-type TypeList struct{}
-
-func (*TypeList) Len() int          { return 0 }
-func (*TypeList) At(int) types.Type { unsupported(); return nil }
-
-// NewTypeParam is unsupported at this Go version, and panics.
-func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam {
-	unsupported()
-	return nil
-}
-
-// SetTypeParamConstraint is unsupported at this Go version, and panics.
-func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) {
-	unsupported()
-}
-
-// NewSignatureType calls types.NewSignature, panicking if recvTypeParams or
-// typeParams is non-empty.
-func NewSignatureType(recv *types.Var, recvTypeParams, typeParams []*TypeParam, params, results *types.Tuple, variadic bool) *types.Signature {
-	if len(recvTypeParams) != 0 || len(typeParams) != 0 {
-		panic("signatures cannot have type parameters at this Go version")
-	}
-	return types.NewSignature(recv, params, results, variadic)
-}
-
-// ForSignature returns an empty slice.
-func ForSignature(*types.Signature) *TypeParamList {
-	return nil
-}
-
-// RecvTypeParams returns a nil slice.
-func RecvTypeParams(sig *types.Signature) *TypeParamList {
-	return nil
-}
-
-// IsComparable returns false, as no interfaces are type-restricted at this Go
-// version.
-func IsComparable(*types.Interface) bool {
-	return false
-}
-
-// IsMethodSet returns true, as no interfaces are type-restricted at this Go
-// version.
-func IsMethodSet(*types.Interface) bool {
-	return true
-}
-
-// IsImplicit returns false, as no interfaces are implicit at this Go version.
-func IsImplicit(*types.Interface) bool {
-	return false
-}
-
-// MarkImplicit does nothing, because this Go version does not have implicit
-// interfaces.
-func MarkImplicit(*types.Interface) {}
-
-// ForNamed returns an empty type parameter list, as type parameters are not
-// supported at this Go version.
-func ForNamed(*types.Named) *TypeParamList {
-	return nil
-}
-
-// SetForNamed panics if tparams is non-empty.
-func SetForNamed(_ *types.Named, tparams []*TypeParam) {
-	if len(tparams) > 0 {
-		unsupported()
-	}
-}
-
-// NamedTypeArgs returns nil.
-func NamedTypeArgs(*types.Named) *TypeList {
-	return nil
-}
-
-// NamedTypeOrigin is the identity method at this Go version.
-func NamedTypeOrigin(named *types.Named) *types.Named {
-	return named
-}
-
-// Term holds information about a structural type restriction.
-type Term struct {
-	tilde bool
-	typ   types.Type
-}
-
-func (m *Term) Tilde() bool      { return m.tilde }
-func (m *Term) Type() types.Type { return m.typ }
-func (m *Term) String() string {
-	pre := ""
-	if m.tilde {
-		pre = "~"
-	}
-	return pre + m.typ.String()
-}
-
-// NewTerm is unsupported at this Go version, and panics.
-func NewTerm(tilde bool, typ types.Type) *Term {
-	return &Term{tilde, typ}
-}
-
-// Union is a placeholder type, as type parameters are not supported at this Go
-// version. Its methods panic on use.
-type Union struct{ types.Type }
-
-func (*Union) Len() int         { return 0 }
-func (*Union) Term(i int) *Term { unsupported(); return nil }
-
-// NewUnion is unsupported at this Go version, and panics.
-func NewUnion(terms []*Term) *Union {
-	unsupported()
-	return nil
-}
-
-// InitInstanceInfo is a noop at this Go version.
-func InitInstanceInfo(*types.Info) {}
-
-// Instance is a placeholder type, as type parameters are not supported at this
-// Go version.
-type Instance struct {
-	TypeArgs *TypeList
-	Type     types.Type
-}
-
-// GetInstances returns a nil map, as type parameters are not supported at this
-// Go version.
-func GetInstances(info *types.Info) map[*ast.Ident]Instance { return nil }
-
-// Context is a placeholder type, as type parameters are not supported at
-// this Go version.
-type Context struct{}
-
-// NewContext returns a placeholder Context instance.
-func NewContext() *Context {
-	return &Context{}
-}
-
-// Instantiate is unsupported on this Go version, and panics.
-func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) {
-	unsupported()
-	return nil, nil
-}
diff --git a/internal/typeparams/typeparams_go118.go b/internal/typeparams/typeparams_go118.go
index cf301af..0bda83d 100644
--- a/internal/typeparams/typeparams_go118.go
+++ b/internal/typeparams/typeparams_go118.go
@@ -2,9 +2,6 @@
 // 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
-
 package typeparams
 
 import (
@@ -12,6 +9,8 @@
 	"go/types"
 )
 
+// TODO(adonovan): melt the aliases away.
+
 // IndexListExpr is an alias for ast.IndexListExpr.
 type IndexListExpr = ast.IndexListExpr
 
diff --git a/internal/typeparams/typeparams_test.go b/internal/typeparams/typeparams_test.go
deleted file mode 100644
index cdbcae9..0000000
--- a/internal/typeparams/typeparams_test.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2021 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.
-
-//go:build go1.18
-// +build go1.18
-
-package typeparams_test
-
-import (
-	"go/ast"
-	"go/importer"
-	"go/parser"
-	"go/token"
-	"go/types"
-	"strings"
-	"testing"
-
-	"golang.org/x/tools/internal/apidiff"
-	"golang.org/x/tools/internal/testenv"
-)
-
-func TestAPIConsistency(t *testing.T) {
-	testenv.NeedsGoBuild(t) // This is a lie. We actually need the source code.
-
-	// The packages below exclude enabled_*.go, as typeparams.Enabled is
-	// permitted to change between versions.
-	old := typeCheck(t, []string{"common.go", "typeparams_go117.go"})
-	new := typeCheck(t, []string{"common.go", "typeparams_go118.go"})
-
-	report := apidiff.Changes(old, new)
-
-	// Temporarily ignore API diff related to Environment, so that we can use a
-	// transient alias in go/types to allow renaming this type without ever
-	// breaking the x/tools builder.
-	// TODO(rfindley): remove this
-	var filteredChanges []apidiff.Change
-	for _, change := range report.Changes {
-		if strings.Contains(change.Message, "Environment") {
-			continue
-		}
-		filteredChanges = append(filteredChanges, change)
-	}
-	report.Changes = filteredChanges
-	if len(report.Changes) > 0 {
-		t.Errorf("API diff:\n%s", report)
-	}
-}
-
-func typeCheck(t *testing.T, filenames []string) *types.Package {
-	fset := token.NewFileSet()
-	var files []*ast.File
-	for _, name := range filenames {
-		f, err := parser.ParseFile(fset, name, nil, 0)
-		if err != nil {
-			t.Fatal(err)
-		}
-		files = append(files, f)
-	}
-	conf := types.Config{
-		Importer: importer.Default(),
-	}
-	pkg, err := conf.Check("", fset, files, nil)
-	if err != nil {
-		t.Fatal(err)
-	}
-	return pkg
-}
diff --git a/refactor/satisfy/find_test.go b/refactor/satisfy/find_test.go
index 995b95f..e6ffa42 100644
--- a/refactor/satisfy/find_test.go
+++ b/refactor/satisfy/find_test.go
@@ -23,10 +23,6 @@
 // This test exercises various operations on core types of type parameters.
 // (It also provides pretty decent coverage of the non-generic operations.)
 func TestGenericCoreOperations(t *testing.T) {
-	if !typeparams.Enabled {
-		t.Skip("!typeparams.Enabled")
-	}
-
 	const src = `package foo
 
 import "unsafe"
