@@ -55,7 +55,6 @@ type analyzer struct {
5555constraintsPkgReplacements map [string ]stdReplacement [* ast.SelectorExpr ]
5656
5757skipGoVersionDetection bool
58- goVersion int
5958}
6059
6160// NewAnalyzer create a new Analyzer.
@@ -126,7 +125,7 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
126125return nil , nil
127126}
128127
129- a . goVersion = getGoVersion (pass )
128+ goVersion : = getGoVersion (pass )
130129
131130nodeFilter := []ast.Node {
132131(* ast .CallExpr )(nil ),
@@ -166,15 +165,15 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
166165
167166switch ident .Name {
168167case pkgMaps :
169- diagnostic , usage := a .detectPackageUsage (pass , a .mapsPkgReplacements , selExpr , ident , node , pkgExpMaps )
168+ diagnostic , usage := a .detectPackageUsage (pass , a .mapsPkgReplacements , selExpr , ident , node , pkgExpMaps , goVersion )
170169if usage {
171170pass .Report (diagnostic )
172171}
173172
174173shouldKeepExpMaps = shouldKeepExpMaps || ! usage
175174
176175case pkgSlices :
177- diagnostic , usage := a .detectPackageUsage (pass , a .slicesPkgReplacements , selExpr , ident , node , pkgExpSlices )
176+ diagnostic , usage := a .detectPackageUsage (pass , a .slicesPkgReplacements , selExpr , ident , node , pkgExpSlices , goVersion )
178177if usage {
179178resultExpSlices .Diagnostics = append (resultExpSlices .Diagnostics , diagnostic )
180179}
@@ -185,14 +184,14 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
185184case * ast.FuncDecl :
186185if node .Type .TypeParams != nil {
187186for _ , field := range node .Type .TypeParams .List {
188- a .detectConstraintsUsage (pass , field .Type , resultExpConstraints )
187+ a .detectConstraintsUsage (pass , field .Type , resultExpConstraints , goVersion )
189188}
190189}
191190
192191case * ast.TypeSpec :
193192if node .TypeParams != nil {
194193for _ , field := range node .TypeParams .List {
195- a .detectConstraintsUsage (pass , field .Type , resultExpConstraints )
194+ a .detectConstraintsUsage (pass , field .Type , resultExpConstraints , goVersion )
196195}
197196}
198197
@@ -204,11 +203,11 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
204203for _ , method := range interfaceType .Methods .List {
205204switch exp := method .Type .(type ) {
206205case * ast.BinaryExpr :
207- a .detectConstraintsUsage (pass , exp .X , resultExpConstraints )
208- a .detectConstraintsUsage (pass , exp .Y , resultExpConstraints )
206+ a .detectConstraintsUsage (pass , exp .X , resultExpConstraints , goVersion )
207+ a .detectConstraintsUsage (pass , exp .Y , resultExpConstraints , goVersion )
209208
210209case * ast.SelectorExpr :
211- a .detectConstraintsUsage (pass , exp , resultExpConstraints )
210+ a .detectConstraintsUsage (pass , exp , resultExpConstraints , goVersion )
212211}
213212}
214213}
@@ -235,14 +234,14 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
235234func (a * analyzer ) detectPackageUsage (pass * analysis.Pass ,
236235replacements map [string ]stdReplacement [* ast.CallExpr ],
237236selExpr * ast.SelectorExpr , ident * ast.Ident , callExpr * ast.CallExpr ,
238- importPath string ,
237+ importPath string , goVersion int ,
239238) (analysis.Diagnostic , bool ) {
240239rp , ok := replacements [selExpr .Sel .Name ]
241240if ! ok {
242241return analysis.Diagnostic {}, false
243242}
244243
245- if ! a .skipGoVersionDetection && rp .MinGo > a . goVersion {
244+ if ! a .skipGoVersionDetection && rp .MinGo > goVersion {
246245return analysis.Diagnostic {}, false
247246}
248247
@@ -267,7 +266,7 @@ func (a *analyzer) detectPackageUsage(pass *analysis.Pass,
267266return diagnostic , true
268267}
269268
270- func (a * analyzer ) detectConstraintsUsage (pass * analysis.Pass , expr ast.Expr , result * Result ) {
269+ func (a * analyzer ) detectConstraintsUsage (pass * analysis.Pass , expr ast.Expr , result * Result , goVersion int ) {
271270selExpr , ok := expr .(* ast.SelectorExpr )
272271if ! ok {
273272return
@@ -288,7 +287,7 @@ func (a *analyzer) detectConstraintsUsage(pass *analysis.Pass, expr ast.Expr, re
288287return
289288}
290289
291- if ! a .skipGoVersionDetection && rp .MinGo > a . goVersion {
290+ if ! a .skipGoVersionDetection && rp .MinGo > goVersion {
292291result .shouldKeepImport = true
293292return
294293}
0 commit comments