diff --git a/internal/lsp/source/completion/completion.go b/internal/lsp/source/completion/completion.go index 4334d6d433..60c404dc5f 100644 --- a/internal/lsp/source/completion/completion.go +++ b/internal/lsp/source/completion/completion.go @@ -2695,6 +2695,10 @@ func considerTypeConversion(from, to types.Type, path []types.Object) bool { return false } + if _, ok := from.(*typeparams.TypeParam); ok { + return false + } + if !types.ConvertibleTo(from, to) { return false } diff --git a/internal/lsp/testdata/summary_go1.18.txt.golden b/internal/lsp/testdata/summary_go1.18.txt.golden index 3224973f25..48639899ed 100644 --- a/internal/lsp/testdata/summary_go1.18.txt.golden +++ b/internal/lsp/testdata/summary_go1.18.txt.golden @@ -2,7 +2,7 @@ CallHierarchyCount = 2 CodeLensCount = 5 CompletionsCount = 266 -CompletionSnippetCount = 109 +CompletionSnippetCount = 110 UnimportedCompletionsCount = 5 DeepCompletionsCount = 5 FuzzyCompletionsCount = 8 diff --git a/internal/lsp/testdata/typeparams/type_params.go b/internal/lsp/testdata/typeparams/type_params.go index e9acb82ed0..1dfb1034a9 100644 --- a/internal/lsp/testdata/typeparams/type_params.go +++ b/internal/lsp/testdata/typeparams/type_params.go @@ -23,3 +23,11 @@ type s[a int | string] struct{} func _() { s[]{} //@rank("]", int, float64) } + +func returnTP[A int | float64](a A) A { //@item(returnTP, "returnTP", "something", "func") + return a +} + +func _() { + var _ int = returnTP //@snippet(" //", returnTP, "returnTP[${1:}](${2:})", "returnTP[${1:A int|float64}](${2:a A})") +}