Skip to content

typecheck incorrectly complains of "operator == not defined on untyped nil" #624

Closed
@efd6

Description

@efd6

Welcome

  • Yes, I understand that the GitHub action repository is not the repository of golangci-lint itself.
  • Yes, I've searched similar issues on GitHub and didn't find any.
  • Yes, I've included all information below (version, config, etc).

Description of the problem

We are seeing the following. This should not be happening since the spec says (my emphasis):

Slice, map, and function values are not comparable. However, as a special case, a slice, map, or function value may be compared to the predeclared identifier nil. Comparison of pointer, channel, and interface values to nil is also allowed and follows from the general rules above.

Check failure on line 213 in x-pack/filebeat/input/httpjson/encoding.go
GitHub Actions / lint (darwin)

invalid operation: cannot compare dst.header == nil (operator == not defined on untyped nil) (typecheck)

This does not happen locally.

The issue looks to be related to https://go.dev/issue/39755.

Version of golangci-lint

v1.47.2

Version of the GitHub Action

Question not clearly defined.

Workflow file

name: golangci-lint
on:
  #push:
  #  branches:
  #    - main
  #    - 8.*
  #    - 7.17
  pull_request:
permissions:
  contents: read
  # Optional: allow read access to pull request. Use with `only-new-issues` option.
  pull-requests: read
jobs:
  golangci:
    strategy:
      matrix:
        include:
          - GOOS: windows
          - GOOS: linux
          - GOOS: darwin
    name: lint
    runs-on: ubuntu-latest
    steps:
      - name: Echo details
        env:
          GOOS: ${{ matrix.GOOS }}
        run: echo Go GOOS=$GOOS

      - uses: actions/checkout@v3

      - uses: actions/setup-go@v3
        with:
          go-version-file: .go-version

      - name: golangci-lint
        env:
          GOOS: ${{ matrix.GOOS }}
          CGO_ENABLED: 1
        uses: golangci/golangci-lint-action@v3
        with:
          # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
          version: v1.47.2

          # Give the job more time to execute.
          # Regarding `--whole-files`, the linter is supposed to support linting of changed a patch only but,
          # for some reason, it's very unreliable this way - sometimes it does not report any or some
          # issues without linting the whole files, so we have to use `--whole-files`
          # which can lead to some frustration from developers who would like to
          # fix a single line in an existing codebase and the linter would force them
          # into fixing all linting issues in the whole file instead
          args: --timeout=30m --whole-files

          # Optional: if set to true then the action will use pre-installed Go.
          skip-go-installation: true

          # Optional: show only new issues if it's a pull request. The default value is `false`.
          only-new-issues: true

Go version

go1.18.9

Code example or link to a public repository

https://github.com/elastic/beats/pull/34044/files#annotation_7094626396

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions