vendor tsgo
This commit is contained in:
29
tools/tsgo/internal/transformers/tstransforms/utilities.go
Normal file
29
tools/tsgo/internal/transformers/tstransforms/utilities.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package tstransforms
|
||||
|
||||
import (
|
||||
"github.com/microsoft/typescript-go/internal/ast"
|
||||
"github.com/microsoft/typescript-go/internal/jsnum"
|
||||
"github.com/microsoft/typescript-go/internal/printer"
|
||||
)
|
||||
|
||||
func constantExpression(value any, factory *printer.NodeFactory) *ast.Expression {
|
||||
switch value := value.(type) {
|
||||
case string:
|
||||
return factory.NewStringLiteral(value, ast.TokenFlagsNone)
|
||||
case jsnum.Number:
|
||||
if value.IsInf() {
|
||||
if value > 0 {
|
||||
return factory.NewIdentifier("Infinity")
|
||||
}
|
||||
return factory.NewPrefixUnaryExpression(ast.KindMinusToken, factory.NewIdentifier("Infinity"))
|
||||
}
|
||||
if value.IsNaN() {
|
||||
return factory.NewIdentifier("NaN")
|
||||
}
|
||||
if value < 0 {
|
||||
return factory.NewPrefixUnaryExpression(ast.KindMinusToken, constantExpression(-value, factory))
|
||||
}
|
||||
return factory.NewNumericLiteral(value.String(), ast.TokenFlagsNone)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user