2025-10-15 10:12:44 +03:00

29 lines
740 B
Go

package transformers
import (
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/ast"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/printer"
)
type modifierVisitor struct {
Transformer
AllowedModifiers ast.ModifierFlags
}
func (v *modifierVisitor) visit(node *ast.Node) *ast.Node {
flags := ast.ModifierToFlag(node.Kind)
if flags != ast.ModifierFlagsNone && flags&v.AllowedModifiers == 0 {
return nil
}
return node
}
func ExtractModifiers(emitContext *printer.EmitContext, modifiers *ast.ModifierList, allowed ast.ModifierFlags) *ast.ModifierList {
if modifiers == nil {
return nil
}
tx := modifierVisitor{AllowedModifiers: allowed}
tx.NewTransformer(tx.visit, emitContext)
return tx.visitor.VisitModifiers(modifiers)
}