1package keywords
2
3//@rank("", type),rank("", func),rank("", var),rank("", const),rank("", import)
4
5func _() {
6	var test int //@rank(" //", int, interface)
7	var tChan chan int
8	var _ m //@complete(" //", map)
9	var _ f //@complete(" //", func)
10	var _ c //@complete(" //", chan)
11
12	var _ str //@rank(" //", string, struct)
13
14	type _ int //@rank(" //", interface, int)
15
16	type _ str //@rank(" //", struct, string)
17
18	switch test {
19	case 1: // TODO: trying to complete case here will break because the parser wont return *ast.Ident
20		b //@complete(" //", break)
21	case 2:
22		f //@complete(" //", fallthrough, for)
23		r //@complete(" //", return)
24		d //@complete(" //", default, defer)
25		c //@complete(" //", case, const)
26	}
27
28	switch test.(type) {
29	case fo: //@complete(":")
30	case int:
31		b //@complete(" //", break)
32	case int32:
33		f //@complete(" //", for)
34		d //@complete(" //", default, defer)
35		r //@complete(" //", return)
36		c //@complete(" //", case, const)
37	}
38
39	select {
40	case <-tChan:
41		b //@complete(" //", break)
42		c //@complete(" //", case, const)
43	}
44
45	for index := 0; index < test; index++ {
46		c //@complete(" //", const, continue)
47		b //@complete(" //", break)
48	}
49
50	for range []int{} {
51		c //@complete(" //", const, continue)
52		b //@complete(" //", break)
53	}
54
55	// Test function level keywords
56
57	//Using 2 characters to test because map output order is random
58	sw //@complete(" //", switch)
59	se //@complete(" //", select)
60
61	f //@complete(" //", for)
62	d //@complete(" //", defer)
63	g //@rank(" //", go),rank(" //", goto)
64	r //@complete(" //", return)
65	i //@complete(" //", if)
66	e //@complete(" //", else)
67	v //@complete(" //", var)
68	c //@complete(" //", const)
69
70	for i := r //@complete(" //", range)
71}
72
73/* package */ //@item(package, "package", "", "keyword")
74/* import */ //@item(import, "import", "", "keyword")
75/* func */ //@item(func, "func", "", "keyword")
76/* type */ //@item(type, "type", "", "keyword")
77/* var */ //@item(var, "var", "", "keyword")
78/* const */ //@item(const, "const", "", "keyword")
79/* break */ //@item(break, "break", "", "keyword")
80/* default */ //@item(default, "default", "", "keyword")
81/* case */ //@item(case, "case", "", "keyword")
82/* defer */ //@item(defer, "defer", "", "keyword")
83/* go */ //@item(go, "go", "", "keyword")
84/* for */ //@item(for, "for", "", "keyword")
85/* if */ //@item(if, "if", "", "keyword")
86/* else */ //@item(else, "else", "", "keyword")
87/* switch */ //@item(switch, "switch", "", "keyword")
88/* select */ //@item(select, "select", "", "keyword")
89/* fallthrough */ //@item(fallthrough, "fallthrough", "", "keyword")
90/* continue */ //@item(continue, "continue", "", "keyword")
91/* return */ //@item(return, "return", "", "keyword")
92/* var */ //@item(var, "var", "", "keyword")
93/* const */ //@item(const, "const", "", "keyword")
94/* goto */ //@item(goto, "goto", "", "keyword")
95/* struct */ //@item(struct, "struct", "", "keyword")
96/* interface */ //@item(interface, "interface", "", "keyword")
97/* map */ //@item(map, "map", "", "keyword")
98/* func */ //@item(func, "func", "", "keyword")
99/* chan */ //@item(chan, "chan", "", "keyword")
100/* range */ //@item(range, "range", "", "keyword")
101