Skip to content

Commit b6b735c

Browse files
committed
merge with master
2 parents a88bfbd + 2ffc375 commit b6b735c

File tree

14 files changed

+230
-15
lines changed

14 files changed

+230
-15
lines changed

lib/typescriptServices.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,6 +1450,7 @@ declare namespace ts {
14501450
function getTrailingCommentRanges(text: string, pos: number): CommentRange[];
14511451
function isIdentifierStart(ch: number, languageVersion: ScriptTarget): boolean;
14521452
function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean;
1453+
function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, languageVariant: ts.LanguageVariant, text?: string, onError?: ErrorCallback, start?: number, length?: number): Scanner;
14531454
}
14541455
declare namespace ts {
14551456
function getDefaultLibFileName(options: CompilerOptions): string;

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13319,7 +13319,7 @@ namespace ts {
1331913319
}
1332013320
}
1332113321
else {
13322-
if (languageVersion >= ScriptTarget.ES6) {
13322+
if (languageVersion >= ScriptTarget.ES6 && !isInAmbientContext(node)) {
1332313323
// Import equals declaration is deprecated in es6 or above
1332413324
grammarErrorOnNode(node, Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead);
1332513325
}

src/compiler/emitter.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5343,13 +5343,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
53435343
emitExportMemberAssignments(<Identifier>node.name);
53445344
}
53455345
}
5346+
5347+
/*
5348+
* Some bundlers (SystemJS builder) sometimes want to rename dependencies.
5349+
* Here we check if alternative name was provided for a given moduleName and return it if possible.
5350+
*/
5351+
function tryRenameExternalModule(moduleName: LiteralExpression): string {
5352+
if (currentSourceFile.renamedDependencies && hasProperty(currentSourceFile.renamedDependencies, moduleName.text)) {
5353+
return `"${currentSourceFile.renamedDependencies[moduleName.text]}"`
5354+
}
5355+
return undefined;
5356+
}
53465357

53475358
function emitRequire(moduleName: Expression) {
53485359
if (moduleName.kind === SyntaxKind.StringLiteral) {
53495360
write("require(");
5350-
emitStart(moduleName);
5351-
emitLiteral(<LiteralExpression>moduleName);
5352-
emitEnd(moduleName);
5361+
let text = tryRenameExternalModule(<LiteralExpression>moduleName);
5362+
if (text) {
5363+
write(text);
5364+
}
5365+
else {
5366+
emitStart(moduleName);
5367+
emitLiteral(<LiteralExpression>moduleName);
5368+
emitEnd(moduleName);
5369+
}
53535370
emitToken(SyntaxKind.CloseParenToken, moduleName.end);
53545371
}
53555372
else {
@@ -5752,7 +5769,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
57525769
function getExternalModuleNameText(importNode: ImportDeclaration | ExportDeclaration | ImportEqualsDeclaration): string {
57535770
let moduleName = getExternalModuleName(importNode);
57545771
if (moduleName.kind === SyntaxKind.StringLiteral) {
5755-
return getLiteralText(<LiteralExpression>moduleName);
5772+
return tryRenameExternalModule(<LiteralExpression>moduleName) || getLiteralText(<LiteralExpression>moduleName);
57565773
}
57575774

57585775
return undefined;
@@ -6317,10 +6334,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
63176334
groupIndices[text] = dependencyGroups.length;
63186335
dependencyGroups.push([externalImports[i]]);
63196336
}
6320-
6337+
63216338
if (i !== 0) {
63226339
write(", ");
63236340
}
6341+
63246342
write(text);
63256343
}
63266344
write(`], function(${exportFunctionForFile}) {`);

src/compiler/scanner.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,6 @@ namespace ts {
672672
ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierPart(ch, languageVersion);
673673
}
674674

675-
/* @internal */
676675
// Creates a scanner over a (possibly unspecified) range of a piece of text.
677676
export function createScanner(languageVersion: ScriptTarget,
678677
skipTrivia: boolean,

src/compiler/sys.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ namespace ts {
334334
if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") {
335335
return getWScriptSystem();
336336
}
337-
else if (typeof process !== "undefined" && process.nextTick && !process.browser) {
337+
else if (typeof process !== "undefined" && process.nextTick && !process.browser && typeof require !== "undefined") {
338338
// process and process.nextTick checks if current environment is node-like
339339
// process.browser check excludes webpack and browserify
340340
return getNodeSystem();

src/compiler/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,6 +1244,10 @@ namespace ts {
12441244
moduleName: string;
12451245
referencedFiles: FileReference[];
12461246
languageVariant: LanguageVariant;
1247+
1248+
// this map is used by transpiler to supply alternative names for dependencies (i.e. in case of bundling)
1249+
/* @internal */
1250+
renamedDependencies?: Map<string>;
12471251

12481252
/**
12491253
* lib.d.ts should have a reference comment like

src/services/formatting/smartIndenter.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ namespace ts.formatting {
428428
case SyntaxKind.ConditionalExpression:
429429
case SyntaxKind.ArrayBindingPattern:
430430
case SyntaxKind.ObjectBindingPattern:
431+
case SyntaxKind.JsxElement:
431432
return true;
432433
}
433434
return false;

src/services/services.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1776,6 +1776,7 @@ namespace ts {
17761776
fileName?: string;
17771777
reportDiagnostics?: boolean;
17781778
moduleName?: string;
1779+
renamedDependencies?: Map<string>;
17791780
}
17801781

17811782
export interface TranspileOutput {
@@ -1792,8 +1793,8 @@ namespace ts {
17921793
* - allowNonTsExtensions = true
17931794
* - noLib = true
17941795
* - noResolve = true
1795-
*/
1796-
export function transpileModule(input: string, transpileOptions?: TranspileOptions): TranspileOutput {
1796+
*/
1797+
export function transpileModule(input: string, transpileOptions: TranspileOptions): TranspileOutput {
17971798
let options = transpileOptions.compilerOptions ? clone(transpileOptions.compilerOptions) : getDefaultCompilerOptions();
17981799

17991800
options.isolatedModules = true;
@@ -1816,6 +1817,8 @@ namespace ts {
18161817
sourceFile.moduleName = transpileOptions.moduleName;
18171818
}
18181819

1820+
sourceFile.renamedDependencies = transpileOptions.renamedDependencies;
1821+
18191822
let newLine = getNewLineCharacter(options);
18201823

18211824
// Output
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//// [tests/cases/compiler/es6ImportEqualsDeclaration2.ts] ////
2+
3+
//// [server.d.ts]
4+
5+
declare module "other" {
6+
export class C { }
7+
}
8+
9+
declare module "server" {
10+
import events = require("other"); // Ambient declaration, no error expected.
11+
12+
module S {
13+
export var a: number;
14+
}
15+
16+
export = S; // Ambient declaration, no error expected.
17+
}
18+
19+
//// [client.ts]
20+
import {a} from "server";
21+
22+
23+
//// [client.js]
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
=== tests/cases/compiler/server.d.ts ===
2+
3+
declare module "other" {
4+
export class C { }
5+
>C : Symbol(C, Decl(server.d.ts, 1, 24))
6+
}
7+
8+
declare module "server" {
9+
import events = require("other"); // Ambient declaration, no error expected.
10+
>events : Symbol(events, Decl(server.d.ts, 5, 25))
11+
12+
module S {
13+
>S : Symbol(S, Decl(server.d.ts, 6, 37))
14+
15+
export var a: number;
16+
>a : Symbol(a, Decl(server.d.ts, 9, 18))
17+
}
18+
19+
export = S; // Ambient declaration, no error expected.
20+
>S : Symbol(S, Decl(server.d.ts, 6, 37))
21+
}
22+
23+
=== tests/cases/compiler/client.ts ===
24+
import {a} from "server";
25+
>a : Symbol(a, Decl(client.ts, 0, 8))
26+

0 commit comments

Comments
 (0)