@@ -55,7 +55,6 @@ type analyzer struct {
5555 constraintsPkgReplacements map [string ]stdReplacement [* ast.SelectorExpr ]
5656
5757 skipGoVersionDetection 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) {
126125 return nil , nil
127126 }
128127
129- a . goVersion = getGoVersion (pass )
128+ goVersion : = getGoVersion (pass )
130129
131130 nodeFilter := []ast.Node {
132131 (* ast .CallExpr )(nil ),
@@ -166,15 +165,15 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
166165
167166 switch ident .Name {
168167 case 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 )
170169 if usage {
171170 pass .Report (diagnostic )
172171 }
173172
174173 shouldKeepExpMaps = shouldKeepExpMaps || ! usage
175174
176175 case 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 )
178177 if usage {
179178 resultExpSlices .Diagnostics = append (resultExpSlices .Diagnostics , diagnostic )
180179 }
@@ -185,14 +184,14 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
185184 case * ast.FuncDecl :
186185 if node .Type .TypeParams != nil {
187186 for _ , field := range node .Type .TypeParams .List {
188- a .detectConstraintsUsage (pass , field .Type , resultExpConstraints )
187+ a .detectConstraintsUsage (pass , field .Type , resultExpConstraints , goVersion )
189188 }
190189 }
191190
192191 case * ast.TypeSpec :
193192 if node .TypeParams != nil {
194193 for _ , 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) {
204203 for _ , method := range interfaceType .Methods .List {
205204 switch exp := method .Type .(type ) {
206205 case * 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
210209 case * 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 ,
236235 replacements map [string ]stdReplacement [* ast.CallExpr ],
237236 selExpr * ast.SelectorExpr , ident * ast.Ident , callExpr * ast.CallExpr ,
238- importPath string ,
237+ importPath string , goVersion int ,
239238) (analysis.Diagnostic , bool ) {
240239 rp , ok := replacements [selExpr .Sel .Name ]
241240 if ! ok {
242241 return analysis.Diagnostic {}, false
243242 }
244243
245- if ! a .skipGoVersionDetection && rp .MinGo > a . goVersion {
244+ if ! a .skipGoVersionDetection && rp .MinGo > goVersion {
246245 return analysis.Diagnostic {}, false
247246 }
248247
@@ -267,7 +266,7 @@ func (a *analyzer) detectPackageUsage(pass *analysis.Pass,
267266 return 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 ) {
271270 selExpr , ok := expr .(* ast.SelectorExpr )
272271 if ! ok {
273272 return
@@ -288,7 +287,7 @@ func (a *analyzer) detectConstraintsUsage(pass *analysis.Pass, expr ast.Expr, re
288287 return
289288 }
290289
291- if ! a .skipGoVersionDetection && rp .MinGo > a . goVersion {
290+ if ! a .skipGoVersionDetection && rp .MinGo > goVersion {
292291 result .shouldKeepImport = true
293292 return
294293 }
0 commit comments