Skip to content

Commit 58084ad

Browse files
committed
Fixed missing constructor issue
1 parent 816edd7 commit 58084ad

File tree

9 files changed

+26
-11
lines changed

9 files changed

+26
-11
lines changed

src/Transpiler.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,12 +1212,9 @@ export class LuaTranspiler {
12121212
if (constructor) {
12131213
// Add constructor plus initialisation of instance fields
12141214
result += this.transpileConstructor(constructor, className, instanceFields);
1215-
} else {
1216-
// No constructor, make one to set all instance fields if there are any
1217-
if (instanceFields.length > 0) {
1218-
// Create empty constructor and add instance fields
1219-
result += this.transpileConstructor(ts.createConstructor([], [], [], ts.createBlock([], true)), className, instanceFields);
1220-
}
1215+
} else if (!isExtension) {
1216+
// Generate a constructor if none was defined
1217+
result += this.transpileConstructor(ts.createConstructor([], [], [], ts.createBlock([], true)), className, instanceFields);
12211218
}
12221219

12231220
// Transpile methods

test/translation/builder.spec.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,8 @@ export class FileTests {
4242
@TestCases(files)
4343
@Test("Transformation Tests")
4444
public transformationTests(tsFile: string, luaFile:string) {
45-
Expect(
46-
BufferToTestString(fileContents[luaFile]))
47-
.toEqual(
48-
util.transpileString(BufferToTestString(fileContents[tsFile])));
45+
Expect(util.transpileString(BufferToTestString(fileContents[tsFile])))
46+
.toEqual(BufferToTestString(fileContents[luaFile]));
4947
}
5048

5149
}

test/translation/lua/class.lua

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ function ClassB.new(construct, ...)
55
local instance = setmetatable({}, ClassB)
66
if construct and ClassB.constructor then ClassB.constructor(instance, ...) end
77
return instance
8-
end
8+
end
9+
function ClassB.constructor(self)
10+
end
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
MyClass = MyClass or {}
2+
MyClass.__index = MyClass
3+
function MyClass.new(construct, ...)
4+
local instance = setmetatable({}, MyClass)
5+
if construct and MyClass.constructor then MyClass.constructor(instance, ...) end
6+
return instance
7+
end
8+
function MyClass.constructor(self)
9+
end

test/translation/lua/classInstanceCall4.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ function ClassB.new(construct, ...)
66
if construct and ClassB.constructor then ClassB.constructor(instance, ...) end
77
return instance
88
end
9+
function ClassB.constructor(self)
10+
end
911
local x = ClassB.new(true):myFunc()

test/translation/lua/classPureAbstract.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ function ClassB.new(construct, ...)
44
local instance = setmetatable({}, ClassB)
55
if construct and ClassB.constructor then ClassB.constructor(instance, ...) end
66
return instance
7+
end
8+
function ClassB.constructor(self)
79
end

test/translation/lua/modulesClassExport.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ function TestClass.new(construct, ...)
77
if construct and TestClass.constructor then TestClass.constructor(instance, ...) end
88
return instance
99
end
10+
function TestClass.constructor(self)
11+
end
1012
return exports

test/translation/lua/modulesClassWithMemberExport.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ function TestClass.new(construct, ...)
77
if construct and TestClass.constructor then TestClass.constructor(instance, ...) end
88
return instance
99
end
10+
function TestClass.constructor(self)
11+
end
1012
function TestClass.memberFunc(self)
1113
end
1214
return exports
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
class MyClass {}

0 commit comments

Comments
 (0)