Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Compiler panics when building golang.org/x/sync/singleflight #1088

Closed
@DaveHasteSpringer

Description

@DaveHasteSpringer

Recent versions of golang.org/x/sync/singleflight cause a panic in the gopherjs compiler.

These are the versions of Go and GopherJS that I'm using:

$ go version
go version go1.17.2 darwin/amd64

$ gopherjs version
GopherJS 1.17.1+go1.17.3

This is the most concise test code I can use to reproduce the problem:

package main

import "golang.org/x/sync/singleflight"

func main() {
	var group singleflight.Group

	group.Do("key", func() (interface{}, error) {
		return nil, nil
	})
}

This is my go.mod file:

module gopherjs-test

go 1.17

require golang.org/x/sync v0.0.0-20210220032951-036812b2e83c

The code builds fine with the go compiler:

$ go build test.go
$ echo $?
0

However the GopherJS compiler panics:

$ gopherjs build test.go
[compiler panic]  Unhandled object: *types.Builtin


 Occurred while compiling statement at /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:162:5:
     0  *ast.GoStmt {
     1  .  Go: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:162:5
     2  .  Call: *ast.CallExpr {
     3  .  .  Fun: *ast.Ident {
     4  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:162:8
     5  .  .  .  Name: "panic"
     6  .  .  }
     7  .  .  Lparen: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:162:13
     8  .  .  Args: []ast.Expr (len = 1) {
     9  .  .  .  0: *ast.Ident {
    10  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:162:14
    11  .  .  .  .  Name: "e"
    12  .  .  .  .  Obj: *ast.Object {
    13  .  .  .  .  .  Kind: var
    14  .  .  .  .  .  Name: "e"
    15  .  .  .  .  .  Decl: *ast.AssignStmt {
    16  .  .  .  .  .  .  Lhs: []ast.Expr (len = 2) {
    17  .  .  .  .  .  .  .  0: *ast.Ident {
    18  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:6
    19  .  .  .  .  .  .  .  .  Name: "e"
    20  .  .  .  .  .  .  .  .  Obj: *(obj @ 12)
    21  .  .  .  .  .  .  .  }
    22  .  .  .  .  .  .  .  1: *ast.Ident {
    23  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:9
    24  .  .  .  .  .  .  .  .  Name: "ok"
    25  .  .  .  .  .  .  .  .  Obj: *ast.Object {
    26  .  .  .  .  .  .  .  .  .  Kind: var
    27  .  .  .  .  .  .  .  .  .  Name: "ok"
    28  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 15)
    29  .  .  .  .  .  .  .  .  }
    30  .  .  .  .  .  .  .  }
    31  .  .  .  .  .  .  }
    32  .  .  .  .  .  .  TokPos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:12
    33  .  .  .  .  .  .  Tok: :=
    34  .  .  .  .  .  .  Rhs: []ast.Expr (len = 1) {
    35  .  .  .  .  .  .  .  0: *ast.TypeAssertExpr {
    36  .  .  .  .  .  .  .  .  X: *ast.SelectorExpr {
    37  .  .  .  .  .  .  .  .  .  X: *ast.Ident {
    38  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:15
    39  .  .  .  .  .  .  .  .  .  .  Name: "c"
    40  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
    41  .  .  .  .  .  .  .  .  .  .  .  Kind: var
    42  .  .  .  .  .  .  .  .  .  .  .  Name: "c"
    43  .  .  .  .  .  .  .  .  .  .  .  Decl: *ast.Field {
    44  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
    45  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
    46  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:139:24
    47  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "c"
    48  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *(obj @ 40)
    49  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    50  .  .  .  .  .  .  .  .  .  .  .  .  }
    51  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.StarExpr {
    52  .  .  .  .  .  .  .  .  .  .  .  .  .  Star: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:139:26
    53  .  .  .  .  .  .  .  .  .  .  .  .  .  X: *ast.Ident {
    54  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:139:27
    55  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "call"
    56  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
    57  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: type
    58  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "call"
    59  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *ast.TypeSpec {
    60  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: *ast.Ident {
    61  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:47:6
    62  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "call"
    63  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *(obj @ 56)
    64  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    65  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Assign: -
    66  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.StructType {
    67  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Struct: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:47:11
    68  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Fields: *ast.FieldList {
    69  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Opening: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:47:18
    70  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  List: []*ast.Field (len = 6) {
    71  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Field {
    72  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
    73  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
    74  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:48:2
    75  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "wg"
    76  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
    77  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
    78  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "wg"
    79  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 71)
    80  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    81  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    82  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    83  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.SelectorExpr {
    84  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  X: *ast.Ident {
    85  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:48:5
    86  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "sync"
    87  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    88  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Sel: *ast.Ident {
    89  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:48:10
    90  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "WaitGroup"
    91  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    92  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    93  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
    94  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  1: *ast.Field {
    95  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Doc: *ast.CommentGroup {
    96  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  List: []*ast.Comment (len = 2) {
    97  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Comment {
    98  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Slash: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:50:2
    99  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Text: "// These fields are written once before the WaitGroup is done"
   100  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   101  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  1: *ast.Comment {
   102  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Slash: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:51:2
   103  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Text: "// and are only read after the WaitGroup is done."
   104  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   105  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   106  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   107  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   108  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   109  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:52:2
   110  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "val"
   111  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   112  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   113  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "val"
   114  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 94)
   115  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   116  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   117  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   118  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.InterfaceType {
   119  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Interface: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:52:6
   120  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Methods: *ast.FieldList {
   121  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Opening: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:52:15
   122  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Closing: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:52:16
   123  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   124  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Incomplete: false
   125  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   126  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   127  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  2: *ast.Field {
   128  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   129  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   130  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:53:2
   131  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "err"
   132  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   133  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   134  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "err"
   135  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 127)
   136  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   137  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   138  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   139  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.Ident {
   140  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:53:6
   141  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "error"
   142  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   143  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   144  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  3: *ast.Field {
   145  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Doc: *ast.CommentGroup {
   146  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  List: []*ast.Comment (len = 2) {
   147  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Comment {
   148  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Slash: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:55:2
   149  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Text: "// forgotten indicates whether Forget was called with this call's key"
   150  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   151  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  1: *ast.Comment {
   152  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Slash: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:56:2
   153  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Text: "// while the call was still in flight."
   154  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   155  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   156  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   157  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   158  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   159  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:57:2
   160  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "forgotten"
   161  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   162  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   163  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "forgotten"
   164  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 144)
   165  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   166  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   167  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   168  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.Ident {
   169  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:57:12
   170  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "bool"
   171  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   172  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   173  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  4: *ast.Field {
   174  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Doc: *ast.CommentGroup {
   175  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  List: []*ast.Comment (len = 3) {
   176  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Comment {
   177  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Slash: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:59:2
   178  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Text: "// These fields are read and written with the singleflight"
   179  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   180  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  1: *ast.Comment {
   181  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Slash: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:60:2
   182  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Text: "// mutex held before the WaitGroup is done, and are read but"
   183  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   184  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  2: *ast.Comment {
   185  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Slash: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:61:2
   186  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Text: "// not written after the WaitGroup is done."
   187  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   188  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   189  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   190  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   191  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   192  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:62:2
   193  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "dups"
   194  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   195  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   196  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "dups"
   197  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 173)
   198  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   199  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   200  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   201  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.Ident {
   202  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:62:8
   203  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "int"
   204  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   205  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   206  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  5: *ast.Field {
   207  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   208  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   209  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:63:2
   210  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "chans"
   211  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   212  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   213  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "chans"
   214  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 206)
   215  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   216  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   217  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   218  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.ArrayType {
   219  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Lbrack: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:63:8
   220  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Elt: *ast.ChanType {
   221  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Begin: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:63:10
   222  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Arrow: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:63:14
   223  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Dir: 1
   224  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Value: *ast.Ident {
   225  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:63:17
   226  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Result"
   227  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   228  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: type
   229  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Result"
   230  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *ast.TypeSpec {
   231  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: *ast.Ident {
   232  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:75:6
   233  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Result"
   234  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *(obj @ 227)
   235  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   236  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Assign: -
   237  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.StructType {
   238  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Struct: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:75:13
   239  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Fields: *ast.FieldList {
   240  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Opening: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:75:20
   241  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  List: []*ast.Field (len = 3) {
   242  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Field {
   243  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   244  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   245  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:76:2
   246  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Val"
   247  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   248  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   249  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Val"
   250  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 242)
   251  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   252  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   253  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   254  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.InterfaceType {
   255  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Interface: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:76:9
   256  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Methods: *ast.FieldList {
   257  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Opening: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:76:18
   258  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Closing: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:76:19
   259  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   260  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Incomplete: false
   261  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   262  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   263  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  1: *ast.Field {
   264  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   265  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   266  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:77:2
   267  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Err"
   268  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   269  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   270  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Err"
   271  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 263)
   272  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   273  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   274  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   275  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.Ident {
   276  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:77:9
   277  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "error"
   278  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   279  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   280  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  2: *ast.Field {
   281  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   282  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   283  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:78:2
   284  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Shared"
   285  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   286  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   287  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "Shared"
   288  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 280)
   289  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   290  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   291  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   292  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.Ident {
   293  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:78:9
   294  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "bool"
   295  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   296  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   297  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   298  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Closing: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:79:1
   299  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   300  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Incomplete: false
   301  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   302  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   303  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   304  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   305  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   306  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   307  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   308  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   309  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Closing: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:64:1
   310  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   311  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Incomplete: false
   312  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   313  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   314  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   315  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   316  .  .  .  .  .  .  .  .  .  .  .  .  }
   317  .  .  .  .  .  .  .  .  .  .  .  }
   318  .  .  .  .  .  .  .  .  .  .  }
   319  .  .  .  .  .  .  .  .  .  }
   320  .  .  .  .  .  .  .  .  .  Sel: *ast.Ident {
   321  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:17
   322  .  .  .  .  .  .  .  .  .  .  Name: "err"
   323  .  .  .  .  .  .  .  .  .  }
   324  .  .  .  .  .  .  .  .  }
   325  .  .  .  .  .  .  .  .  Lparen: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:21
   326  .  .  .  .  .  .  .  .  Type: *ast.StarExpr {
   327  .  .  .  .  .  .  .  .  .  Star: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:22
   328  .  .  .  .  .  .  .  .  .  X: *ast.Ident {
   329  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:23
   330  .  .  .  .  .  .  .  .  .  .  Name: "panicError"
   331  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   332  .  .  .  .  .  .  .  .  .  .  .  Kind: type
   333  .  .  .  .  .  .  .  .  .  .  .  Name: "panicError"
   334  .  .  .  .  .  .  .  .  .  .  .  Decl: *ast.TypeSpec {
   335  .  .  .  .  .  .  .  .  .  .  .  .  Name: *ast.Ident {
   336  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:24:6
   337  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "panicError"
   338  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *(obj @ 331)
   339  .  .  .  .  .  .  .  .  .  .  .  .  }
   340  .  .  .  .  .  .  .  .  .  .  .  .  Assign: -
   341  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.StructType {
   342  .  .  .  .  .  .  .  .  .  .  .  .  .  Struct: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:24:17
   343  .  .  .  .  .  .  .  .  .  .  .  .  .  Fields: *ast.FieldList {
   344  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Opening: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:24:24
   345  .  .  .  .  .  .  .  .  .  .  .  .  .  .  List: []*ast.Field (len = 2) {
   346  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Field {
   347  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   348  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   349  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:25:2
   350  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "value"
   351  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   352  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   353  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "value"
   354  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 346)
   355  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   356  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   357  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   358  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.InterfaceType {
   359  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Interface: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:25:8
   360  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Methods: *ast.FieldList {
   361  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Opening: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:25:17
   362  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Closing: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:25:18
   363  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   364  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Incomplete: false
   365  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   366  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   367  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  1: *ast.Field {
   368  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Names: []*ast.Ident (len = 1) {
   369  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  0: *ast.Ident {
   370  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:26:2
   371  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "stack"
   372  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Obj: *ast.Object {
   373  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Kind: var
   374  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "stack"
   375  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Decl: *(obj @ 367)
   376  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   377  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   378  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   379  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Type: *ast.ArrayType {
   380  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Lbrack: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:26:8
   381  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Elt: *ast.Ident {
   382  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  NamePos: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:26:10
   383  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Name: "byte"
   384  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   385  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   386  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   387  .  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   388  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Closing: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:27:1
   389  .  .  .  .  .  .  .  .  .  .  .  .  .  }
   390  .  .  .  .  .  .  .  .  .  .  .  .  .  Incomplete: false
   391  .  .  .  .  .  .  .  .  .  .  .  .  }
   392  .  .  .  .  .  .  .  .  .  .  .  }
   393  .  .  .  .  .  .  .  .  .  .  }
   394  .  .  .  .  .  .  .  .  .  }
   395  .  .  .  .  .  .  .  .  }
   396  .  .  .  .  .  .  .  .  Rparen: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:158:33
   397  .  .  .  .  .  .  .  }
   398  .  .  .  .  .  .  }
   399  .  .  .  .  .  }
   400  .  .  .  .  }
   401  .  .  .  }
   402  .  .  }
   403  .  .  Ellipsis: -
   404  .  .  Rparen: /Users/hast02/code/go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go:162:15
   405  .  }
   406  }


 goroutine 1 [running]:
runtime/debug.Stack()
	/usr/local/Cellar/go/1.17.2/libexec/src/runtime/debug/stack.go:24 +0x65
github.com/gopherjs/gopherjs/compiler.bailout(...)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/utils.go:807
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmt.func1()
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:36 +0x7f
panic({0x1494c60, 0xc000e31e50})
	/usr/local/Cellar/go/1.17.2/libexec/src/runtime/panic.go:1047 +0x266
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateExpr(0xc00069a210, {0x16125e0, 0xc000cf14e0})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/expressions.go:767 +0x76d4
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmt(0xc00069a210, {0x16125b0, 0xc000df8010}, 0x0)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:499 +0x36a5
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmtList(0xc00069a210, {0xc000de4300, 0x2, 0xb})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:19 +0x79
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateBranchingStmt.func2()
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:646 +0x6a
github.com/gopherjs/gopherjs/compiler.(*funcContext).Indent(...)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/utils.go:61
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateBranchingStmt(0xc00069a210, {0xc0006897c8, 0x0, 0x1}, 0xc000df7800, 0xa0, 0xc001162a00, 0x0, 0x1)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:645 +0x88e
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmt(0xc00069a210, {0x1612610, 0xc000df6200}, 0x0)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:73 +0x62ad
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmtList(0xc00069a210, {0xc000df8080, 0x1, 0xb})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:19 +0x79
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateBranchingStmt.func2()
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:646 +0x6a
github.com/gopherjs/gopherjs/compiler.(*funcContext).Indent(...)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/utils.go:61
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateBranchingStmt(0xc00069a210, {0xc000e31c70, 0x2, 0x2}, 0xc000df7780, 0x1, 0xc0011635b8, 0x0, 0x1)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:645 +0x88e
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmt(0xc00069a210, {0x1612610, 0xc000df62c0}, 0x0)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:73 +0x62ad
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmtList(0xc00069a210, {0xc000de4320, 0x2, 0x1})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:19 +0x79
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmt(0xc00069a210, {0x1612280, 0xc000dd33e0}, 0x0)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:53 +0x3f8
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmtList(0xc00069a210, {0xc000da6f80, 0x6, 0xc000dfd5f0})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:19 +0x79
github.com/gopherjs/gopherjs/compiler.translateFunction.func1()
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:771 +0x30b
github.com/gopherjs/gopherjs/compiler.(*funcContext).CatchOutput(0xc00069a210, 0x1, 0x1528fa1)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/utils.go:69 +0x78
github.com/gopherjs/gopherjs/compiler.translateFunction(0xc000704d08, 0x0, 0xc000dd3680, 0xc00069a0b0, 0xc00079aa20, 0xc000da7700, {0x0, 0x0})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:746 +0x4ba
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateExpr(0xc00069a0b0, {0x1612520, 0xc000df80d0})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/expressions.go:180 +0x4775
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmt(0xc00069a0b0, {0x1612400, 0xc000df80e0}, 0x0)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:403 +0x73d
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateStmtList(0xc00069a0b0, {0xc000da7000, 0x5, 0xc001166a58})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/statements.go:19 +0x79
github.com/gopherjs/gopherjs/compiler.translateFunction.func1()
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:771 +0x30b
github.com/gopherjs/gopherjs/compiler.(*funcContext).CatchOutput(0xc00069a0b0, 0x1, 0xc000db8640)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/utils.go:69 +0x78
github.com/gopherjs/gopherjs/compiler.translateFunction(0xc000705158, 0xc000cf0d60, 0xc000dd3800, 0xc0000fbb80, 0xc0007876e0, 0xc000da7600, {0xc000e03320, 0x1a})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:746 +0x4ba
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateToplevelFunction.func1({0xc000e03320, 0x1a})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:658 +0x79
github.com/gopherjs/gopherjs/compiler.(*funcContext).translateToplevelFunction(0xc0000fbb80, 0xc000dd3830, 0xc000da7600)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:687 +0x30c
github.com/gopherjs/gopherjs/compiler.Compile.func9()
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:434 +0x31
github.com/gopherjs/gopherjs/compiler.Compile.func5(0xc001167928)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:322 +0x7e
github.com/gopherjs/gopherjs/compiler.Compile({0xc00023e060, 0x1e}, {0xc000289e58, 0x2f918a00, 0x1}, 0xc0010b6c80, 0xc000a64a00, 0x0)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:433 +0x27d2
github.com/gopherjs/gopherjs/build.(*Session).BuildPackage(0xc000020e10, 0xc000228500)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/build/build.go:695 +0x3a9
github.com/gopherjs/gopherjs/build.(*Session).buildImportPathWithSrcDir(0xc000020e10, {0xc000024101, 0xc000024101}, {0xc000024080, 0x146781e})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/build/build.go:583 +0xca
github.com/gopherjs/gopherjs/build.(*Session).BuildPackage.func1({0xc000024101, 0x1e})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/build/build.go:687 +0x85
github.com/gopherjs/gopherjs/compiler.packageImporter.Import({0xc0000625c0, 0xc0000625d0}, {0xc000024101, 0xc0000625f0})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:112 +0x6b
go/types.(*Checker).importPackage(0xc00022c140, {0x16080c0, 0xc00006c3a0}, {0xc000024101, 0x1e}, {0xc00002a300, 0x20})
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/resolver.go:162 +0x265
go/types.(*Checker).collectObjects.func1({0x1609160, 0xc000020fc0})
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/resolver.go:262 +0xb11
go/types.(*Checker).walkDecl(0x800000000000, {0x1612580, 0xc000032580}, 0xc001168940)
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/decl.go:431 +0x1c7
go/types.(*Checker).walkDecls(0xc00002a300, {0xc00006c580, 0x2, 0xc00020aea0}, 0x1528563)
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/decl.go:418 +0x6a
go/types.(*Checker).collectObjects(0xc00022c140)
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/resolver.go:252 +0x225
go/types.(*Checker).checkFiles(0xc00022c140, {0xc000010128, 0xc000228280, 0x0})
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/check.go:263 +0xb5
go/types.(*Checker).Files(...)
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/check.go:250
go/types.(*Config).Check(0x1609040, {0x1528560, 0x4}, 0xc000208380, {0xc000010128, 0x1, 0x1}, 0xc000206bb0)
	/usr/local/Cellar/go/1.17.2/libexec/src/go/types/api.go:296 +0x85
github.com/gopherjs/gopherjs/compiler.Compile({0x1528560, 0x4}, {0xc000010128, 0x0, 0x1}, 0xc000032540, 0xc0000625c0, 0x0)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/compiler/package.go:179 +0x73d
github.com/gopherjs/gopherjs/build.(*Session).BuildPackage(0xc000020e10, 0xc000228050)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/build/build.go:695 +0x3a9
github.com/gopherjs/gopherjs/build.(*Session).BuildFiles(0xc000020e10, {0xc000062400, 0x1, 0x15280c4}, {0xc0000262e8, 0x7}, {0xc000024080, 0x20})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/build/build.go:559 +0x3c8
main.main.func1.1({0xc000062400, 0x1, 0x1}, 0xc000062190, 0xc000020e10, 0xc000032280)
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/tool.go:125 +0x5a5
main.main.func1(0xc000210000, {0xc000062400, 0x1, 0x1})
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/tool.go:164 +0x174
github.com/spf13/cobra.(*Command).execute(0xc000210000, {0xc0000623d0, 0x1, 0x1})
	/Users/hast02/code/go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x5f8
github.com/spf13/cobra.(*Command).ExecuteC(0xc000211400)
	/Users/hast02/code/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x3bc
github.com/spf13/cobra.(*Command).Execute(...)
	/Users/hast02/code/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
main.main()
	/Users/hast02/code/go/pkg/mod/github.com/gopherjs/[email protected]/tool.go:586 +0x10b8

$ echo $?
1

From what I can tell, this is the line that provokes the GopherJS compiler panic: https://cs.opensource.google/go/x/sync/+/036812b2:singleflight/singleflight.go;l=162

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions