Closed
Description
gopls version
Build info
----------
golang.org/x/tools/gopls v0.15.3
golang.org/x/tools/gopls@v0.15.3 h1:zbdOidFrPTc8Bx0YrN5QKgJ0zCjyGi0L27sKQ/bDG5o=
github.com/BurntSushi/toml@v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/google/go-cmp@v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
golang.org/x/exp/typeparams@v0.0.0-20221212164502-fae10dda9338 h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y=
golang.org/x/mod@v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
golang.org/x/sync@v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
golang.org/x/telemetry@v0.0.0-20240209200032-7b892fcb8a78 h1:vcVnuftN4J4UKLRcgetjzfU9FjjgXUUYUc3JhFplgV4=
golang.org/x/text@v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/tools@v0.18.1-0.20240412183611-d92ae0781217 h1:uH9jJYgeLCvblH0S+03kFO0qUDxRkbLRLFiKVVDl7ak=
golang.org/x/vuln@v1.0.1 h1:KUas02EjQK5LTuIx1OylBQdKKZ9jeugs+HiqO5HormU=
honnef.co/go/tools@v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8=
mvdan.cc/gofumpt@v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo=
mvdan.cc/xurls/v2@v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8=
go: go1.22.1
go env
# empty items skipped
GOARCH='amd64'
GOBIN='/Path/To/bin'
GOCACHE='/Volumes/TEMP/gocache'
GOENV='/Path/To/go/env'
GOHOSTARCH='amd64'
GOHOSTOS='darwin'
GOMODCACHE='/Path/To/src/pkg/mod'
GONOPROXY='example.com'
GONOSUMDB='example.com'
GOOS='darwin'
GOPATH='/Path/To/src'
GOPRIVATE='example.com'
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Path/To/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR='/Path/To/TEMP/go'
GOTOOLCHAIN='auto'
GOTOOLDIR='/Path/To/go/pkg/tool/darwin_amd64'
GOVCS='public:git'
GOVERSION='go1.22.3'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/Path/To/project/module/go.mod'
GOWORK='/Path/To/project/go.work'
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/Path/To/TEMP/go/go-build1959820345=/tmp/go-build -gno-record-gcc-switches -fno-common'
What did you do?
I have code that has been generated with fmt.Printf("%#v",somestruct)
in files that are being properly
marked as such with // Code generated with somegen DO NOT EDIT.
header in the first line.
Gopls errornously suggests to simplify Printf produced literals polluting the "Problems"
pane in the IDE (while properly refusing to format file on save).
Repr:
// Code generated with somegen DO NOT EDIT.
package main
import "fmt"
type ProofOB struct{
A [][]string
}
func main(){
// x := ProofOB{A: [][]string{{"some value"}}}
x := ProofOB{A: [][]string{[]string{"some value"}}}
fmt.Printf("%#v\n",x)
}
// Result: main.ProofOB{A:[][]string{[]string{"some value"}}}
What did you see happen?
hundreds of:
[{
"resource": "[...cut...]/generated_test.go",
"owner": "_generated_diagnostic_collection_name_#4",
"code": {
"value": "default",
"target": {
"$mid": 1,
"path": "/golang.org/x/tools/gopls/internal/analysis/simplifycompositelit",
"scheme": "https",
"authority": "pkg.go.dev"
}
},
"severity": 4,
"message": "redundant type from array, slice, or map composite literal",
"source": "simplifycompositelit",
"startLineNumber": 2997,
"startColumn": 104,
"endLineNumber": 2997,
"endColumn": 212,
"tags": [
1
]
}]
What did you expect to see?
I expected Gopls to know from the "Code generated" header that code here CAN NOT be simplified.
Editor and settings
"gopls": {
"ui.diagnostic.analyses": {
"simplifycompositelit": true,
},
"formatting.gofumpt": true,
},
Note: simplifycompositelit
is by default true, but I had to have set it to false as a workaround now.
Logs
No response