diff --git a/src/lualib/InstanceOf.ts b/src/lualib/InstanceOf.ts index b856ddaa9..b75c040c2 100644 --- a/src/lualib/InstanceOf.ts +++ b/src/lualib/InstanceOf.ts @@ -8,7 +8,7 @@ function __TS__InstanceOf(this: void, obj: LuaClassInstance, classTbl: LuaClass) return !!classTbl[Symbol.hasInstance](obj); } - if (obj !== undefined) { + if (typeof obj === "object") { let luaClass = obj.constructor; while (luaClass !== undefined) { if (luaClass === classTbl) { diff --git a/test/unit/classes/instanceof.spec.ts b/test/unit/classes/instanceof.spec.ts index fdbb6e36e..4e4000153 100644 --- a/test/unit/classes/instanceof.spec.ts +++ b/test/unit/classes/instanceof.spec.ts @@ -49,6 +49,28 @@ test("null instanceof Class", () => { `.expectToMatchJsResult(); }); +test("function instanceof Class", () => { + util.testFunction` + class myClass {} + const noop = () => {}; + return (noop as any) instanceof myClass; + `.expectToMatchJsResult(); +}); + +test("boolean instanceof Class", () => { + util.testFunction` + class myClass {} + return (false as any) instanceof myClass; + `.expectToMatchJsResult(); +}); + +test("number instanceof Class", () => { + util.testFunction` + class myClass {} + return (5 as any) instanceof myClass; + `.expectToMatchJsResult(); +}); + test("instanceof export", () => { util.testModule` export class myClass {}