1
0
mirror of https://github.com/golang/go synced 2024-11-18 20:54:40 -07:00
go/internal/lsp/source
Muir Manders 0c330b00b1 internal/lsp: improve literal func completion candidates
Previously we were erroneously suggesting a "func() {}" literal in
cases like:

http.Handle("/", <>)

This was happening because saw that the http.HandlerFunc type
satisfied the http.Handler interface, and that http.HandlerFunc is a
function type. However, of course, you can't pass a function literal
to http.Handle().

Make a few tweaks to address the problem:

1. Don't suggest literal "func () {}" candidates if the expected type
   is an interface type.

2. Suggest named function types that implement an interface. This
   causes us to suggest "http.HandlerFunc()" in the above example.

3. Suggest a func literal candidate inside named function type
   conversions. This will suggest "func() {}" when completing
   "http.HandlerFunc(<>)".

This way the false positive func literal is gone, and you still get
literal candidates that help you use an http.HandlerFunc as an
http.Handler. Note that this particular example is not very compelling
in light of http.HandleFunc() which can take a func literal directly,
but such a convenience function may not exist in other analogous
situations.

Change-Id: Ia68097b9a5b8351921349340d18acd8876554691
Reviewed-on: https://go-review.googlesource.com/c/tools/+/205137
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-11-07 21:18:00 +00:00
..
comment_test.go internal/lsp: convert comments to markdown before sending to client 2019-10-04 18:35:38 +00:00
comment.go internal/lsp: convert comments to markdown before sending to client 2019-10-04 18:35:38 +00:00
completion_format.go internal/lsp: improve variadic completion 2019-11-07 18:57:33 +00:00
completion_keywords.go internal/lsp: add some keyword completions 2019-10-22 20:49:18 +00:00
completion_labels.go internal/lsp: fix label completion in range and type switch stmts 2019-10-22 21:33:09 +00:00
completion_literal.go internal/lsp: improve literal func completion candidates 2019-11-07 21:18:00 +00:00
completion_snippet.go internal/lsp: don't overwrite suffix when inserting completion 2019-10-02 20:07:45 +00:00
completion.go internal/lsp: improve variadic completion 2019-11-07 18:57:33 +00:00
deep_completion.go internal/lsp/source: attach Package to completions when available 2019-11-05 20:21:09 +00:00
diagnostics.go internal/lsp: remove analyzers from Analyze result 2019-10-25 02:35:17 +00:00
errors.go internal/lsp: move the missing imports handling into the metadata 2019-09-25 23:05:17 +00:00
folding_range.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
format.go internal/lsp/source: propose exports for unimported packages 2019-11-04 21:31:03 +00:00
highlight.go internal/lsp: stop cluttering logs with highlight errors 2019-10-07 17:20:23 +00:00
hover.go internal/lsp: don't associate package with snapshot 2019-10-23 20:24:04 +00:00
identifier.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
implementation.go internal/lsp/source: add a nil check on the identifier's object in implementation 2019-11-01 17:58:24 +00:00
imports_test.go internal/lsp/source: attach Package to completions when available 2019-11-05 20:21:09 +00:00
imports.go internal/lsp: search candidate type's package for completions 2019-10-30 06:26:58 +00:00
options.go internal/lsp: add config flag to hide debugging output 2019-11-05 20:43:22 +00:00
references.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
rename_check.go internal/lsp: improve literal func completion candidates 2019-11-07 21:18:00 +00:00
rename.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
signature_help.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
source_test.go tools/gopls: add cmd support for symbols 2019-11-01 17:43:07 +00:00
suggested_fix.go internal/lsp: move error range computations into cache package 2019-10-21 22:12:58 +00:00
symbols.go internal/lsp: stop caching diagnostics on the package 2019-10-24 22:03:59 +00:00
tidy.go internal/lsp: support running go mod tidy as a code action 2019-09-20 13:08:46 +00:00
util.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
view.go internal/lsp: use available type info for unimported completions 2019-11-04 21:31:10 +00:00