golang/go

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

Open

#75422 opened on Sep 11, 2025

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

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