diff --git a/src/LuaPrinter.ts b/src/LuaPrinter.ts index f4a68dcdc..3d6af0049 100644 --- a/src/LuaPrinter.ts +++ b/src/LuaPrinter.ts @@ -83,7 +83,7 @@ export class LuaPrinter { const map = sourceMap.toString(); const base64Map = Buffer.from(map).toString('base64'); - return `//# sourceMappingURL=data:application/json;base64,${base64Map}\n`; + return `--# sourceMappingURL=data:application/json;base64,${base64Map}\n`; } private printStackTraceOverride(rootNode: SourceNode): string { diff --git a/test/unit/sourcemaps.spec.ts b/test/unit/sourcemaps.spec.ts index e8a374780..e6e6fe766 100644 --- a/test/unit/sourcemaps.spec.ts +++ b/test/unit/sourcemaps.spec.ts @@ -1,5 +1,5 @@ import * as util from "../util"; -import { LuaLibImportKind } from "../../src/CompilerOptions"; +import { LuaLibImportKind, CompilerOptions } from "../../src/CompilerOptions"; import { SourceMapConsumer, Position } from "source-map"; test.each([ @@ -109,6 +109,33 @@ test("sourceMapTraceback saves sourcemap in _G", () => { } }); +test("Inline sourcemaps", () => { + const typeScriptSource = ` + function abc() { + return def(); + } + function def() { + return "foo"; + } + return abc();`; + + const compilerOptions: CompilerOptions = { + inlineSourceMap: true, + }; + + const { lua, sourceMap } = util.transpileStringResult(typeScriptSource, compilerOptions); + + const inlineSourceMapMatch = lua.match( + /--# sourceMappingURL=data:application\/json;base64,([A-Za-z0-9+/=]+)/, + ); + expect(inlineSourceMapMatch !== null && inlineSourceMapMatch !== undefined).toBe(true); + + const inlineSourceMap = Buffer.from(inlineSourceMapMatch[1], "base64").toString(); + expect(sourceMap).toBe(inlineSourceMap); + + expect(util.executeLua(lua)).toBe("foo"); +}); + // Helper functions function lineAndColumnOf(text: string, pattern: string): Position {