42 lines
1.4 KiB
Go
42 lines
1.4 KiB
Go
package tstransforms
|
|
|
|
import (
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/ast"
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/jsnum"
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/printer"
|
|
)
|
|
|
|
func convertEntityNameToExpression(emitContext *printer.EmitContext, name *ast.EntityName) *ast.Expression {
|
|
if ast.IsQualifiedName(name) {
|
|
left := convertEntityNameToExpression(emitContext, name.AsQualifiedName().Left)
|
|
right := name.AsQualifiedName().Right
|
|
prop := emitContext.Factory.NewPropertyAccessExpression(left, nil /*questionDotToken*/, right, ast.NodeFlagsNone)
|
|
emitContext.SetOriginal(prop, name)
|
|
emitContext.AssignCommentAndSourceMapRanges(prop, name)
|
|
return prop
|
|
}
|
|
return name.Clone(emitContext.Factory)
|
|
}
|
|
|
|
func constantExpression(value any, factory *printer.NodeFactory) *ast.Expression {
|
|
switch value := value.(type) {
|
|
case string:
|
|
return factory.NewStringLiteral(value)
|
|
case jsnum.Number:
|
|
if value.IsInf() || value.IsNaN() {
|
|
return nil
|
|
}
|
|
if value < 0 {
|
|
return factory.NewPrefixUnaryExpression(ast.KindMinusToken, constantExpression(-value, factory))
|
|
}
|
|
return factory.NewNumericLiteral(value.String())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func isInstantiatedModule(node *ast.ModuleDeclarationNode, preserveConstEnums bool) bool {
|
|
moduleState := ast.GetModuleInstanceState(node)
|
|
return moduleState == ast.ModuleInstanceStateInstantiated ||
|
|
(preserveConstEnums && moduleState == ast.ModuleInstanceStateConstEnumOnly)
|
|
}
|