go/internal/lsp/analysis
Marwan Sulaiman 70c3ea29e2 gopls,internal/lsp: Implement method stubbing via CodeAction
This CL adds a quickfix CodeAction that detects "missing method"
compiler errors and suggests adding method stubs to the concrete
type that would implement the interface. There are many ways that
a user might indicate a concrete type is meant to be used as an interface.
This PR detects two types of those errors: variable declaration and function returns.
For variable declarations, things like the following should be detected:
1. var _ SomeInterface = SomeType{}
2. var _ = SomeInterface(SomeType{})
3. var _ SomeInterface = (*SomeType)(nil)
For function returns, the following example is the primary detection:
func newIface() SomeInterface {
	return &SomeType{}
}
More detections can be added in the future of course.

Fixes golang/go#37537

Change-Id: Ibb7784622184c9885eff2ccc786767682876b4d3
Reviewed-on: https://go-review.googlesource.com/c/tools/+/274372
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-02-16 19:42:34 +00:00
..
fillreturns internal/lsp/analysis/fillreturns: update fillreturns for new type errs 2021-12-03 18:55:02 +00:00
fillstruct internal/lsp: disable fillstruct for type params 2021-10-15 14:09:01 +00:00
infertypeargs internal/typeparams: simplify the IndexExpr API 2022-01-19 20:29:28 +00:00
nonewvars internal/lsp/analysis: add typeparams tests for nonewvars and noresultvalues 2021-10-13 04:56:02 +00:00
noresultvalues internal/lsp/analysis/noresultvalues: update for CL 379116 error message change 2022-01-18 21:28:05 +00:00
simplifycompositelit gopls: fix various staticcheck errors 2020-09-29 17:30:36 +00:00
simplifyrange internal/lsp: make sure that `gofmt -s` analyses don't modify AST 2020-04-06 21:01:14 +00:00
simplifyslice internal/lsp: add parameterized slice test for simplifyslice analysis 2021-10-01 15:56:03 +00:00
stubmethods gopls,internal/lsp: Implement method stubbing via CodeAction 2022-02-16 19:42:34 +00:00
undeclaredname internal/lsp/analysis/undeclaredname: suppress impossible quick fixes 2022-02-09 19:35:26 +00:00
unusedparams internal/lsp: add suggested fix for unusedparams analysis 2022-01-14 17:47:02 +00:00
useany internal/lsp/analysis: add a useany analyzer 2021-09-22 22:01:06 +00:00