feat: go1.19 support (#3037)
This commit is contained in:
parent
6313fa9a67
commit
1557692e59
6
.github/workflows/post-release.yml
vendored
6
.github/workflows/post-release.yml
vendored
@ -14,8 +14,10 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
go-version: 1.18
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: 1.19
|
||||
|
||||
- name: Update GitHub action config
|
||||
run: make assets/github-action-config.json
|
||||
|
6
.github/workflows/pr-extra.yml
vendored
6
.github/workflows/pr-extra.yml
vendored
@ -13,8 +13,10 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
go-version: 1.18
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: 1.19
|
||||
- name: Run go list
|
||||
run: go list -json -m all > go.list
|
||||
- name: Nancy
|
||||
|
31
.github/workflows/pr.yml
vendored
31
.github/workflows/pr.yml
vendored
@ -6,7 +6,7 @@ on:
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
GO_VERSION: 1.18
|
||||
GO_VERSION: 1.19
|
||||
|
||||
jobs:
|
||||
# Check if there any dirty change for go mod tidy
|
||||
@ -16,7 +16,9 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
@ -34,8 +36,11 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
# go-version: ${{ env.GO_VERSION }} # todo(ldez) uncomment after the next release v1.48.0
|
||||
go-version: 1.18
|
||||
- name: lint
|
||||
uses: golangci/golangci-lint-action@v3.2.0
|
||||
with:
|
||||
@ -52,7 +57,9 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI
|
||||
- name: Run tests
|
||||
run: make.exe test
|
||||
@ -66,7 +73,9 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI
|
||||
- name: Run tests
|
||||
run: make test
|
||||
@ -77,14 +86,16 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
golang:
|
||||
- 1.17
|
||||
- 1.18
|
||||
- 1.19
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: ${{ matrix.golang }}
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
@ -108,7 +119,9 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
- name: Check generated files are up to date
|
||||
run: make fast_check_generated
|
||||
|
12
.github/workflows/tag.yml
vendored
12
.github/workflows/tag.yml
vendored
@ -14,8 +14,10 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
go-version: 1.18
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: 1.19
|
||||
- name: Unshallow
|
||||
run: git fetch --prune --unshallow
|
||||
|
||||
@ -41,8 +43,10 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
# stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1).
|
||||
go-version: 1.18
|
||||
# Keep the following comment to be able to use rc and beta version of Go (ex: 1.18.0-rc.1).
|
||||
# https://github.com/actions/setup-go#supported-version-syntax
|
||||
# stable: 'false'
|
||||
go-version: 1.19
|
||||
|
||||
- name: Unshallow
|
||||
run: git fetch --prune --unshallow
|
||||
|
@ -68,9 +68,9 @@ run:
|
||||
allow-parallel-runners: false
|
||||
|
||||
# Define the Go version limit.
|
||||
# Mainly related to generics support in go1.18.
|
||||
# Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.17
|
||||
go: '1.18'
|
||||
# Mainly related to generics support since go1.18.
|
||||
# Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.18
|
||||
go: '1.19'
|
||||
|
||||
|
||||
# output configuration options
|
||||
|
@ -1,5 +1,5 @@
|
||||
# stage 1 building the code
|
||||
FROM golang:1.18 as builder
|
||||
FROM golang:1.19 as builder
|
||||
|
||||
ARG VERSION
|
||||
ARG SHORT_COMMIT
|
||||
@ -10,7 +10,7 @@ WORKDIR /golangci
|
||||
RUN CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=$VERSION -X main.commit=$SHORT_COMMIT -X main.date=$DATE" -o golangci-lint ./cmd/golangci-lint/main.go
|
||||
|
||||
# stage 2
|
||||
FROM golang:1.18
|
||||
FROM golang:1.19
|
||||
# don't place it into $GOPATH/bin because Drone mounts $GOPATH as volume
|
||||
COPY --from=builder /golangci/golangci-lint /usr/bin/
|
||||
CMD ["golangci-lint"]
|
||||
|
@ -1,5 +1,5 @@
|
||||
# stage 1 building the code
|
||||
FROM golang:1.18-alpine as builder
|
||||
FROM golang:1.19-alpine as builder
|
||||
|
||||
ARG VERSION
|
||||
ARG SHORT_COMMIT
|
||||
@ -15,7 +15,7 @@ RUN apk --no-cache add gcc musl-dev git mercurial
|
||||
RUN CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=$VERSION -X main.commit=$SHORT_COMMIT -X main.date=$DATE" -o golangci-lint ./cmd/golangci-lint/main.go
|
||||
|
||||
# stage 2
|
||||
FROM golang:1.18-alpine
|
||||
FROM golang:1.19-alpine
|
||||
# gcc is required to support cgo;
|
||||
# git and mercurial are needed most times for go get`, etc.
|
||||
# See https://github.com/docker-library/golang/issues/80
|
||||
|
2
go.mod
2
go.mod
@ -1,6 +1,6 @@
|
||||
module github.com/golangci/golangci-lint
|
||||
|
||||
go 1.18
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
4d63.com/gochecknoglobals v0.1.0
|
||||
|
@ -121,7 +121,15 @@ func (lp *loadingPackage) loadFromSource(loadMode LoadMode) error {
|
||||
|
||||
pkg.IllTyped = true
|
||||
|
||||
pkg.TypesInfo = newTypesInfo()
|
||||
pkg.TypesInfo = &types.Info{
|
||||
Types: make(map[ast.Expr]types.TypeAndValue),
|
||||
Instances: make(map[*ast.Ident]types.Instance),
|
||||
Defs: make(map[*ast.Ident]types.Object),
|
||||
Uses: make(map[*ast.Ident]types.Object),
|
||||
Implicits: make(map[ast.Node]types.Object),
|
||||
Scopes: make(map[ast.Node]*types.Scope),
|
||||
Selections: make(map[*ast.SelectorExpr]*types.Selection),
|
||||
}
|
||||
|
||||
importer := func(path string) (*types.Package, error) {
|
||||
if path == unsafePkgName {
|
||||
|
@ -1,21 +0,0 @@
|
||||
//go:build go1.18
|
||||
// +build go1.18
|
||||
|
||||
package goanalysis
|
||||
|
||||
import (
|
||||
"go/ast"
|
||||
"go/types"
|
||||
)
|
||||
|
||||
func newTypesInfo() *types.Info {
|
||||
return &types.Info{
|
||||
Types: make(map[ast.Expr]types.TypeAndValue),
|
||||
Instances: make(map[*ast.Ident]types.Instance),
|
||||
Defs: make(map[*ast.Ident]types.Object),
|
||||
Uses: make(map[*ast.Ident]types.Object),
|
||||
Implicits: make(map[ast.Node]types.Object),
|
||||
Scopes: make(map[ast.Node]*types.Scope),
|
||||
Selections: make(map[*ast.SelectorExpr]*types.Selection),
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
//go:build go1.17 && !go1.18
|
||||
// +build go1.17,!go1.18
|
||||
|
||||
package goanalysis
|
||||
|
||||
import (
|
||||
"go/ast"
|
||||
"go/types"
|
||||
)
|
||||
|
||||
func newTypesInfo() *types.Info {
|
||||
return &types.Info{
|
||||
Types: make(map[ast.Expr]types.TypeAndValue),
|
||||
Defs: make(map[*ast.Ident]types.Object),
|
||||
Uses: make(map[*ast.Ident]types.Object),
|
||||
Implicits: make(map[ast.Node]types.Object),
|
||||
Scopes: make(map[ast.Node]*types.Scope),
|
||||
Selections: make(map[*ast.SelectorExpr]*types.Selection),
|
||||
}
|
||||
}
|
@ -98,6 +98,7 @@ func staticCheckConfig(settings *config.StaticCheckSettings) *scconfig.Config {
|
||||
}
|
||||
|
||||
// https://github.com/dominikh/go-tools/blob/9bf17c0388a65710524ba04c2d821469e639fdc2/lintcmd/lint.go#L437-L477
|
||||
//
|
||||
//nolint:gocritic // Keep the original source code.
|
||||
func filterAnalyzerNames(analyzers []string, checks []string) map[string]bool {
|
||||
allowedChecks := map[string]bool{}
|
||||
|
@ -21,8 +21,8 @@ type Noop struct {
|
||||
}
|
||||
|
||||
func (n Noop) Run(_ context.Context, lintCtx *Context) ([]result.Issue, error) {
|
||||
lintCtx.Log.Warnf("%s is disabled because of go1.18."+
|
||||
" You can track the evolution of the go1.18 support by following the https://github.com/golangci/golangci-lint/issues/2649.", n.name)
|
||||
lintCtx.Log.Warnf("%s is disabled because of generics."+
|
||||
" You can track the evolution of the generics support by following the https://github.com/golangci/golangci-lint/issues/2649.", n.name)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
@ -312,15 +312,10 @@ func extractRunContextFromComments(t *testing.T, sourcePath string) *runContext
|
||||
require.Failf(t, "invalid prefix of comment line %s", line)
|
||||
}
|
||||
|
||||
// TODO(ldez) replace that by strings.Cut when we will drop go1.17
|
||||
var before string
|
||||
var after string
|
||||
if i := strings.Index(line, " "); i >= 0 {
|
||||
before = line[:i]
|
||||
after = strings.TrimSpace(line[i+len(" "):])
|
||||
} else {
|
||||
require.Failf(t, "invalid prefix of comment line %s", line)
|
||||
}
|
||||
before, after, found := strings.Cut(line, " ")
|
||||
require.Truef(t, found, "invalid prefix of comment line %s", line)
|
||||
|
||||
after = strings.TrimSpace(after)
|
||||
|
||||
switch before {
|
||||
case "//golangcitest:args":
|
||||
|
Loading…
x
Reference in New Issue
Block a user