diff --git a/go/analysis/passes/assign/assign_test.go b/go/analysis/passes/assign/assign_test.go
index f793e08..146385f 100644
--- a/go/analysis/passes/assign/assign_test.go
+++ b/go/analysis/passes/assign/assign_test.go
@@ -9,9 +9,14 @@
 
 	"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()
-	analysistest.RunWithSuggestedFixes(t, testdata, assign.Analyzer, "a")
+	tests := []string{"a"}
+	if typeparams.Enabled {
+		tests = append(tests, "typeparams")
+	}
+	analysistest.RunWithSuggestedFixes(t, testdata, assign.Analyzer, tests...)
 }
diff --git a/go/analysis/passes/assign/testdata/src/typeparams/typeparams.go b/go/analysis/passes/assign/testdata/src/typeparams/typeparams.go
new file mode 100644
index 0000000..345db27
--- /dev/null
+++ b/go/analysis/passes/assign/testdata/src/typeparams/typeparams.go
@@ -0,0 +1,33 @@
+// Copyright 2020 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.
+
+// This file contains tests for the useless-assignment checker.
+
+//go:build go1.18
+
+package testdata
+
+import "math/rand"
+
+type ST[T interface{ ~int }] struct {
+	x T
+	l []T
+}
+
+func (s *ST[T]) SetX(x T, ch chan T) {
+	// Accidental self-assignment; it should be "s.x = x"
+	x = x // want "self-assignment of x to x"
+	// Another mistake
+	s.x = s.x // want "self-assignment of s.x to s.x"
+
+	s.l[0] = s.l[0] // want "self-assignment of s.l.0. to s.l.0."
+
+	// Bail on any potential side effects to avoid false positives
+	s.l[num()] = s.l[num()]
+	rng := rand.New(rand.NewSource(0))
+	s.l[rng.Intn(len(s.l))] = s.l[rng.Intn(len(s.l))]
+	s.l[<-ch] = s.l[<-ch]
+}
+
+func num() int { return 2 }
diff --git a/go/analysis/passes/assign/testdata/src/typeparams/typeparams.go.golden b/go/analysis/passes/assign/testdata/src/typeparams/typeparams.go.golden
new file mode 100644
index 0000000..d9384ed
--- /dev/null
+++ b/go/analysis/passes/assign/testdata/src/typeparams/typeparams.go.golden
@@ -0,0 +1,33 @@
+// Copyright 2020 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.
+
+// This file contains tests for the useless-assignment checker.
+
+//go:build go1.18
+
+package testdata
+
+import "math/rand"
+
+type ST[T interface{ ~int }] struct {
+	x T
+	l []T
+}
+
+func (s *ST[T]) SetX(x T, ch chan T) {
+	// Accidental self-assignment; it should be "s.x = x"
+	// want "self-assignment of x to x"
+	// Another mistake
+	// want "self-assignment of s.x to s.x"
+
+	// want "self-assignment of s.l.0. to s.l.0."
+
+	// Bail on any potential side effects to avoid false positives
+	s.l[num()] = s.l[num()]
+	rng := rand.New(rand.NewSource(0))
+	s.l[rng.Intn(len(s.l))] = s.l[rng.Intn(len(s.l))]
+	s.l[<-ch] = s.l[<-ch]
+}
+
+func num() int { return 2 }
