// 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" ) func f() { var x *string for _, i := range *x { // THIS IS LINE 17 println(i) } } func g() { } func main() { defer func() { for i := 0;; i++ { pc, file, line, ok := runtime.Caller(i) if !ok { print("BUG: bug348: cannot find caller\n") return } if !strings.Contains(file, "bug348.go") || runtime.FuncForPC(pc).Name() != "main.f" { // walk past runtime frames continue } if line != 17 { print("BUG: bug348: panic at ", file, ":", line, " in ", runtime.FuncForPC(pc).Name(), "\n") return } recover() return } }() f() }