...
Run Format

Source file test/fixedbugs/issue4562.go

Documentation: test/fixedbugs

  // 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
  		}
  	}
  }
  

View as plain text