@@ -5,24 +5,27 @@ import { LuaLibFeature, transformLuaLibFunction } from "../utils/lualib";
55import { isNumberType } from "../utils/typescript" ;
66import { transformArguments } from "../visitors/call" ;
77
8- export function transformGlobalCall (
8+ export function tryTransformBuiltinGlobalCall (
99 context : TransformationContext ,
10- node : ts . CallExpression
10+ node : ts . CallExpression ,
11+ expressionType : ts . Type
1112) : lua . Expression | undefined {
12- const signature = context . checker . getResolvedSignature ( node ) ;
13- const parameters = transformArguments ( context , node . arguments , signature ) ;
14- const expressionType = context . checker . getTypeAtLocation ( node . expression ) ;
13+ function getParameters ( ) {
14+ const signature = context . checker . getResolvedSignature ( node ) ;
15+ return transformArguments ( context , node . arguments , signature ) ;
16+ }
17+
1518 const name = expressionType . symbol . name ;
1619 switch ( name ) {
1720 case "SymbolConstructor" :
18- return transformLuaLibFunction ( context , LuaLibFeature . Symbol , node , ...parameters ) ;
21+ return transformLuaLibFunction ( context , LuaLibFeature . Symbol , node , ...getParameters ( ) ) ;
1922 case "NumberConstructor" :
20- return transformLuaLibFunction ( context , LuaLibFeature . Number , node , ...parameters ) ;
23+ return transformLuaLibFunction ( context , LuaLibFeature . Number , node , ...getParameters ( ) ) ;
2124 case "isNaN" :
2225 case "isFinite" :
2326 const numberParameters = isNumberType ( context , expressionType )
24- ? parameters
25- : [ transformLuaLibFunction ( context , LuaLibFeature . Number , undefined , ...parameters ) ] ;
27+ ? getParameters ( )
28+ : [ transformLuaLibFunction ( context , LuaLibFeature . Number , undefined , ...getParameters ( ) ) ] ;
2629
2730 return transformLuaLibFunction (
2831 context ,
@@ -31,8 +34,8 @@ export function transformGlobalCall(
3134 ...numberParameters
3235 ) ;
3336 case "parseFloat" :
34- return transformLuaLibFunction ( context , LuaLibFeature . ParseFloat , node , ...parameters ) ;
37+ return transformLuaLibFunction ( context , LuaLibFeature . ParseFloat , node , ...getParameters ( ) ) ;
3538 case "parseInt" :
36- return transformLuaLibFunction ( context , LuaLibFeature . ParseInt , node , ...parameters ) ;
39+ return transformLuaLibFunction ( context , LuaLibFeature . ParseInt , node , ...getParameters ( ) ) ;
3740 }
3841}
0 commit comments