| 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) |
| } |