SYMBOL INDEX (736 symbols across 135 files) FILE: cfsmextract/cfsmextract.go type CFSMExtract (line 20) | type CFSMExtract struct method Run (line 47) | func (extract *CFSMExtract) Run() { method Session (line 108) | func (extract *CFSMExtract) Session() *sesstype.Session { method WriteOutput (line 112) | func (extract *CFSMExtract) WriteOutput() { function New (line 32) | func New(ssainfo *ssabuilder.SSAInfo, prefix, outdir string) *CFSMExtract { FILE: cfsmextract/func.go type VarKind (line 14) | type VarKind constant Nothing (line 18) | Nothing VarKind = iota constant Array (line 19) | Array constant Chan (line 20) | Chan constant Struct (line 21) | Struct constant LocalArray (line 22) | LocalArray constant LocalStruct (line 23) | LocalStruct constant Untracked (line 24) | Untracked type Captures (line 28) | type Captures type Tuples (line 31) | type Tuples type Elems (line 34) | type Elems type Fields (line 37) | type Fields type frame (line 40) | type frame struct method callBuiltin (line 130) | func (caller *frame) callBuiltin(common *ssa.CallCommon) { method call (line 156) | func (caller *frame) call(c *ssa.Call) { method callCommon (line 160) | func (caller *frame) callCommon(call *ssa.Call, common *ssa.CallCommon) { method callGo (line 276) | func (caller *frame) callGo(g *ssa.Go) { method translate (line 310) | func (callee *frame) translate(common *ssa.CallCommon) { method handleRetvals (line 355) | func (caller *frame) handleRetvals(returned ssa.Value, callee *frame) { method get (line 367) | func (callee *frame) get(v ssa.Value) (*utils.Definition, VarKind) { method handleExtRetvals (line 398) | func (caller *frame) handleExtRetvals(returned ssa.Value, callee *fram... method isRecursive (line 419) | func (callee *frame) isRecursive() bool { method printCallStack (line 444) | func (callee *frame) printCallStack() { method updateDefs (line 452) | func (callee *frame) updateDefs(vdOld, vdNew *utils.Definition) { type environ (line 56) | type environ struct method GetSessionChan (line 78) | func (env *environ) GetSessionChan(vd *utils.Definition) *sesstype.Chan { function makeToplevelFrame (line 85) | func makeToplevelFrame(extract *CFSMExtract) *frame { function findMethod (line 269) | func findMethod(prog *ssa.Program, meth *types.Func, typ types.Type) *ss... FILE: cfsmextract/gortn.go type goroutine (line 8) | type goroutine struct method AddNode (line 16) | func (gortn *goroutine) AddNode(node sesstype.Node) { FILE: cfsmextract/sesstype/cfsm.go constant STOP (line 12) | STOP = "STOP" type CFSMs (line 15) | type CFSMs struct method WriteTo (line 52) | func (sys *CFSMs) WriteTo(w io.Writer) (int64, error) { method PrintSummary (line 58) | func (sys *CFSMs) PrintSummary() { method rootToMachine (line 69) | func (sys *CFSMs) rootToMachine(role Role, root Node, m *cfsm.CFSM) { method nodeToMachine (line 75) | func (sys *CFSMs) nodeToMachine(role Role, node Node, q0 *cfsm.State, ... method chanToMachine (line 152) | func (sys *CFSMs) chanToMachine(ch Role, T string, m *cfsm.CFSM) { method isSelfLoop (line 187) | func (sys *CFSMs) isSelfLoop(m *cfsm.CFSM, q0 *cfsm.State, node Node) ... function NewCFSMs (line 22) | func NewCFSMs(s *Session) *CFSMs { FILE: cfsmextract/sesstype/dot.go type GraphvizDot (line 12) | type GraphvizDot struct method WriteTo (line 39) | func (dot *GraphvizDot) WriteTo(w io.Writer) (int64, error) { method nodeToDotNode (line 44) | func (dot *GraphvizDot) nodeToDotNode(node Node) *gographviz.Node { method visitNode (line 141) | func (dot *GraphvizDot) visitNode(node Node, subgraph *gographviz.SubG... function NewGraphvizDot (line 19) | func NewGraphvizDot(s *Session) *GraphvizDot { FILE: cfsmextract/sesstype/nodes.go function CountNodes (line 7) | func CountNodes(root Node) int { function SessionCountNodes (line 15) | func SessionCountNodes(session *Session) map[string]int { function PrintNodeSummary (line 23) | func PrintNodeSummary(session *Session) { FILE: cfsmextract/sesstype/nodestack.go type NodeStack (line 4) | type NodeStack struct method Push (line 10) | func (s *NodeStack) Push(node Node) { method Pop (line 16) | func (s *NodeStack) Pop() { method Top (line 24) | func (s *NodeStack) Top() Node { method Size (line 32) | func (s *NodeStack) Size() int { method String (line 37) | func (s *NodeStack) String() string { function NewNodeStack (line 50) | func NewNodeStack() *NodeStack { FILE: cfsmextract/sesstype/nodestack_test.go function TestNewStack (line 7) | func TestNewStack(t *testing.T) { FILE: cfsmextract/sesstype/op_string.go constant _op_name (line 7) | _op_name = "NoOpNewChanOpSendOpRecvOpEndOp" method String (line 11) | func (i op) String() string { FILE: cfsmextract/sesstype/sesstype.go type op (line 16) | type op type Chan (line 19) | type Chan struct method Name (line 26) | func (ch Chan) Name() string { method Type (line 35) | func (ch Chan) Type() types.Type { method Role (line 41) | func (ch Chan) Role() Role { return ch.role } method Value (line 42) | func (ch Chan) Value() ssa.Value { return ch.def.Var } type Role (line 45) | type Role interface type role (line 49) | type role struct method Name (line 53) | func (r *role) Name() string { return r.name } constant NoOp (line 57) | NoOp op = iota constant NewChanOp (line 58) | NewChanOp constant SendOp (line 59) | SendOp constant RecvOp (line 60) | RecvOp constant EndOp (line 61) | EndOp type Node (line 65) | type Node interface type Session (line 75) | type Session struct method GetRole (line 91) | func (s *Session) GetRole(name string) Role { // Get or create role method MakeChan (line 99) | func (s *Session) MakeChan(v *utils.Definition, r Role) Chan { method MakeExtChan (line 109) | func (s *Session) MakeExtChan(v *utils.Definition, r Role) Chan { method String (line 341) | func (s *Session) String() string { function CreateSession (line 82) | func CreateSession() *Session { type NewChanNode (line 119) | type NewChanNode struct method Kind (line 124) | func (nc *NewChanNode) Kind() op { return NewChanOp } method Chan (line 125) | func (nc *NewChanNode) Chan() Chan { return nc.ch } method Append (line 126) | func (nc *NewChanNode) Append(n Node) Node { method Child (line 130) | func (nc *NewChanNode) Child(i int) Node { return nc.children[i] } method Children (line 131) | func (nc *NewChanNode) Children() []Node { return nc.children } method String (line 132) | func (nc *NewChanNode) String() string { type SendNode (line 137) | type SendNode struct method Kind (line 145) | func (s *SendNode) Kind() op { return SendOp } method Sender (line 146) | func (s *SendNode) Sender() Role { return s.sndr } method To (line 147) | func (s *SendNode) To() Chan { return s.dest } method IsNondet (line 148) | func (s *SendNode) IsNondet() bool { return s.nondet } method Append (line 149) | func (s *SendNode) Append(n Node) Node { method Child (line 153) | func (s *SendNode) Child(i int) Node { return s.children[i] } method Children (line 154) | func (s *SendNode) Children() []Node { return s.children } method String (line 155) | func (s *SendNode) String() string { type RecvNode (line 164) | type RecvNode struct method Kind (line 173) | func (r *RecvNode) Kind() op { return RecvOp } method Receiver (line 174) | func (r *RecvNode) Receiver() Role { return r.rcvr } method From (line 175) | func (r *RecvNode) From() Chan { return r.orig } method IsNondet (line 176) | func (r *RecvNode) IsNondet() bool { return r.nondet } method Stop (line 177) | func (r *RecvNode) Stop() bool { return r.stop } method Append (line 178) | func (r *RecvNode) Append(node Node) Node { method Child (line 182) | func (r *RecvNode) Child(index int) Node { return r.children[index] } method Children (line 183) | func (r *RecvNode) Children() []Node { return r.children } method String (line 184) | func (r *RecvNode) String() string { type LabelNode (line 196) | type LabelNode struct method Kind (line 201) | func (l *LabelNode) Kind() op { return NoOp } method Name (line 202) | func (l *LabelNode) Name() string { return l.name } method Append (line 203) | func (l *LabelNode) Append(n Node) Node { method Child (line 207) | func (l *LabelNode) Child(i int) Node { return l.children[i] } method Children (line 208) | func (l *LabelNode) Children() []Node { return l.children } method String (line 209) | func (l *LabelNode) String() string { return fmt.Sprintf("%s", l.nam... type GotoNode (line 212) | type GotoNode struct method Kind (line 217) | func (g *GotoNode) Kind() op { return NoOp } method Name (line 218) | func (g *GotoNode) Name() string { return g.name } method Append (line 219) | func (g *GotoNode) Append(n Node) Node { method Child (line 223) | func (g *GotoNode) Child(i int) Node { return g.children[i] } method Children (line 224) | func (g *GotoNode) Children() []Node { return g.children } method String (line 225) | func (g *GotoNode) String() string { return fmt.Sprintf("Goto %s", g... type EndNode (line 227) | type EndNode struct method Kind (line 232) | func (e *EndNode) Kind() op { return EndOp } method Chan (line 233) | func (e *EndNode) Chan() Chan { return e.ch } method Append (line 234) | func (e *EndNode) Append(n Node) Node { method Child (line 238) | func (e *EndNode) Child(i int) Node { return e.children[i] } method Children (line 239) | func (e *EndNode) Children() []Node { return e.children } method String (line 240) | func (e *EndNode) String() string { return fmt.Sprintf("End %s", e.c... type EmptyBodyNode (line 242) | type EmptyBodyNode struct method Kind (line 246) | func (e *EmptyBodyNode) Kind() op { return NoOp } method Append (line 247) | func (e *EmptyBodyNode) Append(node Node) Node { method Child (line 251) | func (e *EmptyBodyNode) Child(i int) Node { return e.children[i] } method Children (line 252) | func (e *EmptyBodyNode) Children() []Node { return e.children } method String (line 253) | func (e *EmptyBodyNode) String() string { return "(Empty)" } function NewNewChanNode (line 256) | func NewNewChanNode(ch Chan) Node { function NewSendNode (line 261) | func NewSendNode(sndr Role, dest Chan, typ types.Type) Node { function NewSelectSendNode (line 272) | func NewSelectSendNode(sndr Role, dest Chan, typ types.Type) Node { function NewRecvNode (line 283) | func NewRecvNode(orig Chan, rcvr Role, typ types.Type) Node { function NewRecvStopNode (line 295) | func NewRecvStopNode(orig Chan, rcvr Role, typ types.Type) Node { function NewSelectRecvNode (line 307) | func NewSelectRecvNode(orig Chan, rcvr Role, typ types.Type) Node { function NewLabelNode (line 318) | func NewLabelNode(name string) Node { function NewGotoNode (line 326) | func NewGotoNode(name string) Node { function NewEndNode (line 334) | func NewEndNode(ch Chan) Node { function StringRecursive (line 358) | func StringRecursive(node Node) string { FILE: cfsmextract/sesstype/sesstype_test.go function TestSendNode (line 14) | func TestSendNode(t *testing.T) { function TestRecvNode (line 50) | func TestRecvNode(t *testing.T) { function TestLabelGotoNode (line 86) | func TestLabelGotoNode(t *testing.T) { function TestNewChanNode (line 112) | func TestNewChanNode(t *testing.T) { function TestEndNode (line 133) | func TestEndNode(t *testing.T) { type mockChan (line 153) | type mockChan struct method Name (line 155) | func (mc mockChan) Name() string { return "MockChan" } method String (line 156) | func (mc mockChan) String() string { return "Mock Chan" } method Type (line 157) | func (mc mockChan) Type() types.Type { return types.NewCh... method Parent (line 158) | func (mc mockChan) Parent() *ssa.Function { return nil } method Referrers (line 159) | func (mc mockChan) Referrers() *[]ssa.Instruction { return nil } method Pos (line 160) | func (mc mockChan) Pos() token.Pos { return token.NoPos } function TestSelfLoop (line 162) | func TestSelfLoop(t *testing.T) { FILE: cfsmextract/utils.go function loc (line 13) | func loc(fr *frame, pos token.Pos) string { function red (line 23) | func red(s string) string { function orange (line 27) | func orange(s string) string { function green (line 31) | func green(s string) string { function cyan (line 35) | func cyan(s string) string { function reg (line 39) | func reg(reg ssa.Value) string { function deref (line 49) | func deref(typ types.Type) types.Type { function derefAll (line 56) | func derefAll(typ types.Type) types.Type { FILE: cfsmextract/utils/defs.go type Definition (line 14) | type Definition struct method String (line 38) | func (vd *Definition) String() string { function NewDef (line 20) | func NewDef(v ssa.Value) *Definition { FILE: cfsmextract/utils/emptyvalue.go type EmptyValue (line 15) | type EmptyValue struct method Name (line 19) | func (v EmptyValue) Name() string { return "(Nothingn... method String (line 20) | func (v EmptyValue) String() string { return "(Empty Va... method Type (line 21) | func (v EmptyValue) Type() types.Type { return v.T } method Parent (line 22) | func (v EmptyValue) Parent() *ssa.Function { return nil } method Referrers (line 23) | func (v EmptyValue) Referrers() *[]ssa.Instruction { return nil } method Pos (line 24) | func (v EmptyValue) Pos() token.Pos { return token.NoPos } FILE: cfsmextract/visit.go function visitBlock (line 14) | func visitBlock(blk *ssa.BasicBlock, fr *frame) { function visitFunc (line 35) | func visitFunc(fn *ssa.Function, callee *frame) bool { function visitInst (line 45) | func visitInst(inst ssa.Instruction, fr *frame) { function visitExtract (line 147) | func visitExtract(e *ssa.Extract, fr *frame) { function visitMakeClosure (line 198) | func visitMakeClosure(inst *ssa.MakeClosure, fr *frame) { function visitAlloc (line 207) | func visitAlloc(inst *ssa.Alloc, fr *frame) { function visitDeref (line 247) | func visitDeref(inst *ssa.UnOp, fr *frame) { function visitSelect (line 293) | func visitSelect(s *ssa.Select, fr *frame) { function visitReturn (line 342) | func visitReturn(ret *ssa.Return, fr *frame) []*utils.Definition { function visitCall (line 352) | func visitCall(c *ssa.Call, caller *frame) { function visitIf (line 356) | func visitIf(inst *ssa.If, fr *frame) { function visitMakeChan (line 411) | func visitMakeChan(inst *ssa.MakeChan, caller *frame) { function visitSend (line 425) | func visitSend(send *ssa.Send, fr *frame) { function visitRecv (line 444) | func visitRecv(recv *ssa.UnOp, fr *frame) { function visitClose (line 471) | func visitClose(ch sesstype.Chan, fr *frame) { function visitJump (line 475) | func visitJump(inst *ssa.Jump, fr *frame) { function visitStore (line 483) | func visitStore(inst *ssa.Store, fr *frame) { function visitChangeType (line 550) | func visitChangeType(inst *ssa.ChangeType, fr *frame) { function visitChangeInterface (line 568) | func visitChangeInterface(inst *ssa.ChangeInterface, fr *frame) { function visitBinOp (line 573) | func visitBinOp(inst *ssa.BinOp, fr *frame) { function visitMakeInterface (line 592) | func visitMakeInterface(inst *ssa.MakeInterface, fr *frame) { function visitSlice (line 607) | func visitSlice(inst *ssa.Slice, fr *frame) { function visitMakeSlice (line 611) | func visitMakeSlice(inst *ssa.MakeSlice, fr *frame) { function visitFieldAddr (line 615) | func visitFieldAddr(inst *ssa.FieldAddr, fr *frame) { function visitField (line 679) | func visitField(inst *ssa.Field, fr *frame) { function visitIndexAddr (line 743) | func visitIndexAddr(inst *ssa.IndexAddr, fr *frame) { function visitIndex (line 794) | func visitIndex(inst *ssa.Index, fr *frame) { function visitDefer (line 845) | func visitDefer(inst *ssa.Defer, fr *frame) { function visitRunDefers (line 849) | func visitRunDefers(inst *ssa.RunDefers, fr *frame) { function visitPhi (line 855) | func visitPhi(inst *ssa.Phi, fr *frame) { function visitTypeAssert (line 864) | func visitTypeAssert(inst *ssa.TypeAssert, fr *frame) { FILE: cmd/buildssa.go function init (line 41) | func init() { function Build (line 51) | func Build(files []string) { FILE: cmd/cfsms.go function init (line 44) | func init() { function extractCFSMs (line 51) | func extractCFSMs(files []string) { FILE: cmd/checkfair.go function init (line 39) | func init() { function check (line 43) | func check(files []string) { FILE: cmd/migo.go function init (line 45) | func init() { function extractMigo (line 51) | func extractMigo(files []string) { FILE: cmd/root.go function Execute (line 44) | func Execute() { function init (line 51) | func init() { function initConfig (line 61) | func initConfig() { FILE: cmd/serve.go constant basePkg (line 40) | basePkg = "github.com/nickng/dingo-hunter" function init (line 47) | func init() { function Serve (line 64) | func Serve() { FILE: examples/altbit/main.go function main (line 11) | func main() { function flip (line 18) | func flip(b int) int { function tx (line 22) | func tx(snd chan<- int, ack <-chan int) { function rx (line 51) | func rx(reply chan<- int, trans <-chan int) { FILE: examples/branch-dependent-deadlock/main.go function S (line 3) | func S(ch chan int, done chan struct{}) { function R (line 8) | func R(ch chan int, done chan struct{}) { function main (line 13) | func main() { FILE: examples/channel-scoping-test/main.go function main (line 8) | func main() { function makenew (line 17) | func makenew() chan int { FILE: examples/commaok/main.go function main (line 7) | func main() { FILE: examples/cond-recur/main.go function x (line 7) | func x(ch chan int, done chan struct{}) { function main (line 21) | func main() { FILE: examples/deadlocking-philosophers/main.go type Philosopher (line 12) | type Philosopher struct method think (line 24) | func (phil *Philosopher) think() { method eat (line 29) | func (phil *Philosopher) eat() { method getChopsticks (line 34) | func (phil *Philosopher) getChopsticks() { method returnChopsticks (line 45) | func (phil *Philosopher) returnChopsticks() { method dine (line 50) | func (phil *Philosopher) dine(announce chan *Philosopher) { function makePhilosopher (line 18) | func makePhilosopher(name string, neighbor *Philosopher) *Philosopher { function main (line 58) | func main() { FILE: examples/dining-philosophers/main.go type Philosopher (line 12) | type Philosopher struct method think (line 24) | func (phil *Philosopher) think() { method eat (line 29) | func (phil *Philosopher) eat() { method getChopsticks (line 34) | func (phil *Philosopher) getChopsticks() { method returnChopsticks (line 51) | func (phil *Philosopher) returnChopsticks() { method dine (line 56) | func (phil *Philosopher) dine(announce chan *Philosopher) { function makePhilosopher (line 18) | func makePhilosopher(name string, neighbor *Philosopher) *Philosopher { function main (line 64) | func main() { FILE: examples/factorial/main.go function main (line 5) | func main() { function fact (line 11) | func fact(n int, results chan<- int) { FILE: examples/fanin-pattern-commaok/main.go function work (line 11) | func work(out chan<- int) { function fanin (line 17) | func fanin(ch1, ch2 <-chan int) <-chan int { function main (line 35) | func main() { FILE: examples/fanin-pattern/main.go function work (line 7) | func work(out chan<- int) { function fanin (line 13) | func fanin(ch1, ch2 <-chan int) <-chan int { function main (line 28) | func main() { FILE: examples/fcall/main.go function f (line 7) | func f() { function g (line 12) | func g() { function main (line 17) | func main() { FILE: examples/forselect/main.go function sel1 (line 7) | func sel1(ch1, ch2 chan int, done chan struct{}) { function sel2 (line 20) | func sel2(ch1, ch2 chan int, done chan struct{}) { function main (line 33) | func main() { FILE: examples/giachino-concur14-dining-philosopher/main.go function Fork (line 11) | func Fork(fork chan int) { function phil (line 19) | func phil(fork1, fork2 chan int, id int) { function main (line 45) | func main() { FILE: examples/giachino-concur14-factorial/main.go function fact (line 8) | func fact(n int, r, s chan int) { function main (line 20) | func main() { FILE: examples/github-golang-go-issue-12734/main.go function useless (line 11) | func useless(address string) []byte { function test_a (line 16) | func test_a(test_channel chan int) { function test (line 21) | func test() { function main (line 30) | func main() { FILE: examples/golang-blog-prime-sieve/main.go function Generate (line 11) | func Generate(ch chan<- int) { function Filter (line 19) | func Filter(in <-chan int, out chan<- int, prime int) { function main (line 29) | func main() { FILE: examples/infinite-prime-sieve/main.go function Generate (line 14) | func Generate(ch chan<- int) { function Filter (line 22) | func Filter(in <-chan int, out chan<- int, prime int) { function main (line 32) | func main() { FILE: examples/issue-10-close-wrong-migo-chan-name/main.go function main (line 6) | func main() { FILE: examples/issue-11-non-communicating-fn-call/main.go function main (line 6) | func main() { FILE: examples/jobsched/main.go function worker (line 10) | func worker(id int, jobQueue <-chan int, done <-chan struct{}) { function morejob (line 22) | func morejob() bool { function producer (line 27) | func producer(q chan int, done chan struct{}) { function main (line 34) | func main() { FILE: examples/local-deadlock-fixed/main.go function Work (line 8) | func Work() { function Send (line 15) | func Send(ch chan<- int) { ch <- 42 } function Recv (line 16) | func Recv(ch <-chan int, done chan<- int) { done <- <-ch } function main (line 18) | func main() { FILE: examples/local-deadlock/main.go function Work (line 8) | func Work() { function Send (line 15) | func Send(ch chan<- int) { ch <- 42 } function Recv (line 16) | func Recv(ch <-chan int, done chan<- int) { done <- <-ch } function main (line 18) | func main() { FILE: examples/loop-variations/main.go function main (line 8) | func main() { FILE: examples/makechan-in-loop/main.go function main (line 9) | func main() { FILE: examples/md5/main.go type result (line 17) | type result struct function sumFiles (line 27) | func sumFiles(done <-chan struct{}, root string) (<-chan result, <-chan ... function MD5All (line 74) | func MD5All(root string) (map[string][md5.Size]byte, error) { function main (line 95) | func main() { FILE: examples/multi-makechan-same-var/main.go function createChan (line 6) | func createChan() chan int { function main (line 10) | func main() { FILE: examples/multiple-files/main.go function main (line 7) | func main() { FILE: examples/multiple-files/x.go function x (line 5) | func x() { FILE: examples/multiple-timeout/main.go function main (line 11) | func main() { FILE: examples/parallel-buffered-recursive-fibonacci/main.go function main (line 7) | func main() { function fib (line 13) | func fib(n int, ch chan<- int) { FILE: examples/parallel-recursive-fibonacci/main.go function main (line 7) | func main() { function fib (line 13) | func fib(n int, ch chan<- int) { FILE: examples/parallel-twoprocess-fibonacci/main.go function fib (line 7) | func fib(n int) int { function fibParallel (line 14) | func fibParallel(n int, ch chan<- int) { function main (line 18) | func main() { FILE: examples/philo/main.go function philo (line 9) | func philo(id int, forks chan int) { function main (line 19) | func main() { FILE: examples/popl17/alt-bit/main.go function main (line 9) | func main() { function tx (line 16) | func tx(snd chan<- int, ack <-chan int) { function rx (line 44) | func rx(reply chan<- int, trans <-chan int) { FILE: examples/popl17/concsys/main.go type Result (line 9) | type Result type Search (line 10) | type Search function fakeSearch (line 12) | func fakeSearch(kind string) Search { function SequentialSearch (line 33) | func SequentialSearch(query string) (results []Result) { function ConcurrentSearch (line 40) | func ConcurrentSearch(query string) (results []Result) { function ConcurrentSearchWithCutOff (line 53) | func ConcurrentSearchWithCutOff(query string) (results []Result) { function First (line 72) | func First(query string, replicas ...Search) Result { function ReplicaSearch (line 81) | func ReplicaSearch(query string) (results []Result) { function main (line 100) | func main() { FILE: examples/popl17/cond-recur/main.go function x (line 7) | func x(ch chan int, done chan struct{}) { function main (line 21) | func main() { FILE: examples/popl17/dinephil/main.go function Fork (line 11) | func Fork(fork chan int) { function phil (line 19) | func phil(fork1, fork2 chan int, id int) { function main (line 45) | func main() { FILE: examples/popl17/fact/main.go function main (line 5) | func main() { function fact (line 11) | func fact(n int, results chan<- int) { FILE: examples/popl17/fanin-alt/main.go function work (line 11) | func work(out chan<- int) { function fanin (line 17) | func fanin(ch1, ch2, c chan int) { function main (line 36) | func main() { FILE: examples/popl17/fanin/main.go function work1 (line 7) | func work1(out chan<- int) { function work2 (line 12) | func work2(out chan<- int) { function fanin (line 18) | func fanin(ch1, ch2, c chan int) { function main (line 34) | func main() { FILE: examples/popl17/fib-async/main.go function main (line 7) | func main() { function fib (line 13) | func fib(n int, ch chan<- int) { FILE: examples/popl17/fib/main.go function main (line 7) | func main() { function fib (line 13) | func fib(n int, ch chan<- int) { FILE: examples/popl17/fixed/main.go function Work (line 8) | func Work() { function Send (line 15) | func Send(ch chan<- int) { ch <- 42 } function Recv (line 16) | func Recv(ch <-chan int, done chan<- int) { done <- <-ch } function main (line 18) | func main() { FILE: examples/popl17/forselect/main.go function sel1 (line 7) | func sel1(ch1, ch2 chan int, done chan struct{}) { function sel2 (line 20) | func sel2(ch1, ch2 chan int, done chan struct{}) { function main (line 33) | func main() { FILE: examples/popl17/jobsched/main.go function worker (line 10) | func worker(id int, jobQueue <-chan int, done <-chan struct{}) { function morejob (line 22) | func morejob() bool { function producer (line 27) | func producer(q chan int, done chan struct{}) { function main (line 34) | func main() { FILE: examples/popl17/mismatch/main.go function Work (line 8) | func Work() { function Send (line 15) | func Send(ch chan<- int) { ch <- 42 } function Recv (line 16) | func Recv(ch <-chan int, done chan<- int) { done <- <-ch } function main (line 18) | func main() { FILE: examples/popl17/sieve/main.go function Generate (line 14) | func Generate(ch chan<- int) { function Filter (line 22) | func Filter(in <-chan int, out chan<- int, prime int) { function main (line 32) | func main() { FILE: examples/popl17ae/close/main.go function main (line 3) | func main() { FILE: examples/popl17ae/emptyselect/main.go function s (line 3) | func s(ch chan int) { function main (line 7) | func main() { FILE: examples/powsers/powser1.go type rat (line 22) | type rat struct method pr (line 26) | func (u rat) pr() { method eq (line 35) | func (u rat) eq(c rat) bool { type dch (line 39) | type dch struct type dch2 (line 45) | type dch2 function mkdch (line 51) | func mkdch() *dch { function mkdch2 (line 61) | func mkdch2() *dch2 { function dosplit (line 82) | func dosplit(in *dch, out *dch2, wait chan int) { function split (line 112) | func split(in *dch, out *dch2) { function put (line 118) | func put(dat rat, out *dch) { function get (line 123) | func get(in *dch) rat { function getn (line 131) | func getn(in []*dch) []rat { function get2 (line 168) | func get2(in0 *dch, in1 *dch) []rat { function copy (line 172) | func copy(in *dch, out *dch) { function repeat (line 179) | func repeat(dat rat, out *dch) { type PS (line 185) | type PS type PS2 (line 186) | type PS2 function mkPS (line 191) | func mkPS() *dch { function mkPS2 (line 195) | func mkPS2() *dch2 { function gcd (line 207) | func gcd(u, v int64) int64 { function i2tor (line 219) | func i2tor(u, v int64) rat { function itor (line 232) | func itor(u int64) rat { function end (line 243) | func end(u rat) int64 { function add (line 252) | func add(u, v rat) rat { function mul (line 257) | func mul(u, v rat) rat { function neg (line 266) | func neg(u rat) rat { function sub (line 270) | func sub(u, v rat) rat { function inv (line 274) | func inv(u rat) rat { // invert a rat function evaln (line 282) | func evaln(c rat, U PS, n int) { function printn (line 298) | func printn(U PS, n int) { function eval (line 312) | func eval(c rat, U PS, n int) rat { function Split (line 329) | func Split(U PS) *dch2 { function Add (line 336) | func Add(U, V PS) PS { function Cmul (line 361) | func Cmul(c rat, U PS) PS { function Sub (line 381) | func Sub(U, V PS) PS { function Monmul (line 387) | func Monmul(U PS, n int) PS { function Xmul (line 400) | func Xmul(U PS) PS { function Rep (line 404) | func Rep(c rat) PS { function Mon (line 412) | func Mon(c rat, n int) PS { function Shift (line 426) | func Shift(c rat, U PS) PS { function Mul (line 461) | func Mul(U, V PS) PS { function Diff (line 483) | func Diff(U PS) PS { function Integ (line 506) | func Integ(c rat, U PS) PS { function Binom (line 526) | func Binom(c rat) PS { function Recip (line 550) | func Recip(U PS) PS { function Exp (line 570) | func Exp(U PS) PS { function Subst (line 582) | func Subst(U, V PS) PS { function MonSubst (line 603) | func MonSubst(U PS, c0 rat, n int) PS { function Init (line 625) | func Init() { function check (line 636) | func check(U PS, c rat, count int, str string) { constant N (line 650) | N = 10 function checka (line 652) | func checka(U PS, a []rat, str string) { function main (line 658) | func main() { FILE: examples/producer-consumer/main.go function produce (line 11) | func produce() { function consume (line 18) | func consume() { function main (line 25) | func main() { FILE: examples/ring-pattern/main.go function numprocs (line 5) | func numprocs() int { function adder (line 9) | func adder(in <-chan int, out chan<- int) { function main (line 15) | func main() { FILE: examples/russ-cox-fizzbuzz/main.go function main (line 5) | func main() { function generate (line 18) | func generate() <-chan string { function filter (line 28) | func filter(c <-chan string, n int, label string) <-chan string { FILE: examples/select-with-continuation/main.go function main (line 7) | func main() { FILE: examples/select-with-weak-mismatch/main.go function main (line 9) | func main() { FILE: examples/semaphores/main.go type empty (line 7) | type empty struct type Semaphore (line 8) | type Semaphore method P (line 15) | func (s Semaphore) P(n int) { method V (line 24) | func (s Semaphore) V(n int) { function NewSemaphore (line 10) | func NewSemaphore(cap int) Semaphore { function main (line 31) | func main() { FILE: examples/send-recv-with-interfaces/main.go type Interacter (line 7) | type Interacter interface type S (line 12) | type S struct method Send (line 14) | func (st S) Send(ch chan int) { method Recv (line 18) | func (st S) Recv(ch chan int) { function main (line 22) | func main() { FILE: examples/simple/main.go function main (line 7) | func main() { FILE: examples/single-gortn-method-call/main.go type T (line 5) | type T struct method setup (line 10) | func (t *T) setup(y int) { function main (line 15) | func main() { FILE: examples/spawn-in-choice/main.go function S (line 11) | func S(out chan int) { function R (line 16) | func R(in chan int) { function main (line 21) | func main() { FILE: examples/squaring-cancellation/main.go function gen (line 12) | func gen(done <-chan struct{}, nums ...int) <-chan int { function sq (line 27) | func sq(done <-chan struct{}, in <-chan int) <-chan int { function merge (line 42) | func merge(done <-chan struct{}, cs ...<-chan int) <-chan int { function main (line 72) | func main() { FILE: examples/squaring-fanin-bad/main.go function gen (line 17) | func gen(nums ...int) <-chan int { function sq (line 32) | func sq(in <-chan int) <-chan int { function merge (line 43) | func merge(cs ...<-chan int) <-chan int { function main (line 69) | func main() { FILE: examples/squaring-fanin/main.go function gen (line 16) | func gen(nums ...int) <-chan int { function sq (line 31) | func sq(in <-chan int) <-chan int { function merge (line 42) | func merge(cs ...<-chan int) <-chan int { function main (line 68) | func main() { FILE: examples/squaring-pipeline/main.go function gen (line 13) | func gen(nums ...int) <-chan int { function sq (line 28) | func sq(in <-chan int) <-chan int { function main (line 42) | func main() { FILE: examples/struct-done-channel/main.go type T (line 3) | type T struct function X (line 8) | func X(ctx T) { function main (line 12) | func main() { FILE: examples/timeout-behaviour/main.go function main (line 8) | func main() { FILE: fairness/fairness.go type FairnessAnalysis (line 23) | type FairnessAnalysis struct method Visit (line 35) | func (fa *FairnessAnalysis) Visit(fn *ssa.Function) { method isLikelyUnsafe (line 96) | func (fa *FairnessAnalysis) isLikelyUnsafe(blk *ssa.BasicBlock) bool { method isCondFair (line 120) | func (fa *FairnessAnalysis) isCondFair(cond ssa.Value) bool { method isIndexStatic (line 149) | func (fa *FairnessAnalysis) isIndexStatic(blk *ssa.BasicBlock) bool { function NewFairnessAnalysis (line 31) | func NewFairnessAnalysis() *FairnessAnalysis { function Check (line 165) | func Check(info *ssabuilder.SSAInfo) { FILE: logwriter/logwriter.go type Writer (line 17) | type Writer struct method Create (line 45) | func (w *Writer) Create() error { function NewFile (line 27) | func NewFile(logfile string, enableLogging, enableColour bool) *Writer { function New (line 36) | func New(w io.Writer, enableLogging, enableColour bool) *Writer { FILE: main.go function main (line 12) | func main() { FILE: migoextract/call.go method Call (line 14) | func (caller *Function) Call(call *ssa.Call, infer *TypeInfer, b *Block,... method Go (line 92) | func (caller *Function) Go(instr *ssa.Go, infer *TypeInfer) { method callLen (line 119) | func (caller *Function) callLen(common *ssa.CallCommon, infer *TypeInfer... method storeRetvals (line 137) | func (caller *Function) storeRetvals(infer *TypeInfer, retval ssa.Value,... method IsRecursiveCall (line 241) | func (caller *Function) IsRecursiveCall() bool { method invoke (line 250) | func (caller *Function) invoke(common *ssa.CallCommon, infer *TypeInfer,... method callFn (line 295) | func (caller *Function) callFn(common *ssa.CallCommon, infer *TypeInfer,... method call (line 299) | func (caller *Function) call(common *ssa.CallCommon, fn *ssa.Function, r... method callClosure (line 329) | func (caller *Function) callClosure(common *ssa.CallCommon, closure *ssa... function findMethod (line 339) | func findMethod(prog *ssa.Program, meth *types.Func, typ types.Type, inf... FILE: migoextract/chan.go function getChan (line 11) | func getChan(val ssa.Value, infer *TypeInfer) ssa.Value { FILE: migoextract/closure.go type Captures (line 4) | type Captures FILE: migoextract/commaok.go type CommaOk (line 11) | type CommaOk struct function isCommaOk (line 17) | func isCommaOk(f *Function, inst Instance) bool { FILE: migoextract/context.go type LoopState (line 17) | type LoopState constant NonLoop (line 21) | NonLoop LoopState = iota constant Enter (line 22) | Enter constant Body (line 23) | Body constant Exit (line 24) | Exit type LoopBound (line 28) | type LoopBound constant Unknown (line 32) | Unknown LoopBound = iota constant Static (line 33) | Static constant Dynamic (line 34) | Dynamic type Program (line 41) | type Program struct function NewProgram (line 52) | func NewProgram(infer *TypeInfer) *Program { type Function (line 67) | type Function struct method HasBody (line 138) | func (caller *Function) HasBody() bool { return caller.hasBody } method prepareCallFn (line 142) | func (caller *Function) prepareCallFn(common *ssa.CallCommon, fn *ssa.... method InstanceID (line 201) | func (caller *Function) InstanceID() int { method String (line 208) | func (caller *Function) String() string { method updateInstances (line 227) | func (caller *Function) updateInstances(old, new Instance) { function NewMainFunction (line 91) | func NewMainFunction(prog *Program, mainFn *ssa.Function) *Function { function NewFunction (line 114) | func NewFunction(caller *Function) *Function { type Block (line 266) | type Block struct function NewBlock (line 274) | func NewBlock(parent *Function, block *ssa.BasicBlock, curr int) *Block { type Context (line 286) | type Context struct FILE: migoextract/datastructure.go type Elems (line 12) | type Elems type Fields (line 15) | type Fields method getStructField (line 17) | func (caller *Function) getStructField(struc ssa.Value, idx int) (Instan... method setStructField (line 28) | func (caller *Function) setStructField(struc ssa.Value, idx int, instanc... function initNestedRefVar (line 42) | func initNestedRefVar(infer *TypeInfer, ctx *Context, inst Instance, hea... FILE: migoextract/instance.go type Instance (line 16) | type Instance interface type Value (line 23) | type Value struct method Instance (line 30) | func (i *Value) Instance() (int, int) { method String (line 34) | func (i *Value) String() string { type Placeholder (line 45) | type Placeholder struct method Instance (line 49) | func (i *Placeholder) Instance() (int, int) { method String (line 53) | func (i *Placeholder) String() string { type External (line 61) | type External struct method Instance (line 68) | func (i *External) Instance() (int, int) { method String (line 72) | func (i *External) String() string { type Const (line 85) | type Const struct method Instance (line 90) | func (c *Const) Instance() (int, int) { return 0, 0 } method String (line 92) | func (c *Const) String() string { FILE: migoextract/loop.go type Loop (line 17) | type Loop struct method SetInit (line 32) | func (l *Loop) SetInit(index ssa.Value, init int64) { method SetStep (line 39) | func (l *Loop) SetStep(step int64) { method SetCond (line 44) | func (l *Loop) SetCond(cond ssa.Value, max int64) { method Next (line 50) | func (l *Loop) Next() { method HasNext (line 57) | func (l *Loop) HasNext() bool { method String (line 64) | func (l *Loop) String() string { function loopSetIndex (line 72) | func loopSetIndex(instr *ssa.Phi, infer *TypeInfer, ctx *Context) { function loopDetectBounds (line 97) | func loopDetectBounds(instr *ssa.Phi, infer *TypeInfer, ctx *Context) { function loopStateTransition (line 128) | func loopStateTransition(blk *ssa.BasicBlock, infer *TypeInfer, f *Funct... FILE: migoextract/loopbound_string.go constant _LoopBound_name (line 7) | _LoopBound_name = "UnknownStaticDynamic" method String (line 11) | func (i LoopBound) String() string { FILE: migoextract/loopstack.go type LoopStack (line 8) | type LoopStack struct method Push (line 19) | func (s *LoopStack) Push(l *Loop) { method Pop (line 26) | func (s *LoopStack) Pop() (*Loop, error) { method IsEmpty (line 40) | func (s *LoopStack) IsEmpty() bool { function NewLoopStack (line 14) | func NewLoopStack() *LoopStack { FILE: migoextract/loopstate_string.go constant _LoopState_name (line 7) | _LoopState_name = "NonLoopEnterBodyExit" method String (line 11) | func (i LoopState) String() string { FILE: migoextract/migoextract.go type TypeInfer (line 17) | type TypeInfer struct method Run (line 42) | func (infer *TypeInfer) Run() { method RunQueue (line 85) | func (infer *TypeInfer) RunQueue() { function New (line 29) | func New(ssainfo *ssabuilder.SSAInfo, inferlog io.Writer) (*TypeInfer, e... FILE: migoextract/phi.go function phiSelectEdge (line 10) | func phiSelectEdge(instr *ssa.Phi, infer *TypeInfer, ctx *Context) (edge... FILE: migoextract/pointer.go function derefType (line 10) | func derefType(t types.Type) types.Type { function derefAllType (line 18) | func derefAllType(t types.Type) types.Type { FILE: migoextract/print.go constant BlockSymbol (line 13) | BlockSymbol = "┝ " constant CallSymbol (line 14) | CallSymbol = " ↘ " constant ExitSymbol (line 15) | ExitSymbol = " ↙ " constant ChanSymbol (line 16) | ChanSymbol = "ν " constant FuncEnterSymbol (line 17) | FuncEnterSymbol = "┌" constant FuncExitSymbol (line 18) | FuncExitSymbol = "└" constant RecvSymbol (line 19) | RecvSymbol = "❓ " constant SendSymbol (line 20) | SendSymbol = "❗ " constant SkipSymbol (line 21) | SkipSymbol = "┆ " constant SpawnSymbol (line 22) | SpawnSymbol = "┿ " constant JumpSymbol (line 23) | JumpSymbol = " ⇾ " constant ParamSymbol (line 24) | ParamSymbol = "├param " constant MoreSymbol (line 25) | MoreSymbol = "┊ " constant ReturnSymbol (line 26) | ReturnSymbol = "⏎ " constant LoopSymbol (line 27) | LoopSymbol = "↻ " constant PhiSymbol (line 28) | PhiSymbol = "φ " constant IfSymbol (line 29) | IfSymbol = "⨁ " constant SelectSymbol (line 30) | SelectSymbol = "Sel:" constant SplitSymbol (line 31) | SplitSymbol = "分" constant ErrorSymbol (line 32) | ErrorSymbol = " ◹ " constant FieldSymbol (line 33) | FieldSymbol = " ↦ " constant NewSymbol (line 34) | NewSymbol = "新" constant SubSymbol (line 35) | SubSymbol = " ▸ " constant ValSymbol (line 36) | ValSymbol = "├ " constant AssignSymbol (line 37) | AssignSymbol = "≔" method Sprintf (line 53) | func (ctx *Function) Sprintf(format string, a ...interface{}) string { FILE: migoextract/select.go type Select (line 9) | type Select struct FILE: migoextract/storage.go type Storage (line 4) | type Storage struct function NewStorage (line 11) | func NewStorage() *Storage { FILE: migoextract/tuple.go type Tuples (line 7) | type Tuples FILE: migoextract/visit.go function visitFunc (line 14) | func visitFunc(fn *ssa.Function, infer *TypeInfer, f *Function) { function visitBasicBlock (line 42) | func visitBasicBlock(blk *ssa.BasicBlock, infer *TypeInfer, f *Function,... function visitInstr (line 80) | func visitInstr(instr ssa.Instruction, infer *TypeInfer, ctx *Context) { function visitAlloc (line 158) | func visitAlloc(instr *ssa.Alloc, infer *TypeInfer, ctx *Context) { function visitBinOp (line 210) | func visitBinOp(instr *ssa.BinOp, infer *TypeInfer, ctx *Context) { function visitCall (line 266) | func visitCall(instr *ssa.Call, infer *TypeInfer, ctx *Context) { function visitChangeType (line 271) | func visitChangeType(instr *ssa.ChangeType, infer *TypeInfer, ctx *Conte... function visitChangeInterface (line 295) | func visitChangeInterface(instr *ssa.ChangeInterface, infer *TypeInfer, ... function visitConvert (line 303) | func visitConvert(instr *ssa.Convert, infer *TypeInfer, ctx *Context) { function visitDefer (line 325) | func visitDefer(instr *ssa.Defer, infer *TypeInfer, ctx *Context) { function visitDeref (line 329) | func visitDeref(instr *ssa.UnOp, infer *TypeInfer, ctx *Context) { function visitExtract (line 362) | func visitExtract(instr *ssa.Extract, infer *TypeInfer, ctx *Context) { function visitField (line 402) | func visitField(instr *ssa.Field, infer *TypeInfer, ctx *Context) { function visitFieldAddr (line 432) | func visitFieldAddr(instr *ssa.FieldAddr, infer *TypeInfer, ctx *Context) { function visitGo (line 483) | func visitGo(instr *ssa.Go, infer *TypeInfer, ctx *Context) { function visitIf (line 488) | func visitIf(instr *ssa.If, infer *TypeInfer, ctx *Context) { function visitIndex (line 641) | func visitIndex(instr *ssa.Index, infer *TypeInfer, ctx *Context) { function visitIndexAddr (line 674) | func visitIndexAddr(instr *ssa.IndexAddr, infer *TypeInfer, ctx *Context) { function visitJump (line 776) | func visitJump(jump *ssa.Jump, infer *TypeInfer, ctx *Context) { function visitLookup (line 847) | func visitLookup(instr *ssa.Lookup, infer *TypeInfer, ctx *Context) { function visitMakeChan (line 877) | func visitMakeChan(instr *ssa.MakeChan, infer *TypeInfer, ctx *Context) { function visitMakeClosure (line 911) | func visitMakeClosure(instr *ssa.MakeClosure, infer *TypeInfer, ctx *Con... function visitMakeInterface (line 920) | func visitMakeInterface(instr *ssa.MakeInterface, infer *TypeInfer, ctx ... function visitMakeMap (line 934) | func visitMakeMap(instr *ssa.MakeMap, infer *TypeInfer, ctx *Context) { function visitMakeSlice (line 940) | func visitMakeSlice(instr *ssa.MakeSlice, infer *TypeInfer, ctx *Context) { function visitMapUpdate (line 946) | func visitMapUpdate(instr *ssa.MapUpdate, infer *TypeInfer, ctx *Context) { function visitNext (line 976) | func visitNext(instr *ssa.Next, infer *TypeInfer, ctx *Context) { function visitPhi (line 982) | func visitPhi(instr *ssa.Phi, infer *TypeInfer, ctx *Context) { function visitRecv (line 999) | func visitRecv(instr *ssa.UnOp, infer *TypeInfer, ctx *Context) { function visitReturn (line 1028) | func visitReturn(ret *ssa.Return, infer *TypeInfer, ctx *Context) { function visitRunDefers (line 1051) | func visitRunDefers(instr *ssa.RunDefers, infer *TypeInfer, ctx *Context) { function visitSelect (line 1070) | func visitSelect(instr *ssa.Select, infer *TypeInfer, ctx *Context) { function visitSend (line 1123) | func visitSend(instr *ssa.Send, infer *TypeInfer, ctx *Context) { function visitSkip (line 1141) | func visitSkip(instr ssa.Instruction, infer *TypeInfer, ctx *Context) { function visitSlice (line 1149) | func visitSlice(instr *ssa.Slice, infer *TypeInfer, ctx *Context) { function visitStore (line 1188) | func visitStore(instr *ssa.Store, infer *TypeInfer, ctx *Context) { function visitTypeAssert (line 1257) | func visitTypeAssert(instr *ssa.TypeAssert, infer *TypeInfer, ctx *Conte... FILE: ssabuilder/callgraph/callgraph.go type Node (line 9) | type Node struct method Traverse (line 37) | func (node *Node) Traverse(v FuncVisitor) { function Build (line 19) | func Build(main *ssa.Function) *Node { type FuncVisitor (line 32) | type FuncVisitor interface function visitBlock (line 44) | func visitBlock(b *ssa.BasicBlock, node *Node) { FILE: ssabuilder/channel.go type ChanOpType (line 14) | type ChanOpType constant ChanMake (line 17) | ChanMake ChanOpType = iota constant ChanSend (line 18) | ChanSend constant ChanRecv (line 19) | ChanRecv constant ChanClose (line 20) | ChanClose type ChanOp (line 24) | type ChanOp struct function chanOps (line 31) | func chanOps(instr ssa.Instruction) []ChanOp { function progChanOps (line 59) | func progChanOps(prog *ssa.Program) []ChanOp { function purgeChanOps (line 78) | func purgeChanOps(ops []ChanOp, ch ssa.Value) []ChanOp { FILE: ssabuilder/pointer.go function setupPTA (line 17) | func setupPTA(prog *ssa.Program, lprog *loader.Program, ptaLog io.Writer... FILE: ssabuilder/print.go type Members (line 11) | type Members method Len (line 13) | func (m Members) Len() int { return len(m) } method Less (line 14) | func (m Members) Less(i, j int) bool { return m[i].Pos() < m[j].Pos() } method Swap (line 15) | func (m Members) Swap(i, j int) { m[i], m[j] = m[j], m[i] } method WriteTo (line 18) | func (info *SSAInfo) WriteTo(w io.Writer) (int64, error) { method WriteAll (line 42) | func (info *SSAInfo) WriteAll(w io.Writer) (int64, error) { FILE: ssabuilder/ssabuild.go type Mode (line 22) | type Mode constant FromFiles (line 26) | FromFiles Mode = 1 << iota constant FromString (line 29) | FromString type Config (line 33) | type Config struct method Build (line 96) | func (conf *Config) Build() (*SSAInfo, error) { type SSAInfo (line 44) | type SSAInfo struct method CallGraph (line 162) | func (info *SSAInfo) CallGraph() *callgraph.Node { method DecodePos (line 173) | func (info *SSAInfo) DecodePos(pos token.Pos) token.Position { method NewPta (line 178) | func (info *SSAInfo) NewPta(vals ...ssa.Value) *pointer.Result { method FindChan (line 191) | func (info *SSAInfo) FindChan(ch ssa.Value) []ChanOp { function NewConfig (line 69) | func NewConfig(files []string) (*Config, error) { function NewConfigFromString (line 84) | func NewConfigFromString(s string) (*Config, error) { FILE: ssabuilder/util.go function MainPkg (line 8) | func MainPkg(prog *ssa.Program) *ssa.Package { FILE: static/script.js function goCode (line 2) | function goCode() { function migoCode (line 9) | function migoCode() { function writeTo (line 17) | function writeTo(s, selector) { function reportTime (line 25) | function reportTime(t) { FILE: talks/basic/concurrency.go function deepThought (line 10) | func deepThought(replyCh chan int) { function main (line 15) | func main() { FILE: talks/basic/fanin.go function work (line 9) | func work(out chan<- int) { function fanin (line 14) | func fanin(input1, input2 <-chan int) <-chan int { function main (line 29) | func main() { FILE: talks/basic/select.go function calc (line 11) | func calc(ch chan int) { function main (line 18) | func main() { FILE: talks/deadlock/deadlock.go function Send (line 14) | func Send(ch chan<- int) { ch <- 42 } function RecvAck (line 15) | func RecvAck(ch <-chan int, done chan<- int) { v := <-ch; done <- v } function main (line 17) | func main() { FILE: talks/static/dir.js function bindEvent (line 7) | function bindEvent(el, e, fn) { function godocs_bindSearchEvents (line 15) | function godocs_bindSearchEvents() { FILE: talks/static/jquery-ui.js function i (line 6) | function i(t,i){var a,n,r,o=t.nodeName.toLowerCase();return"area"===o?(a... function s (line 6) | function s(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack(... function a (line 6) | function a(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"pa... function h (line 6) | function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-st... function i (line 6) | function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)} function t (line 6) | function t(e){return parseInt(e,10)||0} function i (line 6) | function i(e){return!isNaN(parseInt(e,10))} FILE: talks/static/slides.js function hideHelpText (line 137) | function hideHelpText() { function getSlideEl (line 141) | function getSlideEl(no) { function updateSlideClass (line 149) | function updateSlideClass(slideNo, className) { function updateSlides (line 167) | function updateSlides() { function prevSlide (line 207) | function prevSlide() { function nextSlide (line 216) | function nextSlide() { function triggerEnterEvent (line 227) | function triggerEnterEvent(no) { function triggerLeaveEvent (line 245) | function triggerLeaveEvent(no) { function handleTouchStart (line 265) | function handleTouchStart(event) { function handleTouchMove (line 278) | function handleTouchMove(event) { function handleTouchEnd (line 288) | function handleTouchEnd(event) { function cancelTouch (line 303) | function cancelTouch() { function disableSlideFrames (line 310) | function disableSlideFrames(no) { function enableSlideFrames (line 322) | function enableSlideFrames(no) { function disableFrame (line 334) | function disableFrame(frame) { function enableFrame (line 338) | function enableFrame(frame) { function setupFrames (line 346) | function setupFrames() { function setupInteraction (line 358) | function setupInteraction() { function getCurSlideFromHash (line 380) | function getCurSlideFromHash() { function updateHash (line 390) | function updateHash() { function handleBodyKeyDown (line 396) | function handleBodyKeyDown(event) { function addEventListeners (line 437) | function addEventListeners() { function addFontStyle (line 443) | function addFontStyle() { function addGeneralStyle (line 453) | function addGeneralStyle() { function showHelpText (line 471) | function showHelpText() { function handleDomLoaded (line 474) | function handleDomLoaded() { function initialize (line 494) | function initialize() { FILE: talks/talk-golanguk-2016/datatype.go function main (line 9) | func main() { FILE: talks/talk-golanguk-2016/deadlock-notdetected.go function Sender (line 10) | func Sender(ch chan<- int) { function Receiver (line 14) | func Receiver(ch <-chan int, done chan<- int) { function main (line 18) | func main() { FILE: talks/talk-golanguk-2016/deadlock.go function Work (line 11) | func Work() { function Sender (line 19) | func Sender(ch chan<- int) { function Receiver (line 22) | func Receiver(ch <-chan int, done chan<- int) { function main (line 26) | func main() { FILE: webservice/cfsm.go function cfsmHandler (line 15) | func cfsmHandler(w http.ResponseWriter, req *http.Request) { FILE: webservice/errors.go type ErrInternal (line 9) | type ErrInternal struct method Error (line 18) | func (e *ErrInternal) Error() string { method Report (line 23) | func (e *ErrInternal) Report(w http.ResponseWriter) { function NewErrInternal (line 14) | func NewErrInternal(cause error, message string) *ErrInternal { FILE: webservice/gong.go function gongHandler (line 14) | func gongHandler(w http.ResponseWriter, req *http.Request) { FILE: webservice/handlers.go function indexHandler (line 19) | func indexHandler(w http.ResponseWriter, req *http.Request) { function loadHandler (line 48) | func loadHandler(w http.ResponseWriter, req *http.Request) { FILE: webservice/migo.go function migoHandler (line 14) | func migoHandler(w http.ResponseWriter, req *http.Request) { FILE: webservice/play.go constant basePkg (line 18) | basePkg = "golang.org/x/tools/cmd/present" function initPlayground (line 22) | func initPlayground(origin *url.URL) { function playScript (line 33) | func playScript(root, transport string) { FILE: webservice/server.go type Server (line 12) | type Server struct method Start (line 27) | func (s *Server) Start() { method Close (line 44) | func (s *Server) Close() { method URL (line 48) | func (s *Server) URL() string { method Listener (line 52) | func (s *Server) Listener() net.Listener { function NewServer (line 20) | func NewServer(iface string, port string) *Server { FILE: webservice/ssa.go function ssaHandler (line 10) | func ssaHandler(w http.ResponseWriter, req *http.Request) { FILE: webservice/synthesis.go function synthesisHandler (line 16) | func synthesisHandler(w http.ResponseWriter, req *http.Request) {