Initial commit: Go 1.23 release state
This commit is contained in:
49
test/fixedbugs/issue4562.go
Normal file
49
test/fixedbugs/issue4562.go
Normal file
@@ -0,0 +1,49 @@
|
||||
// run
|
||||
|
||||
// Copyright 2012 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type T struct {
|
||||
val int
|
||||
}
|
||||
|
||||
func main() {
|
||||
defer expectError(22)
|
||||
var pT *T
|
||||
switch pT.val { // error should be here - line 22
|
||||
case 0:
|
||||
fmt.Println("0")
|
||||
case 1: // used to show up here instead
|
||||
fmt.Println("1")
|
||||
case 2:
|
||||
fmt.Println("2")
|
||||
}
|
||||
fmt.Println("finished")
|
||||
}
|
||||
|
||||
func expectError(expectLine int) {
|
||||
if recover() == nil {
|
||||
panic("did not crash")
|
||||
}
|
||||
for i := 1;; i++ {
|
||||
_, file, line, ok := runtime.Caller(i)
|
||||
if !ok {
|
||||
panic("cannot find issue4562.go on stack")
|
||||
}
|
||||
if strings.HasSuffix(file, "issue4562.go") {
|
||||
if line != expectLine {
|
||||
panic(fmt.Sprintf("crashed at line %d, wanted line %d", line, expectLine))
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user