Skip to content

Commit 91e0e9e

Browse files
committed
chore(ts): Patch traceur's type module only when targetting es6 output.
1 parent 59c1299 commit 91e0e9e

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

tools/transpiler/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var SELF_COMPILE_OPTIONS = {
1818

1919
var needsReload = true;
2020
var oldSystemGet = System.get;
21+
var currentOptions;
2122

2223
exports.reloadSources = function() {
2324
needsReload = true;
@@ -43,10 +44,12 @@ exports.compile = function compile(options, paths, source, reloadTraceur) {
4344
var CompilerCls = System.get('transpiler/src/compiler').Compiler;
4445

4546
var compiler = new CompilerCls(options, moduleName);
47+
currentOptions = options;
4648
var result = {
4749
js: compiler.compile(source, inputPath, outputPath),
4850
sourceMap: null
4951
};
52+
currentOptions = null;
5053

5154
var sourceMapString = compiler.getSourceMap();
5255
if (sourceMapString) {
@@ -186,6 +189,7 @@ function useRttsAssertModuleForConvertingTypesToExpressions() {
186189
for (var prop in patch.prototype) {
187190
original.prototype[prop] = patch.prototype[prop];
188191
}
192+
original.prototype.getOptions = function() { return currentOptions; };
189193

190194
var TypeAssertionTransformer = System.get(traceurVersion+'/src/codegeneration/TypeAssertionTransformer').TypeAssertionTransformer;
191195
var createIdentifierExpression = System.get(traceurVersion+'/src/codegeneration/ParseTreeFactory').createIdentifierExpression;
@@ -197,7 +201,8 @@ function useRttsAssertModuleForConvertingTypesToExpressions() {
197201
this.paramTypes_.atLeastOneParameterTyped = true;
198202
} else {
199203
// PATCH start
200-
typeAnnotation = parseExpression(["assert.type.any"]);
204+
var typeModule = currentOptions.outputLanguage === 'es6' ? 'assert' : '$traceurRuntime';
205+
typeAnnotation = parseExpression([typeModule + ".type.any"]);
201206
// PATCH end
202207
}
203208

tools/transpiler/src/patch/TypeToExpressionTransformer.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ import {
1616
} from 'traceur/src/codegeneration/PlaceholderParser.js';
1717

1818
export class TypeToExpressionTransformer extends ParseTreeTransformer {
19+
// Not used. Just required to call super() by traceur.
1920
constructor(idGenerator, reporter, options) {
2021
super(idGenerator, reporter);
21-
this.options_ = options;
22+
}
23+
24+
typeModule() {
25+
return parseExpression([this.getOptions().outputLanguage === 'es6' ? 'assert' : '$traceurRuntime']);
2226
}
2327

2428
transformTypeName(tree) {
@@ -30,18 +34,18 @@ export class TypeToExpressionTransformer extends ParseTreeTransformer {
3034
}
3135

3236
transformPredefinedType(tree) {
33-
return parseExpression `assert.type.${tree.typeToken})`;
37+
return parseExpression `${this.typeModule()}.type.${tree.typeToken})`;
3438
}
3539

3640
transformTypeReference(tree) {
3741
var typeName = this.transformAny(tree.typeName);
3842
var args = this.transformAny(tree.args);
3943
var argumentList = new ArgumentList(tree.location, [typeName, ...args]);
40-
return parseExpression `assert.genericType(${argumentList})`;
44+
return parseExpression `${this.typeModule()}.genericType(${argumentList})`;
4145
}
4246

4347
transformTypeArguments(tree) {
4448
return this.transformList(tree.args);
4549
}
4650

47-
}
51+
}

0 commit comments

Comments
 (0)