Initial commit: Go 1.23 release state
This commit is contained in:
50
test/inline_literal.go
Normal file
50
test/inline_literal.go
Normal file
@@ -0,0 +1,50 @@
|
||||
// run
|
||||
|
||||
// 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.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"reflect"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
func hello() string {
|
||||
return "Hello World" // line 16
|
||||
}
|
||||
|
||||
func foo() string { // line 19
|
||||
x := hello() // line 20
|
||||
y := hello() // line 21
|
||||
return x + y // line 22
|
||||
}
|
||||
|
||||
func bar() string {
|
||||
x := hello() // line 26
|
||||
return x
|
||||
}
|
||||
|
||||
// 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().
|
||||
func main() {
|
||||
pc := funcPC(foo)
|
||||
f := runtime.FuncForPC(pc)
|
||||
for ; runtime.FuncForPC(pc) == f; pc++ {
|
||||
file, line := f.FileLine(pc)
|
||||
if line == 0 {
|
||||
continue
|
||||
}
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user