Skip to content

x/tools/gopls: cannot handle large files #33372

@tsatke

Description

@tsatke

What version of Go are you using (go version)?

$ go version
go version go1.12.5 darwin/amd64

go version go1.12.7 darwin/amd64

$ gopls version
version v0.1.3, built in $GOPATH mode

Does this issue reproduce with the latest release?

Yes, but differently

What operating system and processor architecture are you using (go env)?

go env 1.12.5 Output
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/user/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/user/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.12.5/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.12.5/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/44/txz_wqq568n4lbh6014ft754hlbqxb/T/go-build952763620=/tmp/go-build -gno-record-gcc-switches -fno-common"
go env 1.12.7 Output
$go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/user/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/user/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.12.7/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.12.7/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/44/txz_wqq568n4lbh6014ft754hlbqxb/T/go-build057133603=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

1.12.5

I generated a 120k LOC with ANTLR, containing some actions (basically code that ANTLR copies from its grammar directly into the code).
I have to implement these actions in a separate file in the same package.
Every time this actions-file is changed and saved, gopls tries to reload the large (unchanged, generated) file, and thus autocompletion on any file is stuck for 10-20 seconds, after what

[Error - 8:49:39 PM] unable to check package: context canceled
	file = file:///Users/user/Development/github.com/gojisvm/gojis/internal/parser/antlr_actions.go

is printed multiple times, but the autocompletion does work again.

1.12.7

Does not print an error, but autocompletion is still stuck for at least 10 seconds.

What did you expect to see?

Pretty much that, but I would like a way to make gopls ignore specific - or in general, generated - files.

What did you see instead?

A practically unusable autocompletion while the file is reloaded.

Maybe related

#33221 , I installed latest instead of master, but it didn't solve the issue (for neither version).

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.goplsIssues related to the Go language server, gopls.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions