Skip to content

Commit aceb355

Browse files
committed
Make lualib compilation a separate, internal option
1 parent 323bced commit aceb355

File tree

10 files changed

+20
-17
lines changed

10 files changed

+20
-17
lines changed

src/CompilerOptions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export type CompilerOptions = OmitIndexSignature<ts.CompilerOptions> & {
3434
plugins?: Array<ts.PluginImport | TransformerImport>;
3535
sourceMapTraceback?: boolean;
3636
tstlVerbose?: boolean;
37+
luaLibCompilation?: boolean;
3738
[option: string]: any;
3839
};
3940

@@ -56,7 +57,6 @@ export enum LuaTarget {
5657
export enum BuildMode {
5758
Default = "default",
5859
Library = "library",
59-
LuaLib = "lualib",
6060
}
6161

6262
export const isBundleEnabled = (options: CompilerOptions) =>

src/cli/information.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export function getHelpString(): string {
1919

2020
result += "Options:\n";
2121
for (const option of optionDeclarations) {
22+
if (option.internal) continue;
2223
const aliasStrings = (option.aliases ?? []).map(a => "-" + a);
2324
const optionString = [...aliasStrings, "--" + option.name].join("|");
2425

src/cli/parse.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ interface CommandLineOptionBase {
1010
name: string;
1111
aliases?: string[];
1212
description: string;
13+
internal?: boolean;
1314
}
1415

1516
interface CommandLineOptionOfEnum extends CommandLineOptionBase {
@@ -83,6 +84,12 @@ export const optionDeclarations: CommandLineOption[] = [
8384
description: "An array of paths that tstl should not resolve and keep as-is.",
8485
type: "array",
8586
},
87+
{
88+
name: "luaLibCompilation",
89+
description: "Internal. Specifies if this project is lualib source.",
90+
type: "boolean",
91+
internal: true,
92+
},
8693
];
8794

8895
export function updateParsedConfigFile(parsedConfigFile: ts.ParsedCommandLine): ParsedCommandLine {
@@ -103,7 +110,7 @@ export function updateParsedConfigFile(parsedConfigFile: ts.ParsedCommandLine):
103110

104111
for (const [name, rawValue] of Object.entries(parsedConfigFile.raw.tstl)) {
105112
const option = optionDeclarations.find(option => option.name === name);
106-
if (!option) {
113+
if (!option && option !== "lualibCompilation") {
107114
parsedConfigFile.errors.push(cliDiagnostics.unknownCompilerOption(name));
108115
continue;
109116
}

src/lualib/tsconfig.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
"lib": ["esnext"],
66
"types": ["lua-types/5.4"],
77
"skipLibCheck": true,
8-
98
"noUnusedLocals": true,
109
"noUnusedParameters": true
1110
},
1211
"tstl": {
13-
"buildMode": "lualib",
1412
"luaLibImport": "none",
15-
"noHeader": true
13+
"noHeader": true,
14+
"luaLibCompilation": true
1615
}
1716
}

src/transformation/utils/lua-ast.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as ts from "typescript";
2-
import { LuaTarget, BuildMode } from "../../CompilerOptions";
2+
import { LuaTarget } from "../../CompilerOptions";
33
import * as lua from "../../LuaAST";
44
import { assert, castArray } from "../../utils";
55
import { TransformationContext } from "../context";
@@ -146,7 +146,7 @@ export function createLocalOrExportedOrGlobalDeclaration(
146146
if (!rhs) {
147147
return [];
148148
} else {
149-
if (context.options.buildMode === BuildMode.LuaLib) {
149+
if (context.options.luaLibCompilation) {
150150
// assignment to a local variable defined elsewhere
151151
// see sourceFile.ts
152152
assignment = lua.createAssignmentStatement(lhs, rhs, tsOriginal);

src/transformation/visitors/class/setup.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
import { createExportsIdentifier, createLocalOrExportedOrGlobalDeclaration } from "../../utils/lua-ast";
1212
import { LuaLibFeature, transformLuaLibFunction } from "../../utils/lualib";
1313
import { getExtendedNode, getExtendsClause } from "./utils";
14-
import { BuildMode } from "../../../CompilerOptions";
1514

1615
export function createClassSetup(
1716
context: TransformationContext,
@@ -41,7 +40,7 @@ export function createClassSetup(
4140
result.push(lua.createVariableDeclarationStatement(localClassName, defaultExportLeftHandSide));
4241
} else {
4342
const exportScope = getIdentifierExportScope(context, className);
44-
if (exportScope && context.options.buildMode !== BuildMode.LuaLib) {
43+
if (exportScope && !context.options.luaLibCompilation) {
4544
// local localClassName = ____exports.className
4645
result.push(
4746
lua.createVariableDeclarationStatement(

src/transformation/visitors/identifier.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import { isTableExtensionIdentifier } from "./language-extensions/table";
2323
import { isVarargConstantNode } from "./language-extensions/vararg";
2424
import { isOptionalContinuation } from "./optional-chaining";
2525
import { isErrorClass } from "../builtins/error";
26-
import { BuildMode } from "../../CompilerOptions";
2726

2827
export function transformIdentifier(context: TransformationContext, identifier: ts.Identifier): lua.Identifier {
2928
if (isOptionalContinuation(identifier)) {
@@ -74,7 +73,7 @@ export function transformIdentifier(context: TransformationContext, identifier:
7473

7574
export const transformIdentifierExpression: FunctionVisitor<ts.Identifier> = (node, context) => {
7675
const symbol = context.checker.getSymbolAtLocation(node);
77-
if (symbol && context.options.buildMode !== BuildMode.LuaLib) {
76+
if (symbol && !context.options.luaLibCompilation) {
7877
const exportScope = getSymbolExportScope(context, symbol);
7978
if (exportScope) {
8079
const name = symbol.name;

src/transformation/visitors/modules/import.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { transformIdentifier } from "../identifier";
1212
import { transformPropertyName } from "../literal";
1313
import { LuaLibFeature } from "../../../LuaLib";
1414
import { importLuaLibFeature } from "../../utils/lualib";
15-
import { BuildMode } from "../../../CompilerOptions";
1615

1716
function isNoResolutionPath(context: TransformationContext, moduleSpecifier: ts.Expression): boolean {
1817
const moduleOwnerSymbol = context.checker.getSymbolAtLocation(moduleSpecifier);
@@ -62,7 +61,7 @@ function transformImportSpecifier(
6261
}
6362

6463
export const transformImportDeclaration: FunctionVisitor<ts.ImportDeclaration> = (statement, context) => {
65-
if (context.options.buildMode === BuildMode.LuaLib) {
64+
if (context.options.luaLibCompilation) {
6665
// in lualib project, imports declare dependencies
6766
// Assume that relevant imports are in the form `import "./module"`
6867

src/transformation/visitors/sourceFile.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { performHoisting, popScope, pushScope, ScopeType } from "../utils/scope"
1010
import { hasExportEquals } from "../utils/typescript";
1111
import { getSymbolIdOfSymbol, getSymbolInfo } from "../utils/symbols";
1212
import { getExportedSymbolsFromScope } from "../utils/export";
13-
import { BuildMode } from "../../CompilerOptions";
1413

1514
export const transformSourceFileNode: FunctionVisitor<ts.SourceFile> = (node, context) => {
1615
let statements: lua.Statement[] = [];
@@ -36,7 +35,7 @@ export const transformSourceFileNode: FunctionVisitor<ts.SourceFile> = (node, co
3635
statements = performHoisting(context, context.transformStatements(node.statements));
3736
popScope(context);
3837

39-
if (context.options.buildMode === BuildMode.LuaLib) {
38+
if (context.options.luaLibCompilation) {
4039
// Exports are currently assignment statements
4140
const exportedSymbolIds = getExportedSymbolsFromScope(context, context.sourceFile)
4241
.map(symbol => getSymbolIdOfSymbol(context, symbol))

src/transpilation/transpile.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as path from "path";
22
import * as ts from "typescript";
3-
import { CompilerOptions, validateOptions, BuildMode } from "../CompilerOptions";
3+
import { CompilerOptions, validateOptions } from "../CompilerOptions";
44
import { createPrinter } from "../LuaPrinter";
55
import { createVisitorMap, transformSourceFile } from "../transformation";
66
import { isNonNull } from "../utils";
@@ -124,7 +124,7 @@ export function getProgramTranspileResult(
124124
program.getSourceFiles().filter(isEmittableJsonFile).forEach(processSourceFile);
125125
}
126126

127-
if (options.buildMode === BuildMode.LuaLib) {
127+
if (options.luaLibCompilation) {
128128
// add lualib dependencies json file
129129
transpiledFiles.push(...generateExtraLualibFiles(emitHost, program, transpiledFiles));
130130
}

0 commit comments

Comments
 (0)