github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/tools/oracle/testdata/src/main/describe.go (about)

     1  package describe // @describe pkgdecl "describe"
     2  
     3  // Tests of 'describe' query.
     4  // See go.tools/oracle/oracle_test.go for explanation.
     5  // See describe.golden for expected query results.
     6  
     7  // TODO(adonovan): more coverage of the (extensive) logic.
     8  
     9  type cake float64 // @describe type-ref-builtin "float64"
    10  
    11  const c = iota // @describe const-ref-iota "iota"
    12  
    13  const pi = 3.141     // @describe const-def-pi "pi"
    14  const pie = cake(pi) // @describe const-def-pie "pie"
    15  const _ = pi         // @describe const-ref-pi "pi"
    16  
    17  var global = new(string) // NB: ssa.Global is indirect, i.e. **string
    18  
    19  func main() { // @describe func-def-main "main"
    20  	// func objects
    21  	_ = main   // @describe func-ref-main "main"
    22  	_ = (*C).f // @describe func-ref-*C.f "..C..f"
    23  	_ = D.f    // @describe func-ref-D.f "D.f"
    24  	_ = I.f    // @describe func-ref-I.f "I.f"
    25  	var d D    // @describe type-D "D"
    26  	var i I    // @describe type-I "I"
    27  	_ = d.f    // @describe func-ref-d.f "d.f"
    28  	_ = i.f    // @describe func-ref-i.f "i.f"
    29  
    30  	// var objects
    31  	anon := func() {
    32  		_ = d // @describe ref-lexical-d "d"
    33  	}
    34  	_ = anon   // @describe ref-anon "anon"
    35  	_ = global // @describe ref-global "global"
    36  
    37  	// SSA affords some local flow sensitivity.
    38  	var a, b int
    39  	var x = &a // @describe var-def-x-1 "x"
    40  	_ = x      // @describe var-ref-x-1 "x"
    41  	x = &b     // @describe var-def-x-2 "x"
    42  	_ = x      // @describe var-ref-x-2 "x"
    43  
    44  	i = new(C) // @describe var-ref-i-C "i"
    45  	if i != nil {
    46  		i = D{} // @describe var-ref-i-D "i"
    47  	}
    48  	print(i) // @describe var-ref-i "\\bi\\b"
    49  
    50  	// const objects
    51  	const localpi = 3.141     // @describe const-local-pi "localpi"
    52  	const localpie = cake(pi) // @describe const-local-pie "localpie"
    53  	const _ = localpi         // @describe const-ref-localpi "localpi"
    54  
    55  	// type objects
    56  	type T int      // @describe type-def-T "T"
    57  	var three T = 3 // @describe type-ref-T "T"
    58  	_ = three
    59  
    60  	print(1 + 2*3)        // @describe const-expr " 2.3"
    61  	print(real(1+2i) - 3) // @describe const-expr2 "real.*3"
    62  
    63  	m := map[string]*int{"a": &a}
    64  	mapval, _ := m["a"] // @describe map-lookup,ok "m..a.."
    65  	_ = mapval          // @describe mapval "mapval"
    66  	_ = m               // @describe m "m"
    67  
    68  	defer main() // @describe defer-stmt "defer"
    69  	go main()    // @describe go-stmt "go"
    70  
    71  	panic(3) // @describe builtin-ref-panic "panic"
    72  
    73  	var a2 int // @describe var-decl-stmt "var a2 int"
    74  	_ = a2
    75  	var _ int // @describe var-decl-stmt2 "var _ int"
    76  	var _ int // @describe var-def-blank "_"
    77  }
    78  
    79  type I interface { // @describe def-iface-I "I"
    80  	f() // @describe def-imethod-I.f "f"
    81  }
    82  
    83  type C int
    84  type D struct{}
    85  
    86  func (c *C) f() {}
    87  func (d D) f()  {}