@@ -77,31 +77,62 @@ export function transformNumberProperty(
7777 node
7878 ) ;
7979 case "MIN_VALUE" :
80+ // 2 ^ -1074 = 5e-324 (smallest positive double)
8081 return lua . createBinaryExpression (
81- lua . createNumericLiteral ( - 2 ) ,
82- lua . createNumericLiteral ( 1074 ) ,
82+ lua . createNumericLiteral ( 2 ) ,
83+ lua . createNumericLiteral ( - 1074 ) ,
8384 lua . SyntaxKind . PowerOperator ,
8485 node
8586 ) ;
8687 case "MIN_SAFE_INTEGER" :
87- return lua . createBinaryExpression (
88- lua . createNumericLiteral ( - 2 ) ,
89- lua . createNumericLiteral ( 1074 ) ,
90- lua . SyntaxKind . PowerOperator ,
88+ // -(2 ^ 53 - 1) = -9007199254740991
89+ return lua . createUnaryExpression (
90+ lua . createParenthesizedExpression (
91+ lua . createBinaryExpression (
92+ lua . createBinaryExpression (
93+ lua . createNumericLiteral ( 2 ) ,
94+ lua . createNumericLiteral ( 53 ) ,
95+ lua . SyntaxKind . PowerOperator
96+ ) ,
97+ lua . createNumericLiteral ( 1 ) ,
98+ lua . SyntaxKind . SubtractionOperator
99+ )
100+ ) ,
101+ lua . SyntaxKind . NegationOperator ,
91102 node
92103 ) ;
93104 case "MAX_SAFE_INTEGER" :
105+ // 2 ^ 53 - 1 = 9007199254740991
94106 return lua . createBinaryExpression (
95- lua . createNumericLiteral ( 2 ) ,
96- lua . createNumericLiteral ( 1024 ) ,
97- lua . SyntaxKind . PowerOperator ,
107+ lua . createBinaryExpression (
108+ lua . createNumericLiteral ( 2 ) ,
109+ lua . createNumericLiteral ( 53 ) ,
110+ lua . SyntaxKind . PowerOperator
111+ ) ,
112+ lua . createNumericLiteral ( 1 ) ,
113+ lua . SyntaxKind . SubtractionOperator ,
98114 node
99115 ) ;
100116 case "MAX_VALUE" :
117+ // (2 - 2 ^ -52) * 2 ^ 1023 = 1.7976931348623157e+308
101118 return lua . createBinaryExpression (
102- lua . createNumericLiteral ( 2 ) ,
103- lua . createNumericLiteral ( 1024 ) ,
104- lua . SyntaxKind . PowerOperator ,
119+ lua . createParenthesizedExpression (
120+ lua . createBinaryExpression (
121+ lua . createNumericLiteral ( 2 ) ,
122+ lua . createBinaryExpression (
123+ lua . createNumericLiteral ( 2 ) ,
124+ lua . createNumericLiteral ( - 52 ) ,
125+ lua . SyntaxKind . PowerOperator
126+ ) ,
127+ lua . SyntaxKind . SubtractionOperator
128+ )
129+ ) ,
130+ lua . createBinaryExpression (
131+ lua . createNumericLiteral ( 2 ) ,
132+ lua . createNumericLiteral ( 1023 ) ,
133+ lua . SyntaxKind . PowerOperator
134+ ) ,
135+ lua . SyntaxKind . MultiplicationOperator ,
105136 node
106137 ) ;
107138
0 commit comments