Text file src/cmd/go/testdata/script/godebug_default.txt

     1  env GO111MODULE=on
     2  env GOTRACEBACK=single
     3  
     4  # Go 1.21 work module should leave panicnil with an implicit default.
     5  cp go.mod.21 go.mod
     6  go list -f '{{.Module.GoVersion}} {{.DefaultGODEBUG}}'
     7  ! stdout panicnil
     8  stdout randautoseed=0
     9  
    10  # Go 1.21 work module should NOT set panicnil=1 in Go 1.20 dependency.
    11  cp go.mod.21 go.mod
    12  go list -f '{{.Module.GoVersion}} {{.DefaultGODEBUG}}' q
    13  ! stdout panicnil=1
    14  ! stdout randautoseed
    15  
    16  go mod download rsc.io/panicnil # for go.sum
    17  go list -f '{{.Module.GoVersion}} {{.DefaultGODEBUG}}' rsc.io/panicnil
    18  ! stdout panicnil=1
    19  ! stdout randautoseed
    20  
    21  # Go 1.20 work module should set panicnil=1.
    22  cp go.mod.20 go.mod
    23  go list -f '{{.Module.GoVersion}} {{.DefaultGODEBUG}}'
    24  stdout panicnil=1
    25  stdout randautoseed=0
    26  
    27  # Go 1.20 work module should set panicnil=1 in Go 1.20 dependency.
    28  cp go.mod.20 go.mod
    29  go list -f '{{.Module.GoVersion}} {{.DefaultGODEBUG}}' q
    30  stdout panicnil=1
    31  ! stdout randautoseed
    32  
    33  # Go 1.21 workspace should leave panicnil with an implicit default.
    34  cat q/go.mod
    35  cp go.work.21 go.work
    36  go list -f '{{.Module.GoVersion}} {{.DefaultGODEBUG}}'
    37  ! stdout panicnil
    38  stdout randautoseed=0
    39  rm go.work
    40  
    41  # Go 1.20 workspace with Go 1.21 module cannot happen.
    42  cp go.work.20 go.work
    43  cp go.mod.21 go.mod
    44  ! go list -f '{{.Module.GoVersion}} {{.DefaultGODEBUG}}'
    45  stderr 'go: module . listed in go.work file requires go >= 1.21'
    46  rm go.work
    47  
    48  [short] skip
    49  
    50  # Programs in Go 1.21 work module should trigger run-time error.
    51  cp go.mod.21 go.mod
    52  ! go run .
    53  stderr 'panic: panic called with nil argument'
    54  
    55  ! go run rsc.io/panicnil
    56  stderr 'panic: panic called with nil argument'
    57  
    58  # Programs in Go 1.20 work module use old panic nil behavior.
    59  cp go.mod.20 go.mod
    60  ! go run .
    61  stderr 'panic: nil'
    62  
    63  ! go run rsc.io/panicnil
    64  stderr 'panic: nil'
    65  
    66  # Programs in no module at all should use their go.mod file.
    67  rm go.mod
    68  ! go run rsc.io/panicnil@v1.0.0
    69  stderr 'panic: nil'
    70  
    71  rm go.mod
    72  ! go run rsc.io/panicnil@v1.1.0
    73  stderr 'panic: panic called with nil argument'
    74  
    75  -- go.work.21 --
    76  go 1.21
    77  use .
    78  use ./q
    79  
    80  -- go.work.20 --
    81  go 1.20
    82  use .
    83  use ./q
    84  
    85  -- go.mod.21 --
    86  go 1.21
    87  module m
    88  require q v1.0.0
    89  replace q => ./q
    90  require rsc.io/panicnil v1.0.0
    91  
    92  -- go.mod.20 --
    93  go 1.20
    94  module m
    95  require q v1.0.0
    96  replace q => ./q
    97  require rsc.io/panicnil v1.0.0
    98  
    99  -- p.go --
   100  //go:debug randautoseed=0
   101  
   102  package main
   103  
   104  func main() {
   105  	panic(nil)
   106  }
   107  
   108  -- q/go.mod --
   109  go 1.20
   110  module q
   111  
   112  -- q/q.go --
   113  package main
   114  func main() {}
   115  

View as plain text