| // Copyright 2017 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. |
| return "Hello World" // line 16 |
| func foo() string { // line 19 |
| // funcPC returns the PC for the func value f. |
| func funcPC(f interface{}) uintptr { |
| return reflect.ValueOf(f).Pointer() |
| // Test for issue #15453. Previously, line 26 would appear in foo(). |
| f := runtime.FuncForPC(pc) |
| for ; runtime.FuncForPC(pc) == f; pc++ { |
| file, line := f.FileLine(pc) |
| // Line 16 can appear inside foo() because PC-line table has |
| // innermost line numbers after inlining. |
| if line != 16 && !(line >= 19 && line <= 22) { |
| log.Fatalf("unexpected line at PC=%d: %s:%d\n", pc, file, line) |