Skip to content

Commit 3cbe7b5

Browse files
committed
fix: packages.Load, go list, and typcheck
1 parent d0132c3 commit 3cbe7b5

File tree

5 files changed

+19
-5
lines changed

5 files changed

+19
-5
lines changed

pkg/golinters/goanalysis/runner_loadingpackage.go

+1
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ func (lp *loadingPackage) convertError(err error) []packages.Error {
434434
// If you see this error message, please file a bug.
435435
lp.log.Warnf("Internal error: error %q (%T) without position", err, err)
436436
}
437+
437438
return errs
438439
}
439440

pkg/golinters/gofmt_common.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ func extractIssuesFromPatch(patch string, lintCtx *linter.Context, linterName st
242242
}
243243

244244
if len(diffs) == 0 {
245-
return nil, fmt.Errorf("got no diffs from patch parser: %v", diffs)
245+
return nil, fmt.Errorf("got no diffs from patch parser: %v", patch)
246246
}
247247

248248
var issues []result.Issue

pkg/lint/load.go

+12
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,17 @@ func (cl *ContextLoader) debugPrintLoadedPackages(pkgs []*packages.Package) {
160160

161161
func (cl *ContextLoader) parseLoadedPackagesErrors(pkgs []*packages.Package) error {
162162
for _, pkg := range pkgs {
163+
var errs []packages.Error
163164
for _, err := range pkg.Errors {
165+
// quick fix: skip error related to `go list` invocation by packages.Load()
166+
// The behavior has been changed between go1.19 and go1.20, the error is now inside the JSON content.
167+
// https://github.com/golangci/golangci-lint/pull/3414#issuecomment-1364756303
168+
if strings.Contains(err.Msg, "# command-line-arguments") {
169+
continue
170+
}
171+
172+
errs = append(errs, err)
173+
164174
if strings.Contains(err.Msg, "no Go files") {
165175
return errors.Wrapf(exitcodes.ErrNoGoFiles, "package %s", pkg.PkgPath)
166176
}
@@ -169,6 +179,8 @@ func (cl *ContextLoader) parseLoadedPackagesErrors(pkgs []*packages.Package) err
169179
return errors.Wrap(exitcodes.ErrFailure, err.Msg)
170180
}
171181
}
182+
183+
pkg.Errors = errs
172184
}
173185

174186
return nil

pkg/lint/runner.go

+1
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ func (r Runner) Run(ctx context.Context, linters []*linter.Config, lintCtx *lint
208208

209209
return
210210
}
211+
211212
issues = append(issues, linterIssues...)
212213
})
213214
}

test/testdata/notcompiles/typecheck_many_issues.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
package testdata
33

44
func TypeCheckBadCalls() {
5-
typecheckNotExists1.F1() // want "undeclared name: `typecheckNotExists1`"
6-
typecheckNotExists2.F2() // want "undeclared name: `typecheckNotExists2`"
7-
typecheckNotExists3.F3() // want "undeclared name: `typecheckNotExists3`"
8-
typecheckNotExists4.F4() // want "undeclared name: `typecheckNotExists4`"
5+
typecheckNotExists1.F1() // want "undefined: typecheckNotExists1"
6+
typecheckNotExists2.F2() // want "undefined: typecheckNotExists2"
7+
typecheckNotExists3.F3() // want "undefined: typecheckNotExists3"
8+
typecheckNotExists4.F4() // want "undefined: typecheckNotExists4"
99
}

0 commit comments

Comments
 (0)