File: postfix.txt

package info (click to toggle)
golang-golang-x-tools 1%3A0.25.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 22,724 kB
  • sloc: javascript: 2,027; asm: 1,645; sh: 166; yacc: 155; makefile: 49; ansic: 8
file content (131 lines) | stat: -rw-r--r-- 5,782 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
These tests check that postfix completions do and do not show up in certain
cases. Tests for the postfix completion contents are implemented as ad-hoc
integration tests.

-- flags --
-ignore_extra_diags

-- go.mod --
module golang.org/lsptests/snippets

go 1.18

-- postfix.go --
package snippets

import (
	"strconv"
)

func _() {
	var foo []int
	foo.append //@rank(" //", postfixAppend)

	[]int{}.append //@complete(" //")

	[]int{}.last //@complete(" //")


	foo.copy //@rank(" //", postfixCopy)

	var s struct{ i []int }
	s.i.copy //@rank(" //", postfixCopy)

	var _ []int = s.i.copy //@complete(" //")

	var blah func() []int
	blah().append //@complete(" //")
}

func _() {
	/* append! */ //@item(postfixAppend, "append!", "append and re-assign slice", "snippet")
	/* copy! */ //@item(postfixCopy, "copy!", "duplicate slice", "snippet")
	/* for! */ //@item(postfixFor, "for!", "range over slice by index", "snippet")
	/* forr! */ //@item(postfixForr, "forr!", "range over slice by index and value", "snippet")
	/* last! */ //@item(postfixLast, "last!", "s[len(s)-1]", "snippet")
	/* len! */ //@item(postfixLen, "len!", "len(s)", "snippet")
	/* print! */ //@item(postfixPrint, "print!", "print to stdout", "snippet")
	/* range! */ //@item(postfixRange, "range!", "range over slice", "snippet")
	/* reverse! */ //@item(postfixReverse, "reverse!", "reverse slice", "snippet")
	/* sort! */ //@item(postfixSort, "sort!", "sort.Slice()", "snippet")
	/* var! */ //@item(postfixVar, "var!", "assign to variable", "snippet")
	/* ifnotnil! */ //@item(postfixIfNotNil, "ifnotnil!", "if expr != nil", "snippet")

	var foo []int
	foo. //@complete(" //", postfixAppend, postfixCopy, postfixFor, postfixForr, postfixIfNotNil, postfixLast, postfixLen, postfixPrint, postfixRange, postfixReverse, postfixSort, postfixVar)
	foo = nil

	foo.append //@snippet(" //", postfixAppend, "foo = append(foo, $0)")
	foo.copy //snippet(" //", postfixCopy, "fooCopy := make([]int, len(foo))\ncopy($fooCopy, foo)\n")
	foo.fo //@snippet(" //", postfixFor, "for ${1:} := range foo {\n\t$0\n}")
	foo.forr //@snippet(" //", postfixForr, "for ${1:}, ${2:} := range foo {\n\t$0\n}")
	foo.last //@snippet(" //", postfixLast, "foo[len(foo)-1]")
	foo.len //@snippet(" //", postfixLen, "len(foo)")
	foo.print //@snippet(" //", postfixPrint, `fmt.Printf("foo: %v\n", foo)`)
	foo.rang //@snippet(" //", postfixRange, "for ${1:}, ${2:} := range foo {\n\t$0\n}")
	foo.reverse //@snippet(" //", postfixReverse, "slices.Reverse(foo)")
	foo.sort //@snippet(" //", postfixSort, "sort.Slice(foo, func(i, j int) bool {\n\t$0\n})")
	foo.va //@snippet(" //", postfixVar, "${1:} := foo")
	foo.ifnotnil //@snippet(" //", postfixIfNotNil, "if foo != nil {\n\t$0\n}")
}

func _() {
	/* for! */ //@item(postfixForMap, "for!", "range over map by key", "snippet")
	/* forr! */ //@item(postfixForrMap, "forr!", "range over map by key and value", "snippet")
	/* range! */ //@item(postfixRangeMap, "range!", "range over map", "snippet")
	/* clear! */ //@item(postfixClear, "clear!", "clear map contents", "snippet")
	/* keys! */ //@item(postfixKeys, "keys!", "create slice of keys", "snippet")

	var foo map[int]int
	foo. //@complete(" //", postfixClear, postfixForMap, postfixForrMap, postfixIfNotNil, postfixKeys, postfixLen, postfixPrint, postfixRangeMap, postfixVar)

	foo = nil

	foo.fo //@snippet(" //", postfixFor, "for ${1:} := range foo {\n\t$0\n}")
	foo.forr //@snippet(" //", postfixForr, "for ${1:}, ${2:} := range foo {\n\t$0\n}")
	foo.rang //@snippet(" //", postfixRange, "for ${1:}, ${2:} := range foo {\n\t$0\n}")
	foo.clear //@snippet(" //", postfixClear, "for k := range foo {\n\tdelete(foo, k)\n}\n")
	foo.keys //@snippet(" //", postfixKeys, "keys := make([]int, 0, len(foo))\nfor k := range foo {\n\tkeys = append(keys, k)\n}\n")
}

func _() {
	/* for! */ //@item(postfixForChannel, "for!", "range over channel", "snippet")
	/* range! */ //@item(postfixRangeChannel, "range!", "range over channel", "snippet")

	var foo chan int
	foo. //@complete(" //", postfixForChannel, postfixIfNotNil, postfixLen, postfixPrint, postfixRangeChannel, postfixVar)

	foo = nil

	foo.fo //@snippet(" //", postfixForChannel, "for ${1:} := range foo {\n\t$0\n}")
	foo.rang //@snippet(" //", postfixRangeChannel, "for ${1:} := range foo {\n\t$0\n}")
}

type T struct {
	Name string
}

func _() (string, T, map[string]string, error) {
	/* iferr! */ //@item(postfixIfErr, "iferr!", "check error and return", "snippet")
	/* variferr! */ //@item(postfixVarIfErr, "variferr!", "assign variables and check error", "snippet")
	/* var! */ //@item(postfixVars, "var!", "assign to variables", "snippet")

	strconv.Atoi("32"). //@complete(" //", postfixIfErr, postfixPrint, postfixVars, postfixVarIfErr)

	var err error
	err.iferr //@snippet(" //", postfixIfErr, "if err != nil {\n\treturn \"\", T{}, nil, ${1:}\n}\n")

	strconv.Atoi("32").iferr //@snippet(" //", postfixIfErr, "if _, err := strconv.Atoi(\"32\"); err != nil {\n\treturn \"\", T{}, nil, ${1:}\n}\n")

	strconv.Atoi("32").variferr //@snippet(" //", postfixVarIfErr, "${1:}, ${2:} := strconv.Atoi(\"32\")\nif ${2:} != nil {\n\treturn \"\", T{}, nil, ${3:}\n}\n")

	// test function return multiple errors
	var foo func() (error, error)
	foo().iferr //@snippet(" //", postfixIfErr, "if _, err := foo(); err != nil {\n\treturn \"\", T{}, nil, ${1:}\n}\n")
	foo().variferr //@snippet(" //", postfixVarIfErr, "${1:}, ${2:} := foo()\nif ${2:} != nil {\n\treturn \"\", T{}, nil, ${3:}\n}\n")

	// test function just return error
	var bar func() error
	bar().iferr //@snippet(" //", postfixIfErr, "if err := bar(); err != nil {\n\treturn \"\", T{}, nil, ${1:}\n}\n")
	bar().variferr //@snippet(" //", postfixVarIfErr, "${1:} := bar()\nif ${1:} != nil {\n\treturn \"\", T{}, nil, ${2:}\n}\n")
}