You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.4 KiB
Plaintext
110 lines
2.4 KiB
Plaintext
4 years ago
|
env GOPRIVATE=test/main
|
||
|
|
||
|
garble build
|
||
|
exec ./main
|
||
|
! stdout 'main.go|other_file_name|is sorted'
|
||
|
|
||
|
[short] stop # no need to verify this with -short
|
||
|
|
||
|
go build
|
||
|
exec ./main
|
||
|
stdout 'main.go'
|
||
|
stdout 'other_file_name'
|
||
|
stdout ':19: main'
|
||
|
stdout 'initLines is sorted'
|
||
|
stdout 'varLines is sorted'
|
||
|
|
||
|
-- go.mod --
|
||
|
module test/main
|
||
|
|
||
|
go 1.15
|
||
|
-- main.go --
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"runtime"
|
||
|
"sort"
|
||
|
)
|
||
|
|
||
|
var _, globalFile, globalLine, _ = runtime.Caller(0)
|
||
|
|
||
|
func init() {
|
||
|
_, file, line, _ := runtime.Caller(0)
|
||
|
fmt.Printf("%s:%d: init\n", file, line)
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
fmt.Printf("%s:%d: global\n", globalFile, globalLine)
|
||
|
|
||
|
_, file, line, _ := runtime.Caller(0)
|
||
|
fmt.Printf("%s:%d: main\n", file, line)
|
||
|
|
||
|
funcDecl()
|
||
|
funcVar()
|
||
|
|
||
|
// initLines is filled by ten consecutive funcs.
|
||
|
// If we are not shuffling or obfuscating line numbers,
|
||
|
// this list will be sorted.
|
||
|
// If we are, it's extremely unlikely it would remain sorted.
|
||
|
if sort.IsSorted(sort.IntSlice(initLines)) {
|
||
|
fmt.Println("initLines is sorted")
|
||
|
}
|
||
|
|
||
|
// Same as the above, but with vars.
|
||
|
if sort.IsSorted(sort.IntSlice(varLines)) {
|
||
|
fmt.Println("varLines is sorted")
|
||
|
}
|
||
|
}
|
||
|
-- other_file_name.go --
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"runtime"
|
||
|
)
|
||
|
|
||
|
func funcDecl() {
|
||
|
_, file, line, _ := runtime.Caller(0)
|
||
|
fmt.Printf("%s:%d: func\n", file, line)
|
||
|
}
|
||
|
|
||
|
var funcVar = func() {
|
||
|
_, file, line, _ := runtime.Caller(0)
|
||
|
fmt.Printf("%s:%d: func var\n", file, line)
|
||
|
}
|
||
|
|
||
|
var initLines []int
|
||
|
|
||
|
func curLine() int {
|
||
|
_, _, line, _ := runtime.Caller(1)
|
||
|
return line
|
||
|
}
|
||
|
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
func init() { initLines = append(initLines, curLine()) }
|
||
|
|
||
|
var varLine0 = curLine()
|
||
|
var varLine1 = curLine()
|
||
|
var varLine2 = curLine()
|
||
|
var varLine3 = curLine()
|
||
|
var varLine4 = curLine()
|
||
|
var varLine5 = curLine()
|
||
|
var varLine6 = curLine()
|
||
|
var varLine7 = curLine()
|
||
|
var varLine8 = curLine()
|
||
|
var varLine9 = curLine()
|
||
|
|
||
|
var varLines = []int{
|
||
|
varLine0, varLine1, varLine2, varLine3, varLine4,
|
||
|
varLine5, varLine6, varLine7, varLine8, varLine9,
|
||
|
}
|