File: func_rank.go.in

package info (click to toggle)
golang-golang-x-tools 1%3A0.1.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 12,588 kB
  • sloc: javascript: 2,011; asm: 1,458; sh: 174; yacc: 155; makefile: 21; ansic: 17
file content (70 lines) | stat: -rw-r--r-- 2,465 bytes parent folder | download
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
package func_rank

import "net/http"

var stringAVar = "var"    //@item(stringAVar, "stringAVar", "string", "var")
func stringBFunc() string { return "str" } //@item(stringBFunc, "stringBFunc", "func() string", "func")
type stringer struct{}    //@item(stringer, "stringer", "struct{...}", "struct")

func _() stringer //@complete("tr", stringer)

func _(val stringer) {} //@complete("tr", stringer)

func (stringer) _() {} //@complete("tr", stringer)

func _() {
	var s struct {
		AA int    //@item(rankAA, "AA", "int", "field")
		AB string //@item(rankAB, "AB", "string", "field")
		AC int    //@item(rankAC, "AC", "int", "field")
	}
	fnStr := func(string) {}
	fnStr(s.A)      //@complete(")", rankAB, rankAA, rankAC)
	fnStr("" + s.A) //@complete(")", rankAB, rankAA, rankAC)

	fnInt := func(int) {}
	fnInt(-s.A) //@complete(")", rankAA, rankAC, rankAB)

	// no expected type
	fnInt(func() int { s.A }) //@complete(" }", rankAA, rankAB, rankAC)
	fnInt(s.A())              //@complete("()", rankAA, rankAC, rankAB)
	fnInt([]int{}[s.A])       //@complete("])", rankAA, rankAC, rankAB)
	fnInt([]int{}[:s.A])      //@complete("])", rankAA, rankAC, rankAB)

	fnInt(s.A.(int)) //@complete(".(", rankAA, rankAC, rankAB)

	fnPtr := func(*string) {}
	fnPtr(&s.A) //@complete(")", rankAB, rankAA, rankAC)

	var aaPtr *string //@item(rankAAPtr, "aaPtr", "*string", "var")
	var abPtr *int    //@item(rankABPtr, "abPtr", "*int", "var")
	fnInt(*a)         //@complete(")", rankABPtr, rankAAPtr)

	_ = func() string {
		return s.A //@complete(" //", rankAB, rankAA, rankAC)
	}
}

type foo struct {
	fooPrivateField int //@item(rankFooPrivField, "fooPrivateField", "int", "field")
	FooPublicField  int //@item(rankFooPubField, "FooPublicField", "int", "field")
}

func (foo) fooPrivateMethod() int { //@item(rankFooPrivMeth, "fooPrivateMethod", "func() int", "method")
	return 0
}

func (foo) FooPublicMethod() int { //@item(rankFooPubMeth, "FooPublicMethod", "func() int", "method")
	return 0
}

func _() {
	var _ int = foo{}. //@rank(" //", rankFooPrivField, rankFooPubField),rank(" //", rankFooPrivMeth, rankFooPubMeth),rank(" //", rankFooPrivField, rankFooPrivMeth)
}

func _() {
	HandleFunc //@item(httpHandleFunc, "HandleFunc", "func(pattern string, handler func(ResponseWriter, *Request))", "func")
	HandlerFunc //@item(httpHandlerFunc, "HandlerFunc", "func(http.ResponseWriter, *http.Request)", "type")

	http.HandleFunc //@rank(" //", httpHandleFunc, httpHandlerFunc)
}