-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gopls/internal/test: add test for NPE in control flow highlighting
Add a test for the fix in golang/go#65952: a nil pointer exception when highlighting a return value in a function returning no results. Also, merge tests related to control flow highlighting, since it is convenient to be able to run them together, and since there is nontrivial overhead to tiny tests. Updates golang/go#65952 Change-Id: Ibf8c7c6f0f4feed6dc7a283736bc038600a0bf04 Reviewed-on: https://go-review.googlesource.com/c/tools/+/567256 Reviewed-by: Alan Donovan <adonovan@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Robert Findley <rfindley@google.com>
- Loading branch information
Showing
3 changed files
with
71 additions
and
37 deletions.
There are no files selected for viewing
71 changes: 71 additions & 0 deletions
71
gopls/internal/test/marker/testdata/highlight/controlflow.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
This test verifies document highlighting for control flow. | ||
|
||
-- go.mod -- | ||
module mod.com | ||
|
||
go 1.18 | ||
|
||
-- p.go -- | ||
package p | ||
|
||
-- issue60589.go -- | ||
package p | ||
|
||
// This test verifies that control flow lighlighting correctly | ||
// accounts for multi-name result parameters. | ||
// In golang/go#60589, it did not. | ||
|
||
func _() (foo int, bar, baz string) { //@ loc(func, "func"), loc(foo, "foo"), loc(fooint, "foo int"), loc(int, "int"), loc(bar, "bar"), loc(beforebaz, " baz"), loc(baz, "baz"), loc(barbazstring, "bar, baz string"), loc(beforestring, re`() string`), loc(string, "string") | ||
return 0, "1", "2" //@ loc(return, `return 0, "1", "2"`), loc(l0, "0"), loc(l1, `"1"`), loc(l2, `"2"`) | ||
} | ||
|
||
// Assertions, expressed here to avoid clutter above. | ||
// Note that when the cursor is over the field type, there is some | ||
// (likely harmless) redundancy. | ||
|
||
//@ highlight(func, func, return) | ||
//@ highlight(foo, foo, l0) | ||
//@ highlight(int, fooint, int, l0) | ||
//@ highlight(bar, bar, l1) | ||
//@ highlight(beforebaz) | ||
//@ highlight(baz, baz, l2) | ||
//@ highlight(beforestring, baz, l2) | ||
//@ highlight(string, barbazstring, string, l1, l2) | ||
//@ highlight(l0, foo, l0) | ||
//@ highlight(l1, bar, l1) | ||
//@ highlight(l2, baz, l2) | ||
|
||
// Check that duplicate result names do not cause | ||
// inaccurate highlighting. | ||
|
||
func _() (x, x int32) { //@ loc(x1, re`\((x)`), loc(x2, re`(x) int`), diag(x1, re"redeclared"), diag(x2, re"redeclared") | ||
return 1, 2 //@ loc(one, "1"), loc(two, "2") | ||
} | ||
|
||
//@ highlight(one, one, x1) | ||
//@ highlight(two, two, x2) | ||
//@ highlight(x1, x1, one) | ||
//@ highlight(x2, x2, two) | ||
|
||
-- issue65516.go -- | ||
package p | ||
|
||
// This test checks that gopls doesn't crash while highlighting | ||
// functions with no body (golang/go#65516). | ||
|
||
func Foo() (int, string) //@highlight("int", "int"), highlight("func", "func") | ||
|
||
-- issue65952.go -- | ||
package p | ||
|
||
// This test checks that gopls doesn't crash while highlighting | ||
// return values in functions with no results. | ||
|
||
func _() { | ||
return 0 //@highlight("0", "0"), diag("0", re"too many return") | ||
} | ||
|
||
func _() () { | ||
// TODO(golang/go#65966): fix the triplicate diagnostics here. | ||
return 0 //@highlight("0", "0"), diag("0", re"too many return"), diag("0", re"too many return"), diag("0", re"too many return") | ||
} |
30 changes: 0 additions & 30 deletions
30
gopls/internal/test/marker/testdata/highlight/issue60589.txt
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.