@@ -8,9 +8,9 @@ test.each([
88 { input : "++i" , lua : "i = i + 1;" } ,
99 { input : "i--" , lua : "i = i - 1;" } ,
1010 { input : "--i" , lua : "i = i - 1;" } ,
11- { input : "!a" , lua : "not a;" } ,
12- { input : "-a" , lua : "-a;" } ,
13- { input : "+a" , lua : "a;" } ,
11+ { input : "!a" , lua : "local ____ = not a;" } ,
12+ { input : "-a" , lua : "local ____ = -a;" } ,
13+ { input : "+a" , lua : "local ____ = a;" } ,
1414 {
1515 input : "let a = delete tbl['test']" ,
1616 lua : "local a = (function()\n tbl.test = nil;\n return true;\nend)();" ,
@@ -106,54 +106,54 @@ test.each([
106106} ) ;
107107
108108test . each ( [
109- { input : "~a" , lua : "bit.bnot(a);" } ,
110- { input : "a&b" , lua : "bit.band(a, b);" } ,
109+ { input : "~a" , lua : "local ____ = bit.bnot(a);" } ,
110+ { input : "a&b" , lua : "local ____ = bit.band(a, b);" } ,
111111 { input : "a&=b" , lua : "a = bit.band(a, b);" } ,
112- { input : "a|b" , lua : "bit.bor(a, b);" } ,
112+ { input : "a|b" , lua : "local ____ = bit.bor(a, b);" } ,
113113 { input : "a|=b" , lua : "a = bit.bor(a, b);" } ,
114- { input : "a^b" , lua : "bit.bxor(a, b);" } ,
114+ { input : "a^b" , lua : "local ____ = bit.bxor(a, b);" } ,
115115 { input : "a^=b" , lua : "a = bit.bxor(a, b);" } ,
116- { input : "a<<b" , lua : "bit.lshift(a, b);" } ,
116+ { input : "a<<b" , lua : "local ____ = bit.lshift(a, b);" } ,
117117 { input : "a<<=b" , lua : "a = bit.lshift(a, b);" } ,
118- { input : "a>>b" , lua : "bit.arshift(a, b);" } ,
118+ { input : "a>>b" , lua : "local ____ = bit.arshift(a, b);" } ,
119119 { input : "a>>=b" , lua : "a = bit.arshift(a, b);" } ,
120- { input : "a>>>b" , lua : "bit.rshift(a, b);" } ,
120+ { input : "a>>>b" , lua : "local ____ = bit.rshift(a, b);" } ,
121121 { input : "a>>>=b" , lua : "a = bit.rshift(a, b);" } ,
122122] ) ( "Bitop [JIT] (%p)" , ( { input, lua } ) => {
123123 const options = { luaTarget : LuaTarget . LuaJIT , luaLibImport : LuaLibImportKind . None } ;
124124 expect ( util . transpileString ( input , options ) ) . toBe ( lua ) ;
125125} ) ;
126126
127127test . each ( [
128- { input : "~a" , lua : "bit32.bnot(a);" } ,
129- { input : "a&b" , lua : "bit32.band(a, b);" } ,
128+ { input : "~a" , lua : "local ____ = bit32.bnot(a);" } ,
129+ { input : "a&b" , lua : "local ____ = bit32.band(a, b);" } ,
130130 { input : "a&=b" , lua : "a = bit32.band(a, b);" } ,
131- { input : "a|b" , lua : "bit32.bor(a, b);" } ,
131+ { input : "a|b" , lua : "local ____ = bit32.bor(a, b);" } ,
132132 { input : "a|=b" , lua : "a = bit32.bor(a, b);" } ,
133- { input : "a^b" , lua : "bit32.bxor(a, b);" } ,
133+ { input : "a^b" , lua : "local ____ = bit32.bxor(a, b);" } ,
134134 { input : "a^=b" , lua : "a = bit32.bxor(a, b);" } ,
135- { input : "a<<b" , lua : "bit32.lshift(a, b);" } ,
135+ { input : "a<<b" , lua : "local ____ = bit32.lshift(a, b);" } ,
136136 { input : "a<<=b" , lua : "a = bit32.lshift(a, b);" } ,
137- { input : "a>>b" , lua : "bit32.arshift(a, b);" } ,
137+ { input : "a>>b" , lua : "local ____ = bit32.arshift(a, b);" } ,
138138 { input : "a>>=b" , lua : "a = bit32.arshift(a, b);" } ,
139- { input : "a>>>b" , lua : "bit32.rshift(a, b);" } ,
139+ { input : "a>>>b" , lua : "local ____ = bit32.rshift(a, b);" } ,
140140 { input : "a>>>=b" , lua : "a = bit32.rshift(a, b);" } ,
141141] ) ( "Bitop [5.2] (%p)" , ( { input, lua } ) => {
142142 const options = { luaTarget : LuaTarget . Lua52 , luaLibImport : LuaLibImportKind . None } ;
143143 expect ( util . transpileString ( input , options ) ) . toBe ( lua ) ;
144144} ) ;
145145
146146test . each ( [
147- { input : "~a" , lua : "~a;" } ,
148- { input : "a&b" , lua : "a & b;" } ,
147+ { input : "~a" , lua : "local ____ = ~a;" } ,
148+ { input : "a&b" , lua : "local ____ = a & b;" } ,
149149 { input : "a&=b" , lua : "a = a & b;" } ,
150- { input : "a|b" , lua : "a | b;" } ,
150+ { input : "a|b" , lua : "local ____ = a | b;" } ,
151151 { input : "a|=b" , lua : "a = a | b;" } ,
152- { input : "a^b" , lua : "a ~ b;" } ,
152+ { input : "a^b" , lua : "local ____ = a ~ b;" } ,
153153 { input : "a^=b" , lua : "a = a ~ b;" } ,
154- { input : "a<<b" , lua : "a << b;" } ,
154+ { input : "a<<b" , lua : "local ____ = a << b;" } ,
155155 { input : "a<<=b" , lua : "a = a << b;" } ,
156- { input : "a>>>b" , lua : "a >> b;" } ,
156+ { input : "a>>>b" , lua : "local ____ = a >> b;" } ,
157157 { input : "a>>>=b" , lua : "a = a >> b;" } ,
158158] ) ( "Bitop [5.3] (%p)" , ( { input, lua } ) => {
159159 const options = { luaTarget : LuaTarget . Lua53 , luaLibImport : LuaLibImportKind . None } ;
@@ -183,7 +183,7 @@ test.each([
183183 { input : "1*(3+4*2)" , lua : "1 * (3 + 4 * 2);" } ,
184184 { input : "10-(4+5)" , lua : "10 - (4 + 5);" } ,
185185] ) ( "Binary expressions ordering parentheses (%p)" , ( { input, lua } ) => {
186- expect ( util . transpileString ( input ) ) . toBe ( lua ) ;
186+ expect ( util . transpileString ( input ) ) . toBe ( "local ____ = " + lua ) ;
187187} ) ;
188188
189189test . each ( [
@@ -208,11 +208,11 @@ test("Binary Comma Statement in For Loop", () => {
208208} ) ;
209209
210210test ( "Null Expression" , ( ) => {
211- expect ( util . transpileString ( "null" ) ) . toBe ( "nil;" ) ;
211+ expect ( util . transpileString ( "null" ) ) . toBe ( "local ____ = nil;" ) ;
212212} ) ;
213213
214214test ( "Undefined Expression" , ( ) => {
215- expect ( util . transpileString ( "undefined" ) ) . toBe ( "nil;" ) ;
215+ expect ( util . transpileString ( "undefined" ) ) . toBe ( "local ____ = nil;" ) ;
216216} ) ;
217217
218218test . each ( [
@@ -553,3 +553,28 @@ test("Unsupported object literal element error", () => {
553553 ) ,
554554 ) ;
555555} ) ;
556+
557+ test . each ( [
558+ '"foobar"' ,
559+ "17" ,
560+ "true" ,
561+ "{}" ,
562+ "[]" ,
563+ "[].length" ,
564+ "foo() + foo()" ,
565+ "!foo()" ,
566+ "foo()" ,
567+ "typeof foo" ,
568+ '"bar" in bar' ,
569+ "foo as Function" ,
570+ "Math.log2(2)" ,
571+ "Math.log10(2)" ,
572+ ] ) ( "Expression statements (%p)" , input => {
573+ const code = `
574+ function foo() { return 17; }
575+ const bar = {};
576+ ${ input } ;
577+ return 1;
578+ ` ;
579+ expect ( util . transpileAndExecute ( code ) ) . toBe ( 1 ) ;
580+ } ) ;
0 commit comments