Skip to content

Commit fbfab3b

Browse files
committed
Support nested DSLs by eval.caller()
1 parent 854598c commit fbfab3b

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

eval/eval.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -240,20 +240,26 @@ func finalizeSet(set ExpressionSet) {
240240

241241
// caller returns the name of calling function.
242242
func caller() string {
243-
for skip := 2; skip <= 4; skip++ {
243+
var latest string
244+
for skip := 2; skip <= 5; skip++ {
244245
pc, _, _, ok := runtime.Caller(skip)
245246
if !ok {
246247
break
247248
}
248249
name := runtime.FuncForPC(pc).Name()
249-
elems := strings.Split(name, ".")
250-
caller := elems[len(elems)-1]
250+
if !strings.HasPrefix(name, "goa.design/goa/v3/dsl.") {
251+
break
252+
}
253+
caller := strings.Split(strings.TrimPrefix(name, "goa.design/goa/v3/dsl."), ".")[0]
251254
for _, first := range caller {
252255
if unicode.IsUpper(first) {
253-
return caller
256+
latest = caller
254257
}
255258
break
256259
}
257260
}
261+
if latest != "" {
262+
return latest
263+
}
258264
return "<unknown>"
259265
}

0 commit comments

Comments
 (0)