implements: track all public functions, including stable ones

The go source (ast) visitor will now keep track of all public functions it
finds putting them into lists by category: deprecated, preview, stable.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
John Mulligan 2021-09-21 14:41:41 -04:00 committed by mergify[bot]
parent 2ebd4bc1d5
commit d1aa76c613
1 changed files with 14 additions and 7 deletions

View File

@ -51,6 +51,7 @@ type visitor struct {
docMap map[string]*goFunction
deprecated []*goFunction
preview []*goFunction
stable []*goFunction
}
func newVisitor() *visitor {
@ -59,6 +60,7 @@ func newVisitor() *visitor {
docMap: map[string]*goFunction{},
deprecated: []*goFunction{},
preview: []*goFunction{},
stable: []*goFunction{},
}
}
@ -103,6 +105,10 @@ func readDocComment(fdec *ast.FuncDecl, gfunc *goFunction) {
}
}
func isPublic(gfunc *goFunction) bool {
return ast.IsExported(gfunc.shortName)
}
func (v *visitor) checkCalled(s *ast.SelectorExpr) {
ident, ok := s.X.(*ast.Ident)
if !ok {
@ -141,13 +147,14 @@ func (v *visitor) Visit(node ast.Node) ast.Visitor {
}
readDocComment(n, gfunc)
v.currentFunc = gfunc
if isPublic(gfunc) {
if gfunc.isDeprecated {
v.deprecated = append(v.deprecated, gfunc)
logger.Printf("rem1 %v\n", v.deprecated)
}
if gfunc.isPreview {
} else if gfunc.isPreview {
v.preview = append(v.preview, gfunc)
logger.Printf("rem2 %v\n", v.preview)
} else {
v.stable = append(v.stable, gfunc)
}
}
return v
case *ast.CallExpr: