mirror of https://github.com/golang/go.git
148 lines
3.3 KiB
Go
148 lines
3.3 KiB
Go
package a
|
|
|
|
func _() {
|
|
type s struct {
|
|
nested struct {
|
|
// nested number
|
|
number int64 //@mark(nestedNumber, "number")
|
|
}
|
|
nested2 []struct {
|
|
// nested string
|
|
str string //@mark(nestedString, "str")
|
|
}
|
|
x struct {
|
|
x struct {
|
|
x struct {
|
|
x struct {
|
|
x struct {
|
|
// nested map
|
|
m map[string]float64 //@mark(nestedMap, "m")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var t s
|
|
_ = t.nested.number //@hoverdef("number", nestedNumber)
|
|
_ = t.nested2[0].str //@hoverdef("str", nestedString)
|
|
_ = t.x.x.x.x.x.m //@hoverdef("m", nestedMap)
|
|
}
|
|
|
|
func _() {
|
|
var s struct {
|
|
// a field
|
|
a int //@mark(structA, "a")
|
|
// b nested struct
|
|
b struct { //@mark(structB, "b")
|
|
// c field of nested struct
|
|
c int //@mark(structC, "c")
|
|
}
|
|
}
|
|
_ = s.a //@hoverdef("a", structA)
|
|
_ = s.b //@hoverdef("b", structB)
|
|
_ = s.b.c //@hoverdef("c", structC)
|
|
|
|
var arr []struct {
|
|
// d field
|
|
d int //@mark(arrD, "d")
|
|
// e nested struct
|
|
e struct { //@mark(arrE, "e")
|
|
// f field of nested struct
|
|
f int //@mark(arrF, "f")
|
|
}
|
|
}
|
|
_ = arr[0].d //@hoverdef("d", arrD)
|
|
_ = arr[0].e //@hoverdef("e", arrE)
|
|
_ = arr[0].e.f //@hoverdef("f", arrF)
|
|
|
|
var complex []struct {
|
|
c <-chan map[string][]struct {
|
|
// h field
|
|
h int //@mark(complexH, "h")
|
|
// i nested struct
|
|
i struct { //@mark(complexI, "i")
|
|
// j field of nested struct
|
|
j int //@mark(complexJ, "j")
|
|
}
|
|
}
|
|
}
|
|
_ = (<-complex[0].c)["0"][0].h //@hoverdef("h", complexH)
|
|
_ = (<-complex[0].c)["0"][0].i //@hoverdef("i", complexI)
|
|
_ = (<-complex[0].c)["0"][0].i.j //@hoverdef("j", complexJ)
|
|
|
|
var mapWithStructKey map[struct {
|
|
// X key field
|
|
x []string //@mark(mapStructKeyX, "x")
|
|
}]int
|
|
for k := range mapWithStructKey {
|
|
_ = k.x //@hoverdef("x", mapStructKeyX)
|
|
}
|
|
|
|
var mapWithStructKeyAndValue map[struct {
|
|
// Y key field
|
|
y string //@mark(mapStructKeyY, "y")
|
|
}]struct {
|
|
// X value field
|
|
x string //@mark(mapStructValueX, "x")
|
|
}
|
|
for k, v := range mapWithStructKeyAndValue {
|
|
// TODO: we don't show docs for y field because both map key and value
|
|
// are structs. And in this case, we parse only map value
|
|
_ = k.y //@hoverdef("y", mapStructKeyY)
|
|
_ = v.x //@hoverdef("x", mapStructValueX)
|
|
}
|
|
|
|
var i []map[string]interface {
|
|
// open method comment
|
|
open() error //@mark(openMethod, "open")
|
|
}
|
|
i[0]["1"].open() //@hoverdef("open", openMethod)
|
|
}
|
|
|
|
func _() {
|
|
test := struct {
|
|
// test description
|
|
desc string //@mark(testDescription, "desc")
|
|
}{}
|
|
_ = test.desc //@hoverdef("desc", testDescription)
|
|
|
|
for _, tt := range []struct {
|
|
// test input
|
|
in map[string][]struct { //@mark(testInput, "in")
|
|
// test key
|
|
key string //@mark(testInputKey, "key")
|
|
// test value
|
|
value interface{} //@mark(testInputValue, "value")
|
|
}
|
|
result struct {
|
|
v <-chan struct {
|
|
// expected test value
|
|
value int //@mark(testResultValue, "value")
|
|
}
|
|
}
|
|
}{} {
|
|
_ = tt.in //@hoverdef("in", testInput)
|
|
_ = tt.in["0"][0].key //@hoverdef("key", testInputKey)
|
|
_ = tt.in["0"][0].value //@hoverdef("value", testInputValue)
|
|
|
|
_ = (<-tt.result.v).value //@hoverdef("value", testResultValue)
|
|
}
|
|
}
|
|
|
|
func _() {
|
|
getPoints := func() []struct {
|
|
// X coord
|
|
x int //@mark(returnX, "x")
|
|
// Y coord
|
|
y int //@mark(returnY, "y")
|
|
} {
|
|
return nil
|
|
}
|
|
|
|
r := getPoints()
|
|
r[0].x //@hoverdef("x", returnX)
|
|
r[0].y //@hoverdef("y", returnY)
|
|
}
|