This test checks selection range functionality. -- foo.go -- package foo import "time" func Bar(x, y int, t time.Time) int { zs := []int{1, 2, 3} //@selectionrange("1", a) for _, z := range zs { x = x + z + y + zs[1] //@selectionrange("1", b) } return x + y //@selectionrange("+", c) } -- @a -- Ranges 0: 5:13-5:14 "1" 5:7-5:21 "[]int{1, 2, 3}" 5:1-5:21 "zs := []int{1, 2, 3}" 4:36-12:1 "{\\n\tzs := []int{...range(\"+\", c)\\n}" 4:0-12:1 "func Bar(x, y i...range(\"+\", c)\\n}" 0:0-12:1 "package foo\\n\\nim...range(\"+\", c)\\n}" -- @b -- Ranges 0: 8:21-8:22 "1" 8:18-8:23 "zs[1]" 8:6-8:23 "x + z + y + zs[1]" 8:2-8:23 "x = x + z + y + zs[1]" 7:22-9:2 "{\\n\t\tx = x + z +...ange(\"1\", b)\\n\t}" 7:1-9:2 "for _, z := ran...ange(\"1\", b)\\n\t}" 4:36-12:1 "{\\n\tzs := []int{...range(\"+\", c)\\n}" 4:0-12:1 "func Bar(x, y i...range(\"+\", c)\\n}" 0:0-12:1 "package foo\\n\\nim...range(\"+\", c)\\n}" -- @c -- Ranges 0: 11:8-11:13 "x + y" 11:1-11:13 "return x + y" 4:36-12:1 "{\\n\tzs := []int{...range(\"+\", c)\\n}" 4:0-12:1 "func Bar(x, y i...range(\"+\", c)\\n}" 0:0-12:1 "package foo\\n\\nim...range(\"+\", c)\\n}"