Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/tools/gopls: incorrect error messages for inner module appearing in nested module #49105

Closed
unconsolable opened this issue Oct 15, 2021 · 9 comments
Labels
FrozenDueToAge gopls Issues related to the Go language server, gopls. release-blocker Tools This label describes issues relating to any tools in the x/tools repository.
Milestone

Comments

@unconsolable
Copy link

What version of Go, VS Code & VS Code Go extension are you using?

Version Information
  • Run go version to get version of Go from the VS Code integrated terminal.
    • go version go1.17.2 linux/amd64
  • Run gopls -v version to get version of Gopls from the VS Code integrated terminal.
Build info
----------
golang.org/x/tools/gopls v0.7.2
    golang.org/x/tools/gopls@v0.7.2 h1:kRKKdvA8GOzra8rhSFDClOR7hV/x8v0J0Vm4C/gWq8s=
    github.com/BurntSushi/toml@v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
    github.com/google/go-cmp@v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
    github.com/sergi/go-diff@v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
    golang.org/x/mod@v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
    golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
    golang.org/x/sys@v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=
    golang.org/x/tools@v0.1.6-0.20210908190839-cf92b39a962c h1:C0nyHiBU2m0cR6hDiUORWqQIt3h37wsp1255QBSSXqY=
    golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
    honnef.co/go/tools@v0.2.0 h1:ws8AfbgTX3oIczLPNPCu5166oBg9ST2vNs0rcht+mDE=
    mvdan.cc/gofumpt@v0.1.1 h1:bi/1aS/5W00E2ny5q65w9SnKpWEF/UIOqDYBILpo9rA=
    mvdan.cc/xurls/v2@v2.3.0 h1:59Olnbt67UKpxF1EwVBopJvkSUBmgtb468E4GVWIZ1I=
  • Run code -v or code-insiders -v to get version of VS Code or VS Code Insiders.
1.61.1
c13f1abb110fc756f9b3a6f16670df9cd9d4cf63
x64
  • Check your installed extensions to get the version of the VS Code Go extension
    • v0.28.1
  • Run Ctrl+Shift+P (Cmd+Shift+P on Mac OS) > Go: Locate Configured Go Tools command.
Checking configured tools....
GOBIN: undefined
toolsGopath: 
gopath: /home/chen/go
GOROOT: /usr/local/go
PATH: /home/chen/.vscode-server/bin/c13f1abb110fc756f9b3a6f16670df9cd9d4cf63/bin:/home/chen/.tiup/bin:/home/chen/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/WindowsApps/Microsoft.WindowsTerminal_1.10.2714.0_x64__8wekyb3d8bbwe:/mnt/c/Program Files (x86)/VMware/VMware Player/bin/:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/ProgramData/DockerDesktop/version-bin:/mnt/c/Users/chen/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/chen/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Program Files/JetBrains/DataGrip 2020.2.3/bin:/mnt/c/Program Files/JetBrains/CLion 2021.1.3/bin:/mnt/c/Program Files/JetBrains/GoLand 2021.2/bin:/mnt/c/Users/chen/AppData/Local/Microsoft/WindowsApps:/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2021.2.2/bin:/snap/bin:/usr/local/go/bin

	go:	/usr/local/go/bin/go: go version go1.17.2 linux/amd64

	gopkgs:	/home/chen/go/bin/gopkgs: go1.17.1
		path	github.com/uudashr/gopkgs/v2/cmd/gopkgs
		mod	github.com/uudashr/gopkgs/v2	v2.1.2	h1:A0+QH6wqNRHORJnxmqfeuBEsK4nYQ7pgcOHhqpqcrpo=
		dep	github.com/karrick/godirwalk	v1.12.0	h1:nkS4xxsjiZMvVlazd0mFyiwD4BR9f3m6LXGhM2TUx3Y=
		dep	github.com/pkg/errors	v0.8.1	h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
	
	go-outline:	/home/chen/go/bin/go-outline: go1.17.1
		path	github.com/ramya-rao-a/go-outline
		mod	github.com/ramya-rao-a/go-outline	v0.0.0-20210608161538-9736a4bde949	h1:iaD+iVf9xGfajsJp+zYrg9Lrk6gMJ6/hZHO4cYq5D5o=
		dep	golang.org/x/tools	v0.1.1	h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs=
	
	gotests:	/home/chen/go/bin/gotests: go1.17.1
		path	github.com/cweill/gotests/gotests
		mod	github.com/cweill/gotests	v1.6.0	h1:KJx+/p4EweijYzqPb4Y/8umDCip1Cv6hEVyOx0mE9W8=
		dep	golang.org/x/tools	v0.0.0-20191109212701-97ad0ed33101	h1:LCmXVkvpQCDj724eX6irUTPCJP5GelFHxqGSWL2D1R0=
	
	gomodifytags:	/home/chen/go/bin/gomodifytags: go1.17.1
		path	github.com/fatih/gomodifytags
		mod	github.com/fatih/gomodifytags	v1.14.0	h1:4D0ZKYMUgY3bvDn2S7TwOJAsgg5o3UhpwDZtkP9FviU=
		dep	github.com/fatih/camelcase	v1.0.0	h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
		dep	github.com/fatih/structtag	v1.2.0	h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
		dep	golang.org/x/tools	v0.0.0-20180824175216-6c1c5e93cdc1	h1:EAPsk8kfGCjxQagrkWjzXlUWe2p3gj5MknO+z2o9GKc=
	
	impl:	/home/chen/go/bin/impl: go1.17.1
		path	github.com/josharian/impl
		mod	github.com/josharian/impl	v1.1.0	h1:gafhg1OFVMq46ifdkBa8wp4hlGogjktjjA5h/2j4+2k=
		dep	golang.org/x/mod	v0.2.0	h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
		dep	golang.org/x/tools	v0.0.0-20200522201501-cb1345f3a375	h1:SjQ2+AKWgZLc1xej6WSzL+Dfs5Uyd5xcZH1mGC411IA=
		dep	golang.org/x/xerrors	v0.0.0-20191204190536-9bdfabe68543	h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
	
	goplay:	/home/chen/go/bin/goplay: go1.17.1
		path	github.com/haya14busa/goplay/cmd/goplay
		mod	github.com/haya14busa/goplay	v1.0.0	h1:ED4BMrGQ3WH7H3YXrcnWMVzj1xeSepaYTkLh1DtFi/4=
		dep	github.com/skratchdot/open-golang	v0.0.0-20200116055534-eef842397966	h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
	
	dlv:	/home/chen/go/bin/dlv: go1.17.1
		path	github.com/go-delve/delve/cmd/dlv
		mod	github.com/go-delve/delve	v1.7.1	h1:RJWK3sLJ/zY25ng6Q9oNsyo5Rmr2PAEWuyFoD1axlbg=
		dep	github.com/cosiner/argv	v0.1.0	h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg=
		dep	github.com/cpuguy83/go-md2man/v2	v2.0.0	h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
		dep	github.com/derekparker/trie	v0.0.0-20200317170641-1fdf38b7b0e9	h1:G765iDCq7bP5opdrPkXk+4V3yfkgV9iGFuheWZ/X/zY=
		dep	github.com/google/go-dap	v0.5.0	h1:RMHAVn5xeunBakYk65ggHXttk6qjZVdbmi+xhAoL2wY=
		dep	github.com/hashicorp/golang-lru	v0.5.4	h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
		dep	github.com/mattn/go-isatty	v0.0.3	h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
		dep	github.com/peterh/liner	v0.0.0-20170317030525-88609521dc4b	h1:8uaXtUkxiy+T/zdLWuxa/PG4so0TPZDZfafFNNSaptE=
		dep	github.com/russross/blackfriday/v2	v2.0.1	h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
		dep	github.com/shurcooL/sanitized_anchor_name	v1.0.0	h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
		dep	github.com/sirupsen/logrus	v1.6.0	h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
		dep	github.com/spf13/cobra	v1.1.3	h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M=
		dep	github.com/spf13/pflag	v1.0.5	h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
		dep	go.starlark.net	v0.0.0-20200821142938-949cc6f4b097	h1:YiRMXXgG+Pg26t1fjq+iAjaauKWMC9cmGFrtOEuwDDg=
		dep	golang.org/x/arch	v0.0.0-20190927153633-4e8777c89be4	h1:QlVATYS7JBoZMVaf+cNjb90WD/beKVHnIxFKT4QaHVI=
		dep	golang.org/x/sys	v0.0.0-20210514084401-e8d321eab015	h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
		dep	gopkg.in/yaml.v2	v2.4.0	h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
	
	dlv-dap:	/home/chen/go/bin/dlv-dap: go1.17.1
		path	github.com/go-delve/delve/cmd/dlv
		mod	github.com/go-delve/delve	v1.7.2-0.20210913214221-53eed299004f	h1:7gckWljOSrhqSxhGGm/iLLuTDIQS53Bs8EC0dzQiVm8=
		dep	github.com/cosiner/argv	v0.1.0	h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg=
		dep	github.com/cpuguy83/go-md2man/v2	v2.0.0	h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
		dep	github.com/derekparker/trie	v0.0.0-20200317170641-1fdf38b7b0e9	h1:G765iDCq7bP5opdrPkXk+4V3yfkgV9iGFuheWZ/X/zY=
		dep	github.com/google/go-dap	v0.5.1-0.20210713061233-c91b005e3987	h1:aghNk+kvabZ5I1OC3cNHWvfZ8svcoDLAGyKYimqyGVk=
		dep	github.com/hashicorp/golang-lru	v0.5.4	h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
		dep	github.com/mattn/go-isatty	v0.0.3	h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
		dep	github.com/peterh/liner	v0.0.0-20170317030525-88609521dc4b	h1:8uaXtUkxiy+T/zdLWuxa/PG4so0TPZDZfafFNNSaptE=
		dep	github.com/russross/blackfriday/v2	v2.0.1	h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
		dep	github.com/shurcooL/sanitized_anchor_name	v1.0.0	h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
		dep	github.com/sirupsen/logrus	v1.6.0	h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
		dep	github.com/spf13/cobra	v1.1.3	h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M=
		dep	github.com/spf13/pflag	v1.0.5	h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
		dep	go.starlark.net	v0.0.0-20200821142938-949cc6f4b097	h1:YiRMXXgG+Pg26t1fjq+iAjaauKWMC9cmGFrtOEuwDDg=
		dep	golang.org/x/arch	v0.0.0-20190927153633-4e8777c89be4	h1:QlVATYS7JBoZMVaf+cNjb90WD/beKVHnIxFKT4QaHVI=
		dep	golang.org/x/sys	v0.0.0-20210514084401-e8d321eab015	h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
		dep	gopkg.in/yaml.v2	v2.4.0	h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
	
	staticcheck:	/home/chen/go/bin/staticcheck: go1.17.1
		path	honnef.co/go/tools/cmd/staticcheck
		mod	honnef.co/go/tools	v0.2.1	h1:/EPr//+UMMXwMTkXvCCoaJDq8cpjMO80Ou+L4PDo2mY=
		dep	github.com/BurntSushi/toml	v0.3.1	h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
		dep	golang.org/x/mod	v0.3.0	h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
		dep	golang.org/x/sys	v0.0.0-20210119212857-b64e53b001e4	h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
		dep	golang.org/x/tools	v0.1.0	h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
		dep	golang.org/x/xerrors	v0.0.0-20200804184101-5ec99f83aff1	h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
	
	gopls:	/home/chen/go/bin/gopls: go1.17.1
		path	golang.org/x/tools/gopls
		mod	golang.org/x/tools/gopls	v0.7.2	h1:kRKKdvA8GOzra8rhSFDClOR7hV/x8v0J0Vm4C/gWq8s=
		dep	github.com/BurntSushi/toml	v0.4.1	h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
		dep	github.com/google/go-cmp	v0.5.6	h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
		dep	github.com/sergi/go-diff	v1.1.0	h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
		dep	golang.org/x/mod	v0.4.2	h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
		dep	golang.org/x/sync	v0.0.0-20210220032951-036812b2e83c	h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
		dep	golang.org/x/sys	v0.0.0-20210809222454-d867a43fc93e	h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=
		dep	golang.org/x/tools	v0.1.6-0.20210908190839-cf92b39a962c	h1:C0nyHiBU2m0cR6hDiUORWqQIt3h37wsp1255QBSSXqY=
		dep	golang.org/x/xerrors	v0.0.0-20200804184101-5ec99f83aff1	h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
		dep	honnef.co/go/tools	v0.2.0	h1:ws8AfbgTX3oIczLPNPCu5166oBg9ST2vNs0rcht+mDE=
		dep	mvdan.cc/gofumpt	v0.1.1	h1:bi/1aS/5W00E2ny5q65w9SnKpWEF/UIOqDYBILpo9rA=
		dep	mvdan.cc/xurls/v2	v2.3.0	h1:59Olnbt67UKpxF1EwVBopJvkSUBmgtb468E4GVWIZ1I=
	

go env
Workspace Folder (tidb): /home/chen/tidb
	GO111MODULE="on"
	GOARCH="amd64"
	GOBIN=""
	GOCACHE="/home/chen/.cache/go-build"
	GOENV="/home/chen/.config/go/env"
	GOEXE=""
	GOEXPERIMENT=""
	GOFLAGS=""
	GOHOSTARCH="amd64"
	GOHOSTOS="linux"
	GOINSECURE=""
	GOMODCACHE="/home/chen/go/pkg/mod"
	GONOPROXY=""
	GONOSUMDB=""
	GOOS="linux"
	GOPATH="/home/chen/go"
	GOPRIVATE=""
	GOPROXY="https://goproxy.cn"
	GOROOT="/usr/local/go"
	GOSUMDB="sum.golang.org"
	GOTMPDIR=""
	GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
	GOVCS=""
	GOVERSION="go1.17.2"
	GCCGO="gccgo"
	AR="ar"
	CC="gcc"
	CXX="g++"
	CGO_ENABLED="1"
	GOMOD="/home/chen/tidb/go.mod"
	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 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build4033385128=/tmp/go-build -gno-record-gcc-switches"

Share the Go related settings you have added/edited

Run Preferences: Open Settings (JSON) command to open your settings.json file.
Share all the settings with the go. or ["go"] or gopls prefixes.

"go.useLanguageServer": true,
"go.toolsManagement.autoUpdate": true,

Describe the bug

When I open github.com/pingcap/tidb via VS Code and this extension, it wrongly report error as follows

{
	"resource": "/home/chen/tidb/parser/goyacc/format_yacc.go",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": {
		"value": "BrokenImport",
		"target": {
			"$mid": 1,
			"external": "https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source%3Dgopls#BrokenImport",
			"path": "/golang.org/x/tools/internal/typesinternal",
			"scheme": "https",
			"authority": "pkg.go.dev",
			"query": "utm_source=gopls",
			"fragment": "BrokenImport"
		}
	},
	"severity": 8,
	"message": "could not import github.com/cznic/parser/yacc (no required module provides package \"github.com/cznic/parser/yacc\")",
	"source": "compiler",
	"startLineNumber": 26,
	"startColumn": 9,
	"endLineNumber": 26,
	"endColumn": 39
}
{
	"resource": "/home/chen/tidb/parser/goyacc/format_yacc.go",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": {
		"value": "BrokenImport",
		"target": {
			"$mid": 1,
			"external": "https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source%3Dgopls#BrokenImport",
			"path": "/golang.org/x/tools/internal/typesinternal",
			"scheme": "https",
			"authority": "pkg.go.dev",
			"query": "utm_source=gopls",
			"fragment": "BrokenImport"
		}
	},
	"severity": 8,
	"message": "could not import github.com/cznic/strutil (no required module provides package \"github.com/cznic/strutil\")",
	"source": "compiler",
	"startLineNumber": 27,
	"startColumn": 2,
	"endLineNumber": 27,
	"endColumn": 28
}
{
	"resource": "/home/chen/tidb/parser/goyacc/main.go",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": {
		"value": "BrokenImport",
		"target": {
			"$mid": 1,
			"external": "https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source%3Dgopls#BrokenImport",
			"path": "/golang.org/x/tools/internal/typesinternal",
			"scheme": "https",
			"authority": "pkg.go.dev",
			"query": "utm_source=gopls",
			"fragment": "BrokenImport"
		}
	},
	"severity": 8,
	"message": "could not import github.com/cznic/y (no required module provides package \"github.com/cznic/y\")",
	"source": "compiler",
	"startLineNumber": 148,
	"startColumn": 2,
	"endLineNumber": 148,
	"endColumn": 22
}

However, actually everything is fine, the program can be complied. Also, when I open the parser/ directory, it will not report BrokenImport errors any more.

Steps to reproduce the behavior:

  1. Clone the repo github.com/pingcap/tidb on local machine, install needed dependencies.
  2. Open the repo directory tidb via VSCode and go extension, it will report error as shown.
  3. Open the sub directory tidb/parser via VSCode and go extension, it will not report error any more.

Screenshots or recordings

image

@stamblerre
Copy link
Contributor

Can you please share your gopls logs? Information on how to capture them can be found here.

@unconsolable
Copy link
Author

Can you please share your gopls logs? Information on how to capture them can be found here.

I added these to settings

{
    "go.languageServerFlags": [
        "-rpc.trace"
    ],
    "gopls": {
        "verboseOutput": true
    }
}

and copied log to this gist https://gist.github.com/unconsolable/b0969b8ecb4c85aee25636fd926a5290
Thank you for your attention.

@suzmue
Copy link
Contributor

suzmue commented Oct 19, 2021

Thanks for providing the logs @unconsolable.

It looks like you are working with nested modules. You can see more information about setting up your editor to work with nested modules here: https://github.com/golang/tools/blob/master/gopls/doc/workspace.md#multiple-modules

@suzmue
Copy link
Contributor

suzmue commented Oct 19, 2021

I was able to reproduce the issue using the go command, where the error is produced only in the outer module:

Output when running go list from github.com/pingcap/tidb:

{
	"ImportPath": "github.com/cznic/parser/yacc",
	"DepOnly": true,
	"Incomplete": true,
	"Stale": true,
	"StaleReason": "build ID mismatch",
	"Error": {
		"ImportStack": [
			"github.com/pingcap/tidb/parser/goyacc"
		],
		"Pos": "parser/goyacc/format_yacc.go:26:2",
		"Err": "missing go.sum entry for module providing package github.com/cznic/parser/yacc (imported by github.com/pingcap/tidb/parser/goyacc); to add:\n\tgo get github.com/pingcap/tidb/parser/goyacc@v0.0.0-20211011031125-9b13dc409c5e"
	}
}

Output when running go list from github.com/pingcap/tidb/parser:

{
	"Dir": "/Users/suzmue/go/pkg/mod/github.com/cznic/parser@v0.0.0-20160622100904-31edd927e5b1/yacc",
	"ImportPath": "github.com/cznic/parser/yacc",
	"Name": "parser",
	"Doc": "Package parser implements a parser for yacc source files.",
	"Root": "/Users/suzmue/go/pkg/mod/github.com/cznic/parser@v0.0.0-20160622100904-31edd927e5b1",
	"Module": {
		"Path": "github.com/cznic/parser",
		"Version": "v0.0.0-20160622100904-31edd927e5b1",
		"Time": "2016-06-22T10:09:04Z",
		"Dir": "/Users/suzmue/go/pkg/mod/github.com/cznic/parser@v0.0.0-20160622100904-31edd927e5b1",
		"GoMod": "/Users/suzmue/go/pkg/mod/cache/download/github.com/cznic/parser/@v/v0.0.0-20160622100904-31edd927e5b1.mod"
	},
	"DepOnly": true,
	"Stale": true,
	"StaleReason": "not installed but available in build cache",
	"GoFiles": [
		"api.go",
		"ast.go",
		"goscanner.go",
		"lexer.go",
		"parser.go",
		"scanner.go"
	],
	"IgnoredGoFiles": [
		"generate.go"
	],
	"Imports": [
		"bytes",
		"fmt",
		"github.com/cznic/golex/lex",
		"github.com/cznic/strutil",
		"go/scanner",
		"go/token",
		"io",
		"reflect",
		"sort",
		"strconv",
		"strings"
	],
	"Deps": [
		"bytes",
		"encoding/base32",
		"encoding/base64",
		"encoding/binary",
		"errors",
		"fmt",
		"github.com/cznic/golex/lex",
		"github.com/cznic/strutil",
		"go/scanner",
		"go/token",
		"internal/abi",
		"internal/bytealg",
		"internal/cpu",
		"internal/fmtsort",
		"internal/goexperiment",
		"internal/itoa",
		"internal/oserror",
		"internal/poll",
		"internal/race",
		"internal/reflectlite",
		"internal/syscall/execenv",
		"internal/syscall/unix",
		"internal/testlog",
		"internal/unsafeheader",
		"io",
		"io/fs",
		"math",
		"math/bits",
		"os",
		"path",
		"path/filepath",
		"reflect",
		"runtime",
		"runtime/internal/atomic",
		"runtime/internal/math",
		"runtime/internal/sys",
		"sort",
		"strconv",
		"strings",
		"sync",
		"sync/atomic",
		"syscall",
		"time",
		"unicode",
		"unicode/utf8",
		"unsafe"
	],
	"TestGoFiles": [
		"all_test.go",
		"ast_test.go"
	],
	"TestImports": [
		"flag",
		"fmt",
		"go/token",
		"io/ioutil",
		"os",
		"path",
		"path/filepath",
		"runtime",
		"strings",
		"testing"
	]
}

@unconsolable
Copy link
Author

I'm a bit confused. Tried on multiply workspace and experimental workspace module mode, all of them can not resolve the problem. After running go get -d github.com/pingcap/tidb/parser/goyacc@v0.0.0-20211011031125-9b13dc409c5e in github.com/pingcap/tidb according to the err msg, some entries are added to go.sum, and it seems that the error won't report. However, after run go mod tidy, these entries are removed.
So, is this a issue belongs to github.com/pingcap/tidb or gopls? Where should I report the issue?
Thanks for your advice.

@suzmue
Copy link
Contributor

suzmue commented Oct 21, 2021

This is not an issue with tidb, but an issue with gopls. We are working on improving multi-module support.

I will transfer this issue to gopls to track.

@suzmue suzmue changed the title Wrongly report error on BrokenImport x/tools/gopls: incorrect error messages for inner module appearing in nested module Oct 21, 2021
@suzmue suzmue transferred this issue from golang/vscode-go Oct 21, 2021
@gopherbot gopherbot added Tools This label describes issues relating to any tools in the x/tools repository. gopls Issues related to the Go language server, gopls. labels Oct 21, 2021
@gopherbot gopherbot added this to the Unreleased milestone Oct 21, 2021
@stamblerre stamblerre added this to To Do in multi-module workspaces via automation Oct 21, 2021
@findleyr
Copy link
Contributor

CC @matloob, who is going to be looking at multi-module support in gopls.

@findleyr findleyr modified the milestones: Unreleased, gopls/unplanned Oct 29, 2021
@gopherbot
Copy link

Change https://golang.org/cl/365737 mentions this issue: internal/lsp/cache: fix resolution of the go directive in multi-module

gopherbot pushed a commit to golang/tools that referenced this issue Nov 19, 2021
workspaces

Go versions are not valid semver, so we were always resolving Go 1.12 in
the workspace module. This matters with lazy module loading.

Fixes golang/go#49668
Updates golang/go#49105
Fixes golang/go#48364

Change-Id: Iae4f5f6e17df4be1f4d6ee9d3f439efa3cf658d3
Reviewed-on: https://go-review.googlesource.com/c/tools/+/365737
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
@findleyr
Copy link
Contributor

I believe this is fixed by CL 365737. Please reopen if I'm misunderstanding.

multi-module workspaces automation moved this from To Do to Done Dec 15, 2021
@golang golang locked and limited conversation to collaborators Dec 15, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge gopls Issues related to the Go language server, gopls. release-blocker Tools This label describes issues relating to any tools in the x/tools repository.
Projects
No open projects
Development

No branches or pull requests

5 participants