MCPcopy Create free account
hub / github.com/kataras/iris / newSource

Function newSource

hero/dependency_source.go:19–55  ·  view source on GitHub ↗
(fn reflect.Value)

Source from the content-addressed store, hash-verified

17}
18
19func newSource(fn reflect.Value) Source {
20 var (
21 callerFileName string
22 callerLineNumber int
23 callerName string
24 )
25
26 switch fn.Kind() {
27 case reflect.Func, reflect.Chan, reflect.Map, reflect.Ptr, reflect.UnsafePointer, reflect.Slice:
28 pc := fn.Pointer()
29 fpc := runtime.FuncForPC(pc)
30 if fpc != nil {
31 callerFileName, callerLineNumber = fpc.FileLine(pc)
32 callerName = fpc.Name()
33 }
34
35 fallthrough
36 default:
37 if callerFileName == "" {
38 callerFileName, callerLineNumber = GetCaller()
39 }
40 }
41
42 wd, _ := os.Getwd()
43 if relFile, err := filepath.Rel(wd, callerFileName); err == nil {
44 if !strings.HasPrefix(relFile, "..") {
45 // Only if it's relative to this path, not parent.
46 callerFileName = "./" + relFile
47 }
48 }
49
50 return Source{
51 File: filepath.ToSlash(callerFileName),
52 Line: callerLineNumber,
53 Caller: callerName,
54 }
55}
56
57func getSource() Source {
58 filename, line := GetCaller()

Callers 1

newDependencyFunction · 0.85

Calls 2

GetCallerFunction · 0.85
NameMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…