@@ -31,6 +31,36 @@ var ts;
3131/// <reference path="types.ts"/>
3232var ts;
3333(function (ts) {
34+ function createFileMap(getCanonicalFileName) {
35+ var files = {};
36+ return {
37+ get: get,
38+ set: set,
39+ contains: contains,
40+ remove: remove,
41+ forEachValue: forEachValueInMap
42+ };
43+ function set(fileName, value) {
44+ files[normalizeKey(fileName)] = value;
45+ }
46+ function get(fileName) {
47+ return files[normalizeKey(fileName)];
48+ }
49+ function contains(fileName) {
50+ return hasProperty(files, normalizeKey(fileName));
51+ }
52+ function remove(fileName) {
53+ var key = normalizeKey(fileName);
54+ delete files[key];
55+ }
56+ function forEachValueInMap(f) {
57+ forEachValue(files, f);
58+ }
59+ function normalizeKey(key) {
60+ return getCanonicalFileName(normalizeSlashes(key));
61+ }
62+ }
63+ ts.createFileMap = createFileMap;
3464 function forEach(array, callback) {
3565 if (array) {
3666 for (var i = 0, len = array.length; i < len; i++) {
@@ -7758,7 +7788,7 @@ var ts;
77587788 token === 18) {
77597789 return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers);
77607790 }
7761- if (decorators) {
7791+ if (decorators || modifiers ) {
77627792 var name_3 = createMissingNode(65, true, ts.Diagnostics.Declaration_expected);
77637793 return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined);
77647794 }
@@ -8162,7 +8192,7 @@ var ts;
81628192 case 85:
81638193 return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers);
81648194 default:
8165- if (decorators) {
8195+ if (decorators || modifiers ) {
81668196 var node = createMissingNode(219, true, ts.Diagnostics.Declaration_expected);
81678197 node.pos = fullStart;
81688198 node.decorators = decorators;
@@ -8238,7 +8268,7 @@ var ts;
82388268 }
82398269 sourceFile.referencedFiles = referencedFiles;
82408270 sourceFile.amdDependencies = amdDependencies;
8241- sourceFile.amdModuleName = amdModuleName;
8271+ sourceFile.moduleName = amdModuleName;
82428272 }
82438273 function setExternalModuleIndicator(sourceFile) {
82448274 sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) {
@@ -8849,21 +8879,24 @@ var ts;
88498879 if (!ts.isExternalModule(location))
88508880 break;
88518881 case 206:
8852- if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931)) {
8853- if (result.flags & meaning || !(result.flags & 8388608 && getDeclarationOfAliasSymbol(result).kind === 218)) {
8854- break loop;
8855- }
8856- result = undefined;
8857- }
8858- else if (location.kind === 228 ||
8882+ var moduleExports = getSymbolOfNode(location).exports;
8883+ if (location.kind === 228 ||
88598884 (location.kind === 206 && location.name.kind === 8)) {
8860- result = getSymbolOfNode(location).exports["default"];
8885+ if (ts.hasProperty(moduleExports, name) &&
8886+ moduleExports[name].flags === 8388608 &&
8887+ ts.getDeclarationOfKind(moduleExports[name], 218)) {
8888+ break;
8889+ }
8890+ result = moduleExports["default"];
88618891 var localSymbol = ts.getLocalSymbolForExportDefault(result);
88628892 if (result && localSymbol && (result.flags & meaning) && localSymbol.name === name) {
88638893 break loop;
88648894 }
88658895 result = undefined;
88668896 }
8897+ if (result = getSymbol(moduleExports, name, meaning & 8914931)) {
8898+ break loop;
8899+ }
88678900 break;
88688901 case 205:
88698902 if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) {
@@ -24450,10 +24483,10 @@ var ts;
2445024483 emitSetters(exportStarFunction);
2445124484 writeLine();
2445224485 emitExecute(node, startIndex);
24453- emitTempDeclarations(true);
2445424486 decreaseIndent();
2445524487 writeLine();
2445624488 write("}");
24489+ emitTempDeclarations(true);
2445724490 }
2445824491 function emitSetters(exportStarFunction) {
2445924492 write("setters:[");
@@ -24553,7 +24586,11 @@ var ts;
2455324586 collectExternalModuleInfo(node);
2455424587 ts.Debug.assert(!exportFunctionForFile);
2455524588 exportFunctionForFile = makeUniqueName("exports");
24556- write("System.register([");
24589+ write("System.register(");
24590+ if (node.moduleName) {
24591+ write("\"" + node.moduleName + "\", ");
24592+ }
24593+ write("[");
2455724594 for (var i = 0; i < externalImports.length; ++i) {
2455824595 var text = getExternalModuleNameText(externalImports[i]);
2455924596 if (i !== 0) {
@@ -24626,8 +24663,8 @@ var ts;
2462624663 collectExternalModuleInfo(node);
2462724664 writeLine();
2462824665 write("define(");
24629- if (node.amdModuleName ) {
24630- write("\"" + node.amdModuleName + "\", ");
24666+ if (node.moduleName ) {
24667+ write("\"" + node.moduleName + "\", ");
2463124668 }
2463224669 emitAMDDependencies(node, true);
2463324670 write(") {");
@@ -25201,14 +25238,14 @@ var ts;
2520125238 function createProgram(rootNames, options, host) {
2520225239 var program;
2520325240 var files = [];
25204- var filesByName = {};
2520525241 var diagnostics = ts.createDiagnosticCollection();
2520625242 var seenNoDefaultLib = options.noLib;
2520725243 var commonSourceDirectory;
2520825244 var diagnosticsProducingTypeChecker;
2520925245 var noDiagnosticsTypeChecker;
2521025246 var start = new Date().getTime();
2521125247 host = host || createCompilerHost(options);
25248+ var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); });
2521225249 ts.forEach(rootNames, function (name) { return processRootFile(name, false); });
2521325250 if (!seenNoDefaultLib) {
2521425251 processRootFile(host.getDefaultLibFileName(options), true);
@@ -25264,8 +25301,7 @@ var ts;
2526425301 return emitResult;
2526525302 }
2526625303 function getSourceFile(fileName) {
25267- fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
25268- return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
25304+ return filesByName.get(fileName);
2526925305 }
2527025306 function getDiagnosticsHelper(sourceFile, getDiagnostics) {
2527125307 if (sourceFile) {
@@ -25361,26 +25397,27 @@ var ts;
2536125397 }
2536225398 function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
2536325399 var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
25364- if (ts.hasProperty(filesByName, canonicalName)) {
25400+ if (filesByName.contains( canonicalName)) {
2536525401 return getSourceFileFromCache(fileName, canonicalName, false);
2536625402 }
2536725403 else {
2536825404 var normalizedAbsolutePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory());
2536925405 var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath);
25370- if (ts.hasProperty(filesByName, canonicalAbsolutePath)) {
25406+ if (filesByName.contains( canonicalAbsolutePath)) {
2537125407 return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, true);
2537225408 }
25373- var file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
25409+ var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
2537425410 if (refFile) {
2537525411 diagnostics.add(ts.createFileDiagnostic(refFile, refStart, refLength, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
2537625412 }
2537725413 else {
2537825414 diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
2537925415 }
2538025416 });
25417+ filesByName.set(canonicalName, file);
2538125418 if (file) {
2538225419 seenNoDefaultLib = seenNoDefaultLib || file.hasNoDefaultLib;
25383- filesByName[ canonicalAbsolutePath] = file;
25420+ filesByName.set( canonicalAbsolutePath, file) ;
2538425421 if (!options.noResolve) {
2538525422 var basePath = ts.getDirectoryPath(fileName);
2538625423 processReferencedFiles(file, basePath);
@@ -25396,7 +25433,7 @@ var ts;
2539625433 return file;
2539725434 }
2539825435 function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) {
25399- var file = filesByName[ canonicalName] ;
25436+ var file = filesByName.get( canonicalName) ;
2540025437 if (file && host.useCaseSensitiveFileNames()) {
2540125438 var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName;
2540225439 if (canonicalName !== sourceFileName) {
0 commit comments