golang/go

x/tools/gopls/internal/analysis/modernize: add pass to use reflect.TypeAssert

Closed

#75,422 opened on Sep 11, 2025

View on GitHub
 (5 comments) (0 reactions) (0 assignees)Go (19,008 forks)batch import
AnalysisFeatureRequestToolsgoplshelp wanted

Repository metrics

Stars
 (133,883 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

https://go.dev/cl/702735 replaced v.Interface().(T) with reflect.TypeAssert[T](v), where v is a reflect.Value, and demonstrated a significant performance improvement. Although the new code is 7 chars longer, it is more direct and arguably clearer. We should add a modernizer to automate this transformation when v.Interface().(T) appears in a two-value (x, ok := ...) context in a file using go1.25 or later. The doc comment for TypeAssert states that they are "semantically equivalent".

Contributor guide