vendor tsgo
This commit is contained in:
28
tools/tsgo/internal/transformers/modifiervisitor.go
Normal file
28
tools/tsgo/internal/transformers/modifiervisitor.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package transformers
|
||||
|
||||
import (
|
||||
"github.com/microsoft/typescript-go/internal/ast"
|
||||
"github.com/microsoft/typescript-go/internal/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)
|
||||
}
|
||||
Reference in New Issue
Block a user