Skip to content

Commit e51950d

Browse files
committed
Added CC/Cobalt compile target
1 parent 4443063 commit e51950d

7 files changed

Lines changed: 11 additions & 4 deletions

File tree

src/CompilerOptions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export enum LuaTarget {
5151
Lua53 = "5.3",
5252
Lua54 = "5.4",
5353
LuaJIT = "JIT",
54+
Cobalt = "CC"
5455
}
5556

5657
export enum BuildMode {

src/transformation/utils/diagnostics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export const unsupportedRightShiftOperator = createErrorDiagnosticFactory(
8484
"Right shift operator is not supported for target Lua 5.3. Use `>>>` instead."
8585
);
8686

87-
const getLuaTargetName = (version: LuaTarget) => (version === LuaTarget.LuaJIT ? "LuaJIT" : `Lua ${version}`);
87+
const getLuaTargetName = (version: LuaTarget) => (version === LuaTarget.LuaJIT ? "LuaJIT" : (version === LuaTarget.Cobalt ? "Cobalt" : `Lua ${version}`));
8888
export const unsupportedForTarget = createErrorDiagnosticFactory(
8989
(functionality: string, version: Exclude<LuaTarget, LuaTarget.Universal>) =>
9090
`${functionality} is/are not supported for target ${getLuaTargetName(version)}.`

src/transformation/visitors/binary-expression/bit.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export function transformBinaryBitOperation(
7070
return transformBinaryBitLibOperation(node, left, right, operator, "bit");
7171

7272
case LuaTarget.Lua52:
73+
case LuaTarget.Cobalt:
7374
return transformBinaryBitLibOperation(node, left, right, operator, "bit32");
7475
default:
7576
const luaOperator = transformBitOperatorToLuaOperator(context, node, operator);
@@ -114,6 +115,7 @@ export function transformUnaryBitOperation(
114115
return transformUnaryBitLibOperation(node, expression, operator, "bit");
115116

116117
case LuaTarget.Lua52:
118+
case LuaTarget.Cobalt:
117119
return transformUnaryBitLibOperation(node, expression, operator, "bit32");
118120

119121
default:

src/transformation/visitors/break-continue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export const transformBreakStatement: FunctionVisitor<ts.BreakStatement> = (brea
1111
};
1212

1313
export const transformContinueStatement: FunctionVisitor<ts.ContinueStatement> = (statement, context) => {
14-
if (context.luaTarget === LuaTarget.Universal || context.luaTarget === LuaTarget.Lua51) {
14+
if (context.luaTarget === LuaTarget.Universal || context.luaTarget === LuaTarget.Lua51 || context.luaTarget == LuaTarget.Cobalt) {
1515
context.diagnostics.push(unsupportedForTarget(statement, "Continue statement", LuaTarget.Lua51));
1616
}
1717

src/transformation/visitors/language-extensions/operators.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export function transformOperatorMappingExpression(
9696
context.luaTarget === LuaTarget.Lua51 ||
9797
context.luaTarget === LuaTarget.Lua52 ||
9898
context.luaTarget === LuaTarget.LuaJIT ||
99+
context.luaTarget === LuaTarget.Cobalt ||
99100
context.luaTarget === LuaTarget.Universal;
100101
if (isBefore53) {
101102
const luaTarget = context.luaTarget === LuaTarget.Universal ? LuaTarget.Lua51 : context.luaTarget;

test/cli/parse.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ describe("command line", () => {
119119
["luaTarget", "5.2", { luaTarget: tstl.LuaTarget.Lua52 }],
120120
["luaTarget", "5.3", { luaTarget: tstl.LuaTarget.Lua53 }],
121121
["luaTarget", "jit", { luaTarget: tstl.LuaTarget.LuaJIT }],
122+
["luaTarget", "cc", { luaTarget: tstl.LuaTarget.Cobalt }],
122123

123124
["luaBundle", "foo", { luaBundle: "foo" }],
124125
["luaBundleEntry", "bar", { luaBundleEntry: "bar" }],
@@ -233,6 +234,7 @@ describe("tsconfig", () => {
233234
["luaTarget", "5.3", { luaTarget: tstl.LuaTarget.Lua53 }],
234235
["luaTarget", "5.4", { luaTarget: tstl.LuaTarget.Lua54 }],
235236
["luaTarget", "jit", { luaTarget: tstl.LuaTarget.LuaJIT }],
237+
["luaTarget", "cc", { luaTarget: tstl.LuaTarget.Cobalt }],
236238

237239
["luaBundle", "foo", { luaBundle: "foo" }],
238240
["luaBundleEntry", "bar", { luaBundleEntry: "bar" }],

test/util.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ function getLuaBindingsForVersion(target: tstl.LuaTarget): { lauxlib: LauxLib; l
3131
const { lauxlib, lua, lualib } = require("lua-wasm-bindings/dist/lua.53");
3232
return { lauxlib, lua, lualib };
3333
}
34-
if (target === tstl.LuaTarget.LuaJIT) {
35-
throw Error("Can't use executeLua() or expectToMatchJsResult() wit LuaJIT as target!");
34+
if (target === tstl.LuaTarget.LuaJIT || target === tstl.LuaTarget.Cobalt) {
35+
throw Error("Can't use executeLua() or expectToMatchJsResult() wit LuaJIT or Cobalt as target!");
3636
}
3737

3838
const { lauxlib, lua, lualib } = require("lua-wasm-bindings/dist/lua.54");
@@ -75,6 +75,7 @@ export function expectEachVersionExceptJit<T>(
7575
[tstl.LuaTarget.Lua53]: expectation,
7676
[tstl.LuaTarget.Lua54]: expectation,
7777
[tstl.LuaTarget.LuaJIT]: false, // Exclude JIT
78+
[tstl.LuaTarget.Cobalt]: false, // Exclude CC
7879
};
7980
}
8081

0 commit comments

Comments
 (0)