Navigation Menu

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: pointer to struct value field/method candidates not offered in type switch #38564

Open
myitcv opened this issue Apr 21, 2020 · 1 comment
Labels
gopls Issues related to the Go language server, gopls. help wanted Tools This label describes issues relating to any tools in the x/tools repository.

Comments

@myitcv
Copy link
Member

myitcv commented Apr 21, 2020

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

$ go version
go version devel +801cd7c84d Thu Apr 2 09:00:44 2020 +0000 linux/amd64
$ go list -m golang.org/x/tools
golang.org/x/tools v0.0.0-20200408132156-9ee5ef7a2c0d
$ go list -m golang.org/x/tools/gopls
golang.org/x/tools/gopls v0.0.0-20200408132156-9ee5ef7a2c0d

Does this issue reproduce with the latest release?

Yes

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

go env Output
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/myitcv/.cache/go-build"
GOENV="/home/myitcv/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/myitcv/gostuff"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/myitcv/gos"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/myitcv/gos/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/myitcv/gostuff/src/github.com/myitcv/govim/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-build844088039=/tmp/go-build -gno-record-gcc-switches"

What did you do?

I haven't been able to reduce the example to anything smaller than this unfortunately:

-- go.mod --
module mod.com

go 1.12

require github.com/yuin/goldmark v1.1.27
-- main.go --
package main

import (
	"io/ioutil"

	"github.com/yuin/goldmark"
	"github.com/yuin/goldmark/ast"
	"github.com/yuin/goldmark/text"
)

func main() {
	input, err := ioutil.ReadFile("input.md")
	if err != nil {
		panic(err)
	}
	p := goldmark.DefaultParser()
	r := text.NewReader(input)
	node := p.Parse(r)
	ast.Walk(node, func(n ast.Node, entering bool) (ast.WalkStatus, error) {
		if !entering {
			return ast.WalkContinue, nil
		}
		switch node := node.(type) {
		case *ast.HTMLBlock:
			node.
		case *ast.FencedCodeBlock:
		}
		return ast.WalkContinue, nil
	})
}

Attempting completion after node. in the *ast.HTMLBlock: case does not give any of the field/method candidates that should be offered for a value of type *ast.HTMLBlock. Instead we get:

Candidates
&protocol.CompletionList{
    IsIncomplete: true,
    Items:        {
        {
            Label:            "node",
            Kind:             6,
            Tags:             nil,
            Detail:           "*ast.HTMLBlock",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        true,
            SortText:         "00000",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "node",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "entering",
            Kind:             6,
            Tags:             nil,
            Detail:           "bool",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00001",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "entering",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "n",
            Kind:             6,
            Tags:             nil,
            Detail:           "ast.Node",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00002",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "n",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "err",
            Kind:             6,
            Tags:             nil,
            Detail:           "error",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00003",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "err",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "input",
            Kind:             6,
            Tags:             nil,
            Detail:           "[]byte",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00004",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "input",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "p",
            Kind:             6,
            Tags:             nil,
            Detail:           "parser.Parser",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00005",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "p",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "r",
            Kind:             6,
            Tags:             nil,
            Detail:           "text.Reader",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00006",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "r",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "ast",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"github.com/yuin/goldmark/ast\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00007",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "ast",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "goldmark",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"github.com/yuin/goldmark\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00008",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "goldmark",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "ioutil",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"io/ioutil\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00009",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "ioutil",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "text",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"github.com/yuin/goldmark/text\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00010",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "text",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "main",
            Kind:             3,
            Tags:             nil,
            Detail:           "func()",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00011",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "main",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "append",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(slice []Type, elems ...Type) []Type",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00012",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "append",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "bool",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00013",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "bool",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "byte",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00014",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "byte",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "cap",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(v Type) int",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00015",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "cap",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "close",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(c chan<- Type)",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00016",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "close",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "complex",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(r float64, i float64) complex128",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00017",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "complex",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "complex128",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00018",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "complex128",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "complex64",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00019",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "complex64",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "copy",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(dst []Type, src []Type) int",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00020",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "copy",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "delete",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(m map[Type]Type1, key Type)",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00021",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "delete",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "error",
            Kind:             8,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00022",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "error",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "false",
            Kind:             21,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00023",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "false",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "float32",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00024",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "float32",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "float64",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00025",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "float64",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "imag",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(c complex128) float64",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00026",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "imag",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "int",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00027",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "int",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "int16",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00028",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "int16",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "int32",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00029",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "int32",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "int64",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00030",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "int64",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "int8",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00031",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "int8",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "len",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(v Type) int",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00032",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "len",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "make",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(t Type, size ...int) Type",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00033",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "make",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "new",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(Type) *Type",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00034",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "new",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "panic",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(v interface{})",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00035",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "panic",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "print",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(args ...Type)",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00036",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "print",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "println",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(args ...Type)",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00037",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "println",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "real",
            Kind:             3,
            Tags:             nil,
            Detail:           "func(c complex128) float64",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00038",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "real",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "recover",
            Kind:             3,
            Tags:             nil,
            Detail:           "func() interface{}",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00039",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "recover",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "rune",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00040",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "rune",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "string",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00041",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "string",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "true",
            Kind:             21,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00042",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "true",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "uint",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00043",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "uint",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "uint16",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00044",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "uint16",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "uint32",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00045",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "uint32",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "uint64",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00046",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "uint64",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "uint8",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00047",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "uint8",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "uintptr",
            Kind:             7,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00048",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "uintptr",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "nil",
            Kind:             6,
            Tags:             nil,
            Detail:           "",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00049",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "nil",
            },
            AdditionalTextEdits: nil,
            CommitCharacters:    nil,
            Command:             (*protocol.Command)(nil),
            Data:                nil,
        },
        {
            Label:            "atomic",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"sync/atomic\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00050",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "atomic",
            },
            AdditionalTextEdits: {
                {
                    Range: protocol.Range{
                        Start: protocol.Position{Line:4, Character:0},
                        End:   protocol.Position{Line:4, Character:0},
                    },
                    NewText: "\t\"sync/atomic\"\n",
                },
            },
            CommitCharacters: nil,
            Command:          (*protocol.Command)(nil),
            Data:             nil,
        },
        {
            Label:            "reflect",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"reflect\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00051",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "reflect",
            },
            AdditionalTextEdits: {
                {
                    Range: protocol.Range{
                        Start: protocol.Position{Line:4, Character:0},
                        End:   protocol.Position{Line:4, Character:0},
                    },
                    NewText: "\t\"reflect\"\n",
                },
            },
            CommitCharacters: nil,
            Command:          (*protocol.Command)(nil),
            Data:             nil,
        },
        {
            Label:            "runtime",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"runtime\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00052",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "runtime",
            },
            AdditionalTextEdits: {
                {
                    Range: protocol.Range{
                        Start: protocol.Position{Line:4, Character:0},
                        End:   protocol.Position{Line:4, Character:0},
                    },
                    NewText: "\t\"runtime\"\n",
                },
            },
            CommitCharacters: nil,
            Command:          (*protocol.Command)(nil),
            Data:             nil,
        },
        {
            Label:            "utf8",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"unicode/utf8\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00053",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "utf8",
            },
            AdditionalTextEdits: {
                {
                    Range: protocol.Range{
                        Start: protocol.Position{Line:4, Character:0},
                        End:   protocol.Position{Line:4, Character:0},
                    },
                    NewText: "\t\"unicode/utf8\"\n",
                },
            },
            CommitCharacters: nil,
            Command:          (*protocol.Command)(nil),
            Data:             nil,
        },
        {
            Label:            "testlog",
            Kind:             9,
            Tags:             nil,
            Detail:           "\"internal/testlog\"",
            Documentation:    "",
            Deprecated:       false,
            Preselect:        false,
            SortText:         "00054",
            FilterText:       "node",
            InsertText:       "",
            InsertTextFormat: 1,
            TextEdit:         &protocol.TextEdit{
                Range: protocol.Range{
                    Start: protocol.Position{Line:24, Character:8},
                    End:   protocol.Position{Line:24, Character:8},
                },
                NewText: "testlog",
            },
            AdditionalTextEdits: {
                {
                    Range: protocol.Range{
                        Start: protocol.Position{Line:3, Character:3},
                        End:   protocol.Position{Line:3, Character:3},
                    },
                    NewText: "nternal/testlog\"\n\t\"i",
                },
            },
            CommitCharacters: nil,
            Command:          (*protocol.Command)(nil),
            Data:             nil,
        },
    },
}

What did you expect to see?

The field/method candidates for the *ast.HTMLBlock value.

What did you see instead?

As above


cc @stamblerre @muirdm

FYI @leitzler

@myitcv myitcv added NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. gopls Issues related to the Go language server, gopls. labels Apr 21, 2020
@gopherbot gopherbot added this to the Unreleased milestone Apr 21, 2020
@gopherbot gopherbot added the Tools This label describes issues relating to any tools in the x/tools repository. label Apr 21, 2020
@muirdm
Copy link

muirdm commented Apr 21, 2020

This is due to node. being parsed as an *ast.BadStmt. It is related to the following case keyword looking like the selector. Perhaps we can add another AST fix to handle this case.

@stamblerre stamblerre modified the milestones: Unreleased, gopls/v0.5.0 Apr 21, 2020
@stamblerre stamblerre removed this from the gopls/v0.5.0 milestone Jun 24, 2020
@stamblerre stamblerre added help wanted and removed NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. labels Jun 24, 2020
@stamblerre stamblerre added this to the gopls/unplanned milestone Oct 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gopls Issues related to the Go language server, gopls. help wanted Tools This label describes issues relating to any tools in the x/tools repository.
Projects
None yet
Development

No branches or pull requests

4 participants