kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/go/indexer/testdata/basic/structref.go (about)

     1  // Package sref tests basic struct field and method references, including
     2  // references across package boundaries.
     3  package sref
     4  
     5  import (
     6  	//- @"\"os\"" ref/imports OS=vname("package","golang.org","","os",_)
     7  	"os"
     8  	//- @"\"os/exec\"" ref/imports Exec=vname("package","golang.org","","os/exec",_)
     9  	"os/exec"
    10  )
    11  
    12  // Construct a struct value from another package.
    13  //
    14  // - @cmd defines/binding Cmd
    15  // - Cmd.node/kind variable
    16  // - @exec ref Exec
    17  // - @"exec.Command(\"blah\")" ref/call ExecCommand
    18  // - @Command ref ExecCommand
    19  var cmd = exec.Command("blah")
    20  
    21  // Verify that references to the struct's fields work.
    22  //
    23  // - @ofp defines/binding Out
    24  // - Out.node/kind variable
    25  // - @cmd ref Cmd
    26  // - StdoutRef=@Stdout ref CmdStdout
    27  // -   = vname("field Cmd.Stdout","golang.org","","os/exec","go")
    28  // - ! {StdoutRef childof _}
    29  var ofp = cmd.Stdout
    30  
    31  // - @init defines/binding Init
    32  // - Init.node/kind function
    33  func init() {
    34  	//- @cmd ref Cmd
    35  	//- @Stdout ref/writes CmdStdout
    36  	//- @os ref OS
    37  	//- @Stderr ref _OSStderr
    38  	//-   = vname("var Stderr","golang.org","","os","go")
    39  	cmd.Stdout = os.Stderr
    40  
    41  	//- RunRef=@Run ref CmdRun
    42  	//-   = vname("method Cmd.Run","golang.org","","os/exec","go")
    43  	//- RunCall=@"cmd.Run()" ref/call CmdRun
    44  	//- RunCall childof Init
    45  	//- !{RunRef childof _}
    46  	cmd.Run()
    47  }