golang/go

x/tools/gopls: completion of array pointer assignment to element-typed variable results in incorrect dereferencing

Open

#76,202 opened on Nov 6, 2025

 (3 comments) (0 reactions) (0 assignees)Go (19,008 forks)batch import

Repository metrics

Stars
 (133,883 stars)
PR merge metrics
 (PR metrics pending)

Description

gopls version

Build info

golang.org/x/tools/gopls v0.20.0 golang.org/x/tools/gopls@v0.20.0 h1:fxOYZXKl6IsOTKIh6IgjDbIDHlr5btOtOUkrGOgFDB4= github.com/BurntSushi/toml@v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/fatih/camelcase@v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/gomodifytags@v1.17.1-0.20250423142747-f3939df9aa3c h1:dDSgAjoOMp8da3egfz0t2S+t8RGOpEmEXZubcGuc0Bg= github.com/fatih/structtag@v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fsnotify/fsnotify@v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/google/go-cmp@v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= golang.org/x/exp/typeparams@v0.0.0-20250620022241-b7579e27df2b h1:KdrhdYPDUvJTvrDK9gdjfFd6JTk8vA1WJoldYSi0kHo= golang.org/x/mod@v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= golang.org/x/sync@v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sys@v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/telemetry@v0.0.0-20250710130107-8d8967aff50b h1:DU+gwOBXU+6bO0sEyO7o/NeMlxZxCZEvI7v+J4a1zRQ= golang.org/x/text@v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= golang.org/x/tools@v0.35.1-0.20250728180453-01a3475a31bc h1:ZRKyKRJl/YEWl9ScZwd6Ua6xSt7DE6tHp1I3ucMroGM= golang.org/x/vuln@v1.1.4 h1:Ju8QsuyhX3Hk8ma3CesTbO8vfJD9EvUBgHvkxHBzj0I= honnef.co/go/tools@v0.7.0-0.dev.0.20250523013057-bbc2f4dd71ea h1:fj8r9irJSpolAGUdZBxJIRY3lLc4jH2Dt4lwnWyWwpw= mvdan.cc/gofumpt@v0.8.0 h1:nZUCeC2ViFaerTcYKstMmfysj6uhQrA2vJe+2vwGU6k= mvdan.cc/xurls/v2@v2.6.0 h1:3NTZpeTxYVWNSokW3MKeyVkz/j7uYXYiMtXRUfmjbgI= go: go1.25.0

go env

AR='ar'
CC='clang'
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_ENABLED='1'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
CXX='clang++'
GCCGO='gccgo'
GO111MODULE='on'
GOARCH='arm64'
GOARM64='v8.0'
GOAUTH='netrc'
GOBIN='/Users/fabianr/go/bin'
GOCACHE='/Users/fabianr/Library/Caches/go-build'
GOCACHEPROG=''
GODEBUG=''
GOENV='/Users/fabianr/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFIPS140='off'
GOFLAGS=''
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/81/cvjd0t010fgbf1nc2p9xcq4w0000gn/T/go-build3104680089=/tmp/go-build -gno-record-gcc-switches -fno-common'
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMOD='/Users/fabianr/svn/be/trunk/gamelogic/gohome/src/elk/go.mod'
GOMODCACHE='/Users/fabianr/svn/be/trunk/gamelogic/gohome/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users/fabianr/svn/be/trunk/gamelogic/gohome'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTELEMETRY='local'
GOTELEMETRYDIR='/Users/fabianr/Library/Application Support/go/telemetry'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.25.3'
GOWORK=''
PKG_CONFIG='pkg-config'

What did you do?

Tried to complete tab into table in

func _(table *[4]int) {
	var _ int = tab
}

What did you see happen?

It got completed into var _ int = *table[] (with the cursor inside the brackets).

What did you expect to see?

Completion into var _ int = table[].

Pointers to slices have the same issue; for them parentheses are required: var _ int = (*table)[]

Editor and settings

VSCode:

{
    "go.toolsManagement.autoUpdate": true,
    "telemetry.telemetryLevel": "off",
    "editor.autoClosingDelete": "always",
    "editor.tabSize": 3,
    "editor.unfoldOnClickAfterEndOfLine": true,
    "editor.fontSize": 10,
    "editor.unicodeHighlight.includeStrings": false,
    "indentRainbow.colors": [
        "rgba(252,255,64,0.14)",
        "rgba(74,255,64,0.14)",
        "rgba(64,228,255,0.14)",
        "rgba(144,64,255,0.14)",
        "rgba(230,64,255,0.14)",
        "rgba(255,64,64,0.14)",
        "rgba(255,173,64,0.14)"
    ],
    "go.addTags": {
        "tags": "json,action",
        "options": "json=omitempty",
        "promptForTags": false,
        "transform": "snakecase",
        "template": "",
    },
    "go.inlayHints.functionTypeParameters": true,
    "editor.minimap.showSlider": "always",
    "editor.minimap.size": "fit",
    "editor.codeActionsOnSave": {
        
    },
    "editor.guides.bracketPairs": true,
    "editor.tabCompletion": "on",
    "editor.wordWrap": "on",
    "workbench.commandPalette.experimental.suggestCommands": true,
    "workbench.editor.defaultBinaryEditor": "default",
    "workbench.editor.highlightModifiedTabs": true,
    "workbench.editor.pinnedTabsOnSeparateRow": true,
    "workbench.editor.wrapTabs": true,
    "go.editorContextMenuCommands": {
        "removeTags": true,
        "fillStruct": true,
        "testFile": true,
        "testPackage": true
    },
    "vscode-pets.throwBallWithMouse": true,
    "vscode-pets.petSize": "large",
    "go.buildTags": "dev",
    "explorer.openEditors.sortOrder": "alphabetical",
    "editor.fontFamily": "Go Mono, Menlo, Monaco, 'Courier New', monospace",
    "editor.rulers": [
        80, 100, 120
    ],
    "cmake.showOptionsMovedNotification": false,
    "editor.unicodeHighlight.ambiguousCharacters": false,
    "workbench.editor.editorActionsLocation": "titleBar",
    "window.density.editorTabHeight": "compact",
    "workbench.editor.openSideBySideDirection": "down",
    "svnBlamer.autoBlame": true,
    "workbench.colorTheme": "Shades of Purple",
    "github.copilot.enable": {
        "*": false,
        "plaintext": false,
        "markdown": false,
        "scminput": false
    },
    "go.inlayHints.constantValues": true,
}

Logs

No response

Contributor guide