diff --git a/srv/cmd/tool/cfg.go b/srv/cmd/tool/cfg.go index baa67dc..0e6fb15 100644 --- a/srv/cmd/tool/cfg.go +++ b/srv/cmd/tool/cfg.go @@ -1,6 +1,9 @@ package tool +// Karmaforge 因果熔炉 +// 这个函数会被引用,并且最终被代码生成所重写 func Karmaforge[T any](params ...any) *T { - var result T - return &result + panic("在使用因果熔炉之前,需要执行仪式") + // var result T + // return &result } diff --git a/srv/cmd/tool/main.go b/srv/cmd/tool/main.go index 2eb9d50..3086fdd 100644 --- a/srv/cmd/tool/main.go +++ b/srv/cmd/tool/main.go @@ -2,6 +2,7 @@ package tool import ( "fmt" + "go/types" "os" "path/filepath" "strings" @@ -41,6 +42,18 @@ func main() { panic(err) } for _, pkg := range pkgs { + top := pkg.Types.Scope() + funcs := []*types.Func{} + for _, name := range top.Names() { + obj := top.Lookup(name) + if !strings.HasSuffix(obj.Name(), "Provider") { + continue + } + fun, ok := obj.(*types.Func) + if ok { + funcs = append(funcs, fun) + } + } fmt.Println(pkg.Name) } }