...
Run Format

Source file test/fixedbugs/bug347.go

Documentation: test/fixedbugs

  // run
  
  // Copyright 2011 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 (
  	"runtime"
  	"strings"
  )
  
  var t *struct {
  	c chan int
  }
  
  var c chan int
  
  func f() {
  	select {
  	case <-t.c:  // THIS IS LINE 22
  		break
  	case <-c:
  		break
  	}
  }
  
  func main() {
  	defer func() {
  		recover()
  		for i := 0;; i++ {
  			pc, file, line, ok := runtime.Caller(i)
  			if !ok {
  				print("BUG: bug347: cannot find caller\n")
  				return
  			}
  			if !strings.Contains(file, "bug347.go") || runtime.FuncForPC(pc).Name() != "main.f" {
  				// walk past runtime frames
  				continue
  			}
  			if line != 22 {
  				print("BUG: bug347: panic at ", file, ":", line, " in ", runtime.FuncForPC(pc).Name(), "\n")
  			}
  			return
  		}
  	}()
  	f()
  }
  

View as plain text