mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-03-01 03:36:54 -06:00
update LKG
This commit is contained in:
parent
1ef79431a0
commit
331b63df7d
83
bin/tsc.js
83
bin/tsc.js
@ -31,6 +31,36 @@ var ts;
|
||||
/// <reference path="types.ts"/>
|
||||
var ts;
|
||||
(function (ts) {
|
||||
function createFileMap(getCanonicalFileName) {
|
||||
var files = {};
|
||||
return {
|
||||
get: get,
|
||||
set: set,
|
||||
contains: contains,
|
||||
remove: remove,
|
||||
forEachValue: forEachValueInMap
|
||||
};
|
||||
function set(fileName, value) {
|
||||
files[normalizeKey(fileName)] = value;
|
||||
}
|
||||
function get(fileName) {
|
||||
return files[normalizeKey(fileName)];
|
||||
}
|
||||
function contains(fileName) {
|
||||
return hasProperty(files, normalizeKey(fileName));
|
||||
}
|
||||
function remove(fileName) {
|
||||
var key = normalizeKey(fileName);
|
||||
delete files[key];
|
||||
}
|
||||
function forEachValueInMap(f) {
|
||||
forEachValue(files, f);
|
||||
}
|
||||
function normalizeKey(key) {
|
||||
return getCanonicalFileName(normalizeSlashes(key));
|
||||
}
|
||||
}
|
||||
ts.createFileMap = createFileMap;
|
||||
function forEach(array, callback) {
|
||||
if (array) {
|
||||
for (var i = 0, len = array.length; i < len; i++) {
|
||||
@ -7758,7 +7788,7 @@ var ts;
|
||||
token === 18) {
|
||||
return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers);
|
||||
}
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
var name_3 = createMissingNode(65, true, ts.Diagnostics.Declaration_expected);
|
||||
return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined);
|
||||
}
|
||||
@ -8162,7 +8192,7 @@ var ts;
|
||||
case 85:
|
||||
return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers);
|
||||
default:
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
var node = createMissingNode(219, true, ts.Diagnostics.Declaration_expected);
|
||||
node.pos = fullStart;
|
||||
node.decorators = decorators;
|
||||
@ -8238,7 +8268,7 @@ var ts;
|
||||
}
|
||||
sourceFile.referencedFiles = referencedFiles;
|
||||
sourceFile.amdDependencies = amdDependencies;
|
||||
sourceFile.amdModuleName = amdModuleName;
|
||||
sourceFile.moduleName = amdModuleName;
|
||||
}
|
||||
function setExternalModuleIndicator(sourceFile) {
|
||||
sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) {
|
||||
@ -8849,21 +8879,24 @@ var ts;
|
||||
if (!ts.isExternalModule(location))
|
||||
break;
|
||||
case 206:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931)) {
|
||||
if (result.flags & meaning || !(result.flags & 8388608 && getDeclarationOfAliasSymbol(result).kind === 218)) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
else if (location.kind === 228 ||
|
||||
var moduleExports = getSymbolOfNode(location).exports;
|
||||
if (location.kind === 228 ||
|
||||
(location.kind === 206 && location.name.kind === 8)) {
|
||||
result = getSymbolOfNode(location).exports["default"];
|
||||
if (ts.hasProperty(moduleExports, name) &&
|
||||
moduleExports[name].flags === 8388608 &&
|
||||
ts.getDeclarationOfKind(moduleExports[name], 218)) {
|
||||
break;
|
||||
}
|
||||
result = moduleExports["default"];
|
||||
var localSymbol = ts.getLocalSymbolForExportDefault(result);
|
||||
if (result && localSymbol && (result.flags & meaning) && localSymbol.name === name) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
if (result = getSymbol(moduleExports, name, meaning & 8914931)) {
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
case 205:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) {
|
||||
@ -24450,10 +24483,10 @@ var ts;
|
||||
emitSetters(exportStarFunction);
|
||||
writeLine();
|
||||
emitExecute(node, startIndex);
|
||||
emitTempDeclarations(true);
|
||||
decreaseIndent();
|
||||
writeLine();
|
||||
write("}");
|
||||
emitTempDeclarations(true);
|
||||
}
|
||||
function emitSetters(exportStarFunction) {
|
||||
write("setters:[");
|
||||
@ -24553,7 +24586,11 @@ var ts;
|
||||
collectExternalModuleInfo(node);
|
||||
ts.Debug.assert(!exportFunctionForFile);
|
||||
exportFunctionForFile = makeUniqueName("exports");
|
||||
write("System.register([");
|
||||
write("System.register(");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
write("[");
|
||||
for (var i = 0; i < externalImports.length; ++i) {
|
||||
var text = getExternalModuleNameText(externalImports[i]);
|
||||
if (i !== 0) {
|
||||
@ -24626,8 +24663,8 @@ var ts;
|
||||
collectExternalModuleInfo(node);
|
||||
writeLine();
|
||||
write("define(");
|
||||
if (node.amdModuleName) {
|
||||
write("\"" + node.amdModuleName + "\", ");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
emitAMDDependencies(node, true);
|
||||
write(") {");
|
||||
@ -25201,7 +25238,6 @@ var ts;
|
||||
function createProgram(rootNames, options, host) {
|
||||
var program;
|
||||
var files = [];
|
||||
var filesByName = {};
|
||||
var diagnostics = ts.createDiagnosticCollection();
|
||||
var seenNoDefaultLib = options.noLib;
|
||||
var commonSourceDirectory;
|
||||
@ -25209,6 +25245,7 @@ var ts;
|
||||
var noDiagnosticsTypeChecker;
|
||||
var start = new Date().getTime();
|
||||
host = host || createCompilerHost(options);
|
||||
var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); });
|
||||
ts.forEach(rootNames, function (name) { return processRootFile(name, false); });
|
||||
if (!seenNoDefaultLib) {
|
||||
processRootFile(host.getDefaultLibFileName(options), true);
|
||||
@ -25264,8 +25301,7 @@ var ts;
|
||||
return emitResult;
|
||||
}
|
||||
function getSourceFile(fileName) {
|
||||
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
|
||||
return filesByName.get(fileName);
|
||||
}
|
||||
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
|
||||
if (sourceFile) {
|
||||
@ -25361,16 +25397,16 @@ var ts;
|
||||
}
|
||||
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
|
||||
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
if (ts.hasProperty(filesByName, canonicalName)) {
|
||||
if (filesByName.contains(canonicalName)) {
|
||||
return getSourceFileFromCache(fileName, canonicalName, false);
|
||||
}
|
||||
else {
|
||||
var normalizedAbsolutePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory());
|
||||
var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath);
|
||||
if (ts.hasProperty(filesByName, canonicalAbsolutePath)) {
|
||||
if (filesByName.contains(canonicalAbsolutePath)) {
|
||||
return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, true);
|
||||
}
|
||||
var file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
if (refFile) {
|
||||
diagnostics.add(ts.createFileDiagnostic(refFile, refStart, refLength, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
@ -25378,9 +25414,10 @@ var ts;
|
||||
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
});
|
||||
filesByName.set(canonicalName, file);
|
||||
if (file) {
|
||||
seenNoDefaultLib = seenNoDefaultLib || file.hasNoDefaultLib;
|
||||
filesByName[canonicalAbsolutePath] = file;
|
||||
filesByName.set(canonicalAbsolutePath, file);
|
||||
if (!options.noResolve) {
|
||||
var basePath = ts.getDirectoryPath(fileName);
|
||||
processReferencedFiles(file, basePath);
|
||||
@ -25396,7 +25433,7 @@ var ts;
|
||||
return file;
|
||||
}
|
||||
function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) {
|
||||
var file = filesByName[canonicalName];
|
||||
var file = filesByName.get(canonicalName);
|
||||
if (file && host.useCaseSensitiveFileNames()) {
|
||||
var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName;
|
||||
if (canonicalName !== sourceFileName) {
|
||||
|
||||
134
bin/tsserver.js
134
bin/tsserver.js
@ -31,6 +31,36 @@ var ts;
|
||||
/// <reference path="types.ts"/>
|
||||
var ts;
|
||||
(function (ts) {
|
||||
function createFileMap(getCanonicalFileName) {
|
||||
var files = {};
|
||||
return {
|
||||
get: get,
|
||||
set: set,
|
||||
contains: contains,
|
||||
remove: remove,
|
||||
forEachValue: forEachValueInMap
|
||||
};
|
||||
function set(fileName, value) {
|
||||
files[normalizeKey(fileName)] = value;
|
||||
}
|
||||
function get(fileName) {
|
||||
return files[normalizeKey(fileName)];
|
||||
}
|
||||
function contains(fileName) {
|
||||
return hasProperty(files, normalizeKey(fileName));
|
||||
}
|
||||
function remove(fileName) {
|
||||
var key = normalizeKey(fileName);
|
||||
delete files[key];
|
||||
}
|
||||
function forEachValueInMap(f) {
|
||||
forEachValue(files, f);
|
||||
}
|
||||
function normalizeKey(key) {
|
||||
return getCanonicalFileName(normalizeSlashes(key));
|
||||
}
|
||||
}
|
||||
ts.createFileMap = createFileMap;
|
||||
function forEach(array, callback) {
|
||||
if (array) {
|
||||
for (var i = 0, len = array.length; i < len; i++) {
|
||||
@ -7635,7 +7665,7 @@ var ts;
|
||||
token === 18) {
|
||||
return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers);
|
||||
}
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
var name_3 = createMissingNode(65, true, ts.Diagnostics.Declaration_expected);
|
||||
return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined);
|
||||
}
|
||||
@ -8039,7 +8069,7 @@ var ts;
|
||||
case 85:
|
||||
return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers);
|
||||
default:
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
var node = createMissingNode(219, true, ts.Diagnostics.Declaration_expected);
|
||||
node.pos = fullStart;
|
||||
node.decorators = decorators;
|
||||
@ -8115,7 +8145,7 @@ var ts;
|
||||
}
|
||||
sourceFile.referencedFiles = referencedFiles;
|
||||
sourceFile.amdDependencies = amdDependencies;
|
||||
sourceFile.amdModuleName = amdModuleName;
|
||||
sourceFile.moduleName = amdModuleName;
|
||||
}
|
||||
function setExternalModuleIndicator(sourceFile) {
|
||||
sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) {
|
||||
@ -9239,21 +9269,24 @@ var ts;
|
||||
if (!ts.isExternalModule(location))
|
||||
break;
|
||||
case 206:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931)) {
|
||||
if (result.flags & meaning || !(result.flags & 8388608 && getDeclarationOfAliasSymbol(result).kind === 218)) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
else if (location.kind === 228 ||
|
||||
var moduleExports = getSymbolOfNode(location).exports;
|
||||
if (location.kind === 228 ||
|
||||
(location.kind === 206 && location.name.kind === 8)) {
|
||||
result = getSymbolOfNode(location).exports["default"];
|
||||
if (ts.hasProperty(moduleExports, name) &&
|
||||
moduleExports[name].flags === 8388608 &&
|
||||
ts.getDeclarationOfKind(moduleExports[name], 218)) {
|
||||
break;
|
||||
}
|
||||
result = moduleExports["default"];
|
||||
var localSymbol = ts.getLocalSymbolForExportDefault(result);
|
||||
if (result && localSymbol && (result.flags & meaning) && localSymbol.name === name) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
if (result = getSymbol(moduleExports, name, meaning & 8914931)) {
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
case 205:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) {
|
||||
@ -24840,10 +24873,10 @@ var ts;
|
||||
emitSetters(exportStarFunction);
|
||||
writeLine();
|
||||
emitExecute(node, startIndex);
|
||||
emitTempDeclarations(true);
|
||||
decreaseIndent();
|
||||
writeLine();
|
||||
write("}");
|
||||
emitTempDeclarations(true);
|
||||
}
|
||||
function emitSetters(exportStarFunction) {
|
||||
write("setters:[");
|
||||
@ -24943,7 +24976,11 @@ var ts;
|
||||
collectExternalModuleInfo(node);
|
||||
ts.Debug.assert(!exportFunctionForFile);
|
||||
exportFunctionForFile = makeUniqueName("exports");
|
||||
write("System.register([");
|
||||
write("System.register(");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
write("[");
|
||||
for (var i = 0; i < externalImports.length; ++i) {
|
||||
var text = getExternalModuleNameText(externalImports[i]);
|
||||
if (i !== 0) {
|
||||
@ -25016,8 +25053,8 @@ var ts;
|
||||
collectExternalModuleInfo(node);
|
||||
writeLine();
|
||||
write("define(");
|
||||
if (node.amdModuleName) {
|
||||
write("\"" + node.amdModuleName + "\", ");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
emitAMDDependencies(node, true);
|
||||
write(") {");
|
||||
@ -25591,7 +25628,6 @@ var ts;
|
||||
function createProgram(rootNames, options, host) {
|
||||
var program;
|
||||
var files = [];
|
||||
var filesByName = {};
|
||||
var diagnostics = ts.createDiagnosticCollection();
|
||||
var seenNoDefaultLib = options.noLib;
|
||||
var commonSourceDirectory;
|
||||
@ -25599,6 +25635,7 @@ var ts;
|
||||
var noDiagnosticsTypeChecker;
|
||||
var start = new Date().getTime();
|
||||
host = host || createCompilerHost(options);
|
||||
var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); });
|
||||
ts.forEach(rootNames, function (name) { return processRootFile(name, false); });
|
||||
if (!seenNoDefaultLib) {
|
||||
processRootFile(host.getDefaultLibFileName(options), true);
|
||||
@ -25654,8 +25691,7 @@ var ts;
|
||||
return emitResult;
|
||||
}
|
||||
function getSourceFile(fileName) {
|
||||
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
|
||||
return filesByName.get(fileName);
|
||||
}
|
||||
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
|
||||
if (sourceFile) {
|
||||
@ -25751,16 +25787,16 @@ var ts;
|
||||
}
|
||||
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
|
||||
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
if (ts.hasProperty(filesByName, canonicalName)) {
|
||||
if (filesByName.contains(canonicalName)) {
|
||||
return getSourceFileFromCache(fileName, canonicalName, false);
|
||||
}
|
||||
else {
|
||||
var normalizedAbsolutePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory());
|
||||
var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath);
|
||||
if (ts.hasProperty(filesByName, canonicalAbsolutePath)) {
|
||||
if (filesByName.contains(canonicalAbsolutePath)) {
|
||||
return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, true);
|
||||
}
|
||||
var file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
if (refFile) {
|
||||
diagnostics.add(ts.createFileDiagnostic(refFile, refStart, refLength, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
@ -25768,9 +25804,10 @@ var ts;
|
||||
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
});
|
||||
filesByName.set(canonicalName, file);
|
||||
if (file) {
|
||||
seenNoDefaultLib = seenNoDefaultLib || file.hasNoDefaultLib;
|
||||
filesByName[canonicalAbsolutePath] = file;
|
||||
filesByName.set(canonicalAbsolutePath, file);
|
||||
if (!options.noResolve) {
|
||||
var basePath = ts.getDirectoryPath(fileName);
|
||||
processReferencedFiles(file, basePath);
|
||||
@ -25786,7 +25823,7 @@ var ts;
|
||||
return file;
|
||||
}
|
||||
function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) {
|
||||
var file = filesByName[canonicalName];
|
||||
var file = filesByName.get(canonicalName);
|
||||
if (file && host.useCaseSensitiveFileNames()) {
|
||||
var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName;
|
||||
if (canonicalName !== sourceFileName) {
|
||||
@ -31308,8 +31345,7 @@ var ts;
|
||||
var HostCache = (function () {
|
||||
function HostCache(host, getCanonicalFileName) {
|
||||
this.host = host;
|
||||
this.getCanonicalFileName = getCanonicalFileName;
|
||||
this.fileNameToEntry = {};
|
||||
this.fileNameToEntry = ts.createFileMap(getCanonicalFileName);
|
||||
var rootFileNames = host.getScriptFileNames();
|
||||
for (var _i = 0; _i < rootFileNames.length; _i++) {
|
||||
var fileName = rootFileNames[_i];
|
||||
@ -31320,9 +31356,6 @@ var ts;
|
||||
HostCache.prototype.compilationSettings = function () {
|
||||
return this._compilationSettings;
|
||||
};
|
||||
HostCache.prototype.normalizeFileName = function (fileName) {
|
||||
return this.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
};
|
||||
HostCache.prototype.createEntry = function (fileName) {
|
||||
var entry;
|
||||
var scriptSnapshot = this.host.getScriptSnapshot(fileName);
|
||||
@ -31333,13 +31366,14 @@ var ts;
|
||||
scriptSnapshot: scriptSnapshot
|
||||
};
|
||||
}
|
||||
return this.fileNameToEntry[this.normalizeFileName(fileName)] = entry;
|
||||
this.fileNameToEntry.set(fileName, entry);
|
||||
return entry;
|
||||
};
|
||||
HostCache.prototype.getEntry = function (fileName) {
|
||||
return ts.lookUp(this.fileNameToEntry, this.normalizeFileName(fileName));
|
||||
return this.fileNameToEntry.get(fileName);
|
||||
};
|
||||
HostCache.prototype.contains = function (fileName) {
|
||||
return ts.hasProperty(this.fileNameToEntry, this.normalizeFileName(fileName));
|
||||
return this.fileNameToEntry.contains(fileName);
|
||||
};
|
||||
HostCache.prototype.getOrCreateEntry = function (fileName) {
|
||||
if (this.contains(fileName)) {
|
||||
@ -31348,12 +31382,10 @@ var ts;
|
||||
return this.createEntry(fileName);
|
||||
};
|
||||
HostCache.prototype.getRootFileNames = function () {
|
||||
var _this = this;
|
||||
var fileNames = [];
|
||||
ts.forEachKey(this.fileNameToEntry, function (key) {
|
||||
var entry = _this.getEntry(key);
|
||||
if (entry) {
|
||||
fileNames.push(entry.hostFileName);
|
||||
this.fileNameToEntry.forEachValue(function (value) {
|
||||
if (value) {
|
||||
fileNames.push(value.hostFileName);
|
||||
}
|
||||
});
|
||||
return fileNames;
|
||||
@ -31400,7 +31432,7 @@ var ts;
|
||||
sourceFile.version = version;
|
||||
sourceFile.scriptSnapshot = scriptSnapshot;
|
||||
}
|
||||
function transpile(input, compilerOptions, fileName, diagnostics) {
|
||||
function transpile(input, compilerOptions, fileName, diagnostics, moduleName) {
|
||||
var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions();
|
||||
options.isolatedModules = true;
|
||||
options.allowNonTsExtensions = true;
|
||||
@ -31408,6 +31440,9 @@ var ts;
|
||||
options.noResolve = true;
|
||||
var inputFileName = fileName || "module.ts";
|
||||
var sourceFile = ts.createSourceFile(inputFileName, input, options.target);
|
||||
if (moduleName) {
|
||||
sourceFile.moduleName = moduleName;
|
||||
}
|
||||
if (diagnostics && sourceFile.parseDiagnostics) {
|
||||
diagnostics.push.apply(diagnostics, sourceFile.parseDiagnostics);
|
||||
}
|
||||
@ -31474,8 +31509,14 @@ var ts;
|
||||
return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, true);
|
||||
}
|
||||
ts.updateLanguageServiceSourceFile = updateLanguageServiceSourceFile;
|
||||
function createDocumentRegistry() {
|
||||
function createGetCanonicalFileName(useCaseSensitivefileNames) {
|
||||
return useCaseSensitivefileNames
|
||||
? (function (fileName) { return fileName; })
|
||||
: (function (fileName) { return fileName.toLowerCase(); });
|
||||
}
|
||||
function createDocumentRegistry(useCaseSensitiveFileNames) {
|
||||
var buckets = {};
|
||||
var getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames);
|
||||
function getKeyFromCompilationSettings(settings) {
|
||||
return "_" + settings.target;
|
||||
}
|
||||
@ -31483,7 +31524,7 @@ var ts;
|
||||
var key = getKeyFromCompilationSettings(settings);
|
||||
var bucket = ts.lookUp(buckets, key);
|
||||
if (!bucket && createIfMissing) {
|
||||
buckets[key] = bucket = {};
|
||||
buckets[key] = bucket = ts.createFileMap(getCanonicalFileName);
|
||||
}
|
||||
return bucket;
|
||||
}
|
||||
@ -31492,7 +31533,7 @@ var ts;
|
||||
var entries = ts.lookUp(buckets, name);
|
||||
var sourceFiles = [];
|
||||
for (var i in entries) {
|
||||
var entry = entries[i];
|
||||
var entry = entries.get(i);
|
||||
sourceFiles.push({
|
||||
name: i,
|
||||
refCount: entry.languageServiceRefCount,
|
||||
@ -31515,15 +31556,16 @@ var ts;
|
||||
}
|
||||
function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) {
|
||||
var bucket = getBucketForCompilationSettings(compilationSettings, true);
|
||||
var entry = ts.lookUp(bucket, fileName);
|
||||
var entry = bucket.get(fileName);
|
||||
if (!entry) {
|
||||
ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?");
|
||||
var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, false);
|
||||
bucket[fileName] = entry = {
|
||||
entry = {
|
||||
sourceFile: sourceFile,
|
||||
languageServiceRefCount: 0,
|
||||
owners: []
|
||||
};
|
||||
bucket.set(fileName, entry);
|
||||
}
|
||||
else {
|
||||
if (entry.sourceFile.version !== version) {
|
||||
@ -31538,11 +31580,11 @@ var ts;
|
||||
function releaseDocument(fileName, compilationSettings) {
|
||||
var bucket = getBucketForCompilationSettings(compilationSettings, false);
|
||||
ts.Debug.assert(bucket !== undefined);
|
||||
var entry = ts.lookUp(bucket, fileName);
|
||||
var entry = bucket.get(fileName);
|
||||
entry.languageServiceRefCount--;
|
||||
ts.Debug.assert(entry.languageServiceRefCount >= 0);
|
||||
if (entry.languageServiceRefCount === 0) {
|
||||
delete bucket[fileName];
|
||||
bucket.remove(fileName);
|
||||
}
|
||||
}
|
||||
return {
|
||||
@ -31887,9 +31929,7 @@ var ts;
|
||||
host.log(message);
|
||||
}
|
||||
}
|
||||
function getCanonicalFileName(fileName) {
|
||||
return useCaseSensitivefileNames ? fileName : fileName.toLowerCase();
|
||||
}
|
||||
var getCanonicalFileName = createGetCanonicalFileName(useCaseSensitivefileNames);
|
||||
function getValidSourceFile(fileName) {
|
||||
fileName = ts.normalizeSlashes(fileName);
|
||||
var sourceFile = program.getSourceFile(getCanonicalFileName(fileName));
|
||||
|
||||
14
bin/typescript.d.ts
vendored
14
bin/typescript.d.ts
vendored
@ -17,6 +17,13 @@ declare module "typescript" {
|
||||
interface Map<T> {
|
||||
[index: string]: T;
|
||||
}
|
||||
interface FileMap<T> {
|
||||
get(fileName: string): T;
|
||||
set(fileName: string, value: T): void;
|
||||
contains(fileName: string): boolean;
|
||||
remove(fileName: string): void;
|
||||
forEachValue(f: (v: T) => void): void;
|
||||
}
|
||||
interface TextRange {
|
||||
pos: number;
|
||||
end: number;
|
||||
@ -748,7 +755,7 @@ declare module "typescript" {
|
||||
path: string;
|
||||
name: string;
|
||||
}[];
|
||||
amdModuleName: string;
|
||||
moduleName: string;
|
||||
referencedFiles: FileReference[];
|
||||
hasNoDefaultLib: boolean;
|
||||
languageVersion: ScriptTarget;
|
||||
@ -1391,6 +1398,7 @@ declare module "typescript" {
|
||||
log?(s: string): void;
|
||||
trace?(s: string): void;
|
||||
error?(s: string): void;
|
||||
useCaseSensitiveFileNames?(): boolean;
|
||||
}
|
||||
interface LanguageService {
|
||||
cleanupSemanticCache(): void;
|
||||
@ -1847,11 +1855,11 @@ declare module "typescript" {
|
||||
isCancellationRequested(): boolean;
|
||||
throwIfCancellationRequested(): void;
|
||||
}
|
||||
function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string;
|
||||
function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[], moduleName?: string): string;
|
||||
function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile;
|
||||
let disableIncrementalParsing: boolean;
|
||||
function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile;
|
||||
function createDocumentRegistry(): DocumentRegistry;
|
||||
function createDocumentRegistry(useCaseSensitiveFileNames?: boolean): DocumentRegistry;
|
||||
function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo;
|
||||
function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry): LanguageService;
|
||||
function createClassifier(): Classifier;
|
||||
|
||||
@ -706,6 +706,36 @@ var ts;
|
||||
Ternary[Ternary["True"] = -1] = "True";
|
||||
})(ts.Ternary || (ts.Ternary = {}));
|
||||
var Ternary = ts.Ternary;
|
||||
function createFileMap(getCanonicalFileName) {
|
||||
var files = {};
|
||||
return {
|
||||
get: get,
|
||||
set: set,
|
||||
contains: contains,
|
||||
remove: remove,
|
||||
forEachValue: forEachValueInMap
|
||||
};
|
||||
function set(fileName, value) {
|
||||
files[normalizeKey(fileName)] = value;
|
||||
}
|
||||
function get(fileName) {
|
||||
return files[normalizeKey(fileName)];
|
||||
}
|
||||
function contains(fileName) {
|
||||
return hasProperty(files, normalizeKey(fileName));
|
||||
}
|
||||
function remove(fileName) {
|
||||
var key = normalizeKey(fileName);
|
||||
delete files[key];
|
||||
}
|
||||
function forEachValueInMap(f) {
|
||||
forEachValue(files, f);
|
||||
}
|
||||
function normalizeKey(key) {
|
||||
return getCanonicalFileName(normalizeSlashes(key));
|
||||
}
|
||||
}
|
||||
ts.createFileMap = createFileMap;
|
||||
(function (Comparison) {
|
||||
Comparison[Comparison["LessThan"] = -1] = "LessThan";
|
||||
Comparison[Comparison["EqualTo"] = 0] = "EqualTo";
|
||||
@ -9703,7 +9733,7 @@ var ts;
|
||||
token === 18 /* OpenBracketToken */) {
|
||||
return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers);
|
||||
}
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
// treat this as a property declaration with a missing name.
|
||||
var name_3 = createMissingNode(65 /* Identifier */, true, ts.Diagnostics.Declaration_expected);
|
||||
return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined);
|
||||
@ -10161,7 +10191,7 @@ var ts;
|
||||
case 85 /* ImportKeyword */:
|
||||
return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers);
|
||||
default:
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
// We reached this point because we encountered an AtToken and assumed a declaration would
|
||||
// follow. For recovery and error reporting purposes, return an incomplete declaration.
|
||||
var node = createMissingNode(219 /* MissingDeclaration */, true, ts.Diagnostics.Declaration_expected);
|
||||
@ -10242,7 +10272,7 @@ var ts;
|
||||
}
|
||||
sourceFile.referencedFiles = referencedFiles;
|
||||
sourceFile.amdDependencies = amdDependencies;
|
||||
sourceFile.amdModuleName = amdModuleName;
|
||||
sourceFile.moduleName = amdModuleName;
|
||||
}
|
||||
function setExternalModuleIndicator(sourceFile) {
|
||||
sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) {
|
||||
@ -11085,21 +11115,35 @@ var ts;
|
||||
if (!ts.isExternalModule(location))
|
||||
break;
|
||||
case 206 /* ModuleDeclaration */:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931 /* ModuleMember */)) {
|
||||
if (result.flags & meaning || !(result.flags & 8388608 /* Alias */ && getDeclarationOfAliasSymbol(result).kind === 218 /* ExportSpecifier */)) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
else if (location.kind === 228 /* SourceFile */ ||
|
||||
var moduleExports = getSymbolOfNode(location).exports;
|
||||
if (location.kind === 228 /* SourceFile */ ||
|
||||
(location.kind === 206 /* ModuleDeclaration */ && location.name.kind === 8 /* StringLiteral */)) {
|
||||
result = getSymbolOfNode(location).exports["default"];
|
||||
// It's an external module. Because of module/namespace merging, a module's exports are in scope,
|
||||
// yet we never want to treat an export specifier as putting a member in scope. Therefore,
|
||||
// if the name we find is purely an export specifier, it is not actually considered in scope.
|
||||
// Two things to note about this:
|
||||
// 1. We have to check this without calling getSymbol. The problem with calling getSymbol
|
||||
// on an export specifier is that it might find the export specifier itself, and try to
|
||||
// resolve it as an alias. This will cause the checker to consider the export specifier
|
||||
// a circular alias reference when it might not be.
|
||||
// 2. We check === SymbolFlags.Alias in order to check that the symbol is *purely*
|
||||
// an alias. If we used &, we'd be throwing out symbols that have non alias aspects,
|
||||
// which is not the desired behavior.
|
||||
if (ts.hasProperty(moduleExports, name) &&
|
||||
moduleExports[name].flags === 8388608 /* Alias */ &&
|
||||
ts.getDeclarationOfKind(moduleExports[name], 218 /* ExportSpecifier */)) {
|
||||
break;
|
||||
}
|
||||
result = moduleExports["default"];
|
||||
var localSymbol = ts.getLocalSymbolForExportDefault(result);
|
||||
if (result && localSymbol && (result.flags & meaning) && localSymbol.name === name) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
if (result = getSymbol(moduleExports, name, meaning & 8914931 /* ModuleMember */)) {
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
case 205 /* EnumDeclaration */:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8 /* EnumMember */)) {
|
||||
@ -28972,10 +29016,10 @@ var ts;
|
||||
emitSetters(exportStarFunction);
|
||||
writeLine();
|
||||
emitExecute(node, startIndex);
|
||||
emitTempDeclarations(true);
|
||||
decreaseIndent();
|
||||
writeLine();
|
||||
write("}"); // return
|
||||
emitTempDeclarations(true);
|
||||
}
|
||||
function emitSetters(exportStarFunction) {
|
||||
write("setters:[");
|
||||
@ -29108,7 +29152,11 @@ var ts;
|
||||
ts.Debug.assert(!exportFunctionForFile);
|
||||
// make sure that name of 'exports' function does not conflict with existing identifiers
|
||||
exportFunctionForFile = makeUniqueName("exports");
|
||||
write("System.register([");
|
||||
write("System.register(");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
write("[");
|
||||
for (var i = 0; i < externalImports.length; ++i) {
|
||||
var text = getExternalModuleNameText(externalImports[i]);
|
||||
if (i !== 0) {
|
||||
@ -29188,8 +29236,8 @@ var ts;
|
||||
collectExternalModuleInfo(node);
|
||||
writeLine();
|
||||
write("define(");
|
||||
if (node.amdModuleName) {
|
||||
write("\"" + node.amdModuleName + "\", ");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
emitAMDDependencies(node, true);
|
||||
write(") {");
|
||||
@ -29810,7 +29858,6 @@ var ts;
|
||||
function createProgram(rootNames, options, host) {
|
||||
var program;
|
||||
var files = [];
|
||||
var filesByName = {};
|
||||
var diagnostics = ts.createDiagnosticCollection();
|
||||
var seenNoDefaultLib = options.noLib;
|
||||
var commonSourceDirectory;
|
||||
@ -29818,6 +29865,7 @@ var ts;
|
||||
var noDiagnosticsTypeChecker;
|
||||
var start = new Date().getTime();
|
||||
host = host || createCompilerHost(options);
|
||||
var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); });
|
||||
ts.forEach(rootNames, function (name) { return processRootFile(name, false); });
|
||||
if (!seenNoDefaultLib) {
|
||||
processRootFile(host.getDefaultLibFileName(options), true);
|
||||
@ -29883,8 +29931,7 @@ var ts;
|
||||
return emitResult;
|
||||
}
|
||||
function getSourceFile(fileName) {
|
||||
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
|
||||
return filesByName.get(fileName);
|
||||
}
|
||||
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
|
||||
if (sourceFile) {
|
||||
@ -29982,18 +30029,18 @@ var ts;
|
||||
// Get source file from normalized fileName
|
||||
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
|
||||
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
if (ts.hasProperty(filesByName, canonicalName)) {
|
||||
if (filesByName.contains(canonicalName)) {
|
||||
// We've already looked for this file, use cached result
|
||||
return getSourceFileFromCache(fileName, canonicalName, false);
|
||||
}
|
||||
else {
|
||||
var normalizedAbsolutePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory());
|
||||
var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath);
|
||||
if (ts.hasProperty(filesByName, canonicalAbsolutePath)) {
|
||||
if (filesByName.contains(canonicalAbsolutePath)) {
|
||||
return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, true);
|
||||
}
|
||||
// We haven't looked for this file, do so now and cache result
|
||||
var file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
if (refFile) {
|
||||
diagnostics.add(ts.createFileDiagnostic(refFile, refStart, refLength, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
@ -30001,10 +30048,11 @@ var ts;
|
||||
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
});
|
||||
filesByName.set(canonicalName, file);
|
||||
if (file) {
|
||||
seenNoDefaultLib = seenNoDefaultLib || file.hasNoDefaultLib;
|
||||
// Set the source file for normalized absolute path
|
||||
filesByName[canonicalAbsolutePath] = file;
|
||||
filesByName.set(canonicalAbsolutePath, file);
|
||||
if (!options.noResolve) {
|
||||
var basePath = ts.getDirectoryPath(fileName);
|
||||
processReferencedFiles(file, basePath);
|
||||
@ -30020,7 +30068,7 @@ var ts;
|
||||
return file;
|
||||
}
|
||||
function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) {
|
||||
var file = filesByName[canonicalName];
|
||||
var file = filesByName.get(canonicalName);
|
||||
if (file && host.useCaseSensitiveFileNames()) {
|
||||
var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName;
|
||||
if (canonicalName !== sourceFileName) {
|
||||
@ -36625,9 +36673,8 @@ var ts;
|
||||
var HostCache = (function () {
|
||||
function HostCache(host, getCanonicalFileName) {
|
||||
this.host = host;
|
||||
this.getCanonicalFileName = getCanonicalFileName;
|
||||
// script id => script index
|
||||
this.fileNameToEntry = {};
|
||||
this.fileNameToEntry = ts.createFileMap(getCanonicalFileName);
|
||||
// Initialize the list with the root file names
|
||||
var rootFileNames = host.getScriptFileNames();
|
||||
for (var _i = 0; _i < rootFileNames.length; _i++) {
|
||||
@ -36640,9 +36687,6 @@ var ts;
|
||||
HostCache.prototype.compilationSettings = function () {
|
||||
return this._compilationSettings;
|
||||
};
|
||||
HostCache.prototype.normalizeFileName = function (fileName) {
|
||||
return this.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
};
|
||||
HostCache.prototype.createEntry = function (fileName) {
|
||||
var entry;
|
||||
var scriptSnapshot = this.host.getScriptSnapshot(fileName);
|
||||
@ -36653,13 +36697,14 @@ var ts;
|
||||
scriptSnapshot: scriptSnapshot
|
||||
};
|
||||
}
|
||||
return this.fileNameToEntry[this.normalizeFileName(fileName)] = entry;
|
||||
this.fileNameToEntry.set(fileName, entry);
|
||||
return entry;
|
||||
};
|
||||
HostCache.prototype.getEntry = function (fileName) {
|
||||
return ts.lookUp(this.fileNameToEntry, this.normalizeFileName(fileName));
|
||||
return this.fileNameToEntry.get(fileName);
|
||||
};
|
||||
HostCache.prototype.contains = function (fileName) {
|
||||
return ts.hasProperty(this.fileNameToEntry, this.normalizeFileName(fileName));
|
||||
return this.fileNameToEntry.contains(fileName);
|
||||
};
|
||||
HostCache.prototype.getOrCreateEntry = function (fileName) {
|
||||
if (this.contains(fileName)) {
|
||||
@ -36668,12 +36713,10 @@ var ts;
|
||||
return this.createEntry(fileName);
|
||||
};
|
||||
HostCache.prototype.getRootFileNames = function () {
|
||||
var _this = this;
|
||||
var fileNames = [];
|
||||
ts.forEachKey(this.fileNameToEntry, function (key) {
|
||||
var entry = _this.getEntry(key);
|
||||
if (entry) {
|
||||
fileNames.push(entry.hostFileName);
|
||||
this.fileNameToEntry.forEachValue(function (value) {
|
||||
if (value) {
|
||||
fileNames.push(value.hostFileName);
|
||||
}
|
||||
});
|
||||
return fileNames;
|
||||
@ -36733,7 +36776,7 @@ var ts;
|
||||
* - noLib = true
|
||||
* - noResolve = true
|
||||
*/
|
||||
function transpile(input, compilerOptions, fileName, diagnostics) {
|
||||
function transpile(input, compilerOptions, fileName, diagnostics, moduleName) {
|
||||
var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions();
|
||||
options.isolatedModules = true;
|
||||
// Filename can be non-ts file.
|
||||
@ -36747,6 +36790,9 @@ var ts;
|
||||
// Parse
|
||||
var inputFileName = fileName || "module.ts";
|
||||
var sourceFile = ts.createSourceFile(inputFileName, input, options.target);
|
||||
if (moduleName) {
|
||||
sourceFile.moduleName = moduleName;
|
||||
}
|
||||
// Store syntactic diagnostics
|
||||
if (diagnostics && sourceFile.parseDiagnostics) {
|
||||
diagnostics.push.apply(diagnostics, sourceFile.parseDiagnostics);
|
||||
@ -36829,10 +36875,16 @@ var ts;
|
||||
return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, true);
|
||||
}
|
||||
ts.updateLanguageServiceSourceFile = updateLanguageServiceSourceFile;
|
||||
function createDocumentRegistry() {
|
||||
function createGetCanonicalFileName(useCaseSensitivefileNames) {
|
||||
return useCaseSensitivefileNames
|
||||
? (function (fileName) { return fileName; })
|
||||
: (function (fileName) { return fileName.toLowerCase(); });
|
||||
}
|
||||
function createDocumentRegistry(useCaseSensitiveFileNames) {
|
||||
// Maps from compiler setting target (ES3, ES5, etc.) to all the cached documents we have
|
||||
// for those settings.
|
||||
var buckets = {};
|
||||
var getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames);
|
||||
function getKeyFromCompilationSettings(settings) {
|
||||
return "_" + settings.target; // + "|" + settings.propagateEnumConstantoString()
|
||||
}
|
||||
@ -36840,7 +36892,7 @@ var ts;
|
||||
var key = getKeyFromCompilationSettings(settings);
|
||||
var bucket = ts.lookUp(buckets, key);
|
||||
if (!bucket && createIfMissing) {
|
||||
buckets[key] = bucket = {};
|
||||
buckets[key] = bucket = ts.createFileMap(getCanonicalFileName);
|
||||
}
|
||||
return bucket;
|
||||
}
|
||||
@ -36849,7 +36901,7 @@ var ts;
|
||||
var entries = ts.lookUp(buckets, name);
|
||||
var sourceFiles = [];
|
||||
for (var i in entries) {
|
||||
var entry = entries[i];
|
||||
var entry = entries.get(i);
|
||||
sourceFiles.push({
|
||||
name: i,
|
||||
refCount: entry.languageServiceRefCount,
|
||||
@ -36872,16 +36924,17 @@ var ts;
|
||||
}
|
||||
function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) {
|
||||
var bucket = getBucketForCompilationSettings(compilationSettings, true);
|
||||
var entry = ts.lookUp(bucket, fileName);
|
||||
var entry = bucket.get(fileName);
|
||||
if (!entry) {
|
||||
ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?");
|
||||
// Have never seen this file with these settings. Create a new source file for it.
|
||||
var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, false);
|
||||
bucket[fileName] = entry = {
|
||||
entry = {
|
||||
sourceFile: sourceFile,
|
||||
languageServiceRefCount: 0,
|
||||
owners: []
|
||||
};
|
||||
bucket.set(fileName, entry);
|
||||
}
|
||||
else {
|
||||
// We have an entry for this file. However, it may be for a different version of
|
||||
@ -36904,11 +36957,11 @@ var ts;
|
||||
function releaseDocument(fileName, compilationSettings) {
|
||||
var bucket = getBucketForCompilationSettings(compilationSettings, false);
|
||||
ts.Debug.assert(bucket !== undefined);
|
||||
var entry = ts.lookUp(bucket, fileName);
|
||||
var entry = bucket.get(fileName);
|
||||
entry.languageServiceRefCount--;
|
||||
ts.Debug.assert(entry.languageServiceRefCount >= 0);
|
||||
if (entry.languageServiceRefCount === 0) {
|
||||
delete bucket[fileName];
|
||||
bucket.remove(fileName);
|
||||
}
|
||||
}
|
||||
return {
|
||||
@ -37305,9 +37358,7 @@ var ts;
|
||||
host.log(message);
|
||||
}
|
||||
}
|
||||
function getCanonicalFileName(fileName) {
|
||||
return useCaseSensitivefileNames ? fileName : fileName.toLowerCase();
|
||||
}
|
||||
var getCanonicalFileName = createGetCanonicalFileName(useCaseSensitivefileNames);
|
||||
function getValidSourceFile(fileName) {
|
||||
fileName = ts.normalizeSlashes(fileName);
|
||||
var sourceFile = program.getSourceFile(getCanonicalFileName(fileName));
|
||||
@ -41901,12 +41952,18 @@ var ts;
|
||||
var LanguageServiceShimHostAdapter = (function () {
|
||||
function LanguageServiceShimHostAdapter(shimHost) {
|
||||
this.shimHost = shimHost;
|
||||
this.loggingEnabled = false;
|
||||
this.tracingEnabled = false;
|
||||
}
|
||||
LanguageServiceShimHostAdapter.prototype.log = function (s) {
|
||||
this.shimHost.log(s);
|
||||
if (this.loggingEnabled) {
|
||||
this.shimHost.log(s);
|
||||
}
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.trace = function (s) {
|
||||
this.shimHost.trace(s);
|
||||
if (this.tracingEnabled) {
|
||||
this.shimHost.trace(s);
|
||||
}
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.error = function (s) {
|
||||
this.shimHost.error(s);
|
||||
@ -41918,6 +41975,9 @@ var ts;
|
||||
}
|
||||
return this.shimHost.getProjectVersion();
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.useCaseSensitiveFileNames = function () {
|
||||
return this.shimHost.useCaseSensitiveFileNames ? this.shimHost.useCaseSensitiveFileNames() : false;
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.getCompilationSettings = function () {
|
||||
var settingsJson = this.shimHost.getCompilationSettings();
|
||||
if (settingsJson == null || settingsJson == "") {
|
||||
@ -41985,13 +42045,13 @@ var ts;
|
||||
return CoreServicesShimHostAdapter;
|
||||
})();
|
||||
ts.CoreServicesShimHostAdapter = CoreServicesShimHostAdapter;
|
||||
function simpleForwardCall(logger, actionDescription, action, noPerfLogging) {
|
||||
if (!noPerfLogging) {
|
||||
function simpleForwardCall(logger, actionDescription, action, logPerformance) {
|
||||
if (logPerformance) {
|
||||
logger.log(actionDescription);
|
||||
var start = Date.now();
|
||||
}
|
||||
var result = action();
|
||||
if (!noPerfLogging) {
|
||||
if (logPerformance) {
|
||||
var end = Date.now();
|
||||
logger.log(actionDescription + " completed in " + (end - start) + " msec");
|
||||
if (typeof (result) === "string") {
|
||||
@ -42004,9 +42064,9 @@ var ts;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function forwardJSONCall(logger, actionDescription, action, noPerfLogging) {
|
||||
function forwardJSONCall(logger, actionDescription, action, logPerformance) {
|
||||
try {
|
||||
var result = simpleForwardCall(logger, actionDescription, action, noPerfLogging);
|
||||
var result = simpleForwardCall(logger, actionDescription, action, logPerformance);
|
||||
return JSON.stringify({ result: result });
|
||||
}
|
||||
catch (err) {
|
||||
@ -42048,10 +42108,11 @@ var ts;
|
||||
_super.call(this, factory);
|
||||
this.host = host;
|
||||
this.languageService = languageService;
|
||||
this.logPerformance = false;
|
||||
this.logger = this.host;
|
||||
}
|
||||
LanguageServiceShimObject.prototype.forwardJSONCall = function (actionDescription, action) {
|
||||
return forwardJSONCall(this.logger, actionDescription, action, false);
|
||||
return forwardJSONCall(this.logger, actionDescription, action, this.logPerformance);
|
||||
};
|
||||
/// DISPOSE
|
||||
/**
|
||||
@ -42358,12 +42419,12 @@ var ts;
|
||||
function ClassifierShimObject(factory, logger) {
|
||||
_super.call(this, factory);
|
||||
this.logger = logger;
|
||||
this.logPerformance = false;
|
||||
this.classifier = ts.createClassifier();
|
||||
}
|
||||
ClassifierShimObject.prototype.getEncodedLexicalClassifications = function (text, lexState, syntacticClassifierAbsent) {
|
||||
var _this = this;
|
||||
return forwardJSONCall(this.logger, "getEncodedLexicalClassifications", function () { return convertClassifications(_this.classifier.getEncodedLexicalClassifications(text, lexState, syntacticClassifierAbsent)); },
|
||||
/*noPerfLogging:*/ true);
|
||||
return forwardJSONCall(this.logger, "getEncodedLexicalClassifications", function () { return convertClassifications(_this.classifier.getEncodedLexicalClassifications(text, lexState, syntacticClassifierAbsent)); }, this.logPerformance);
|
||||
};
|
||||
/// COLORIZATION
|
||||
ClassifierShimObject.prototype.getClassificationsForLine = function (text, lexState, classifyKeywordsInGenerics) {
|
||||
@ -42385,9 +42446,10 @@ var ts;
|
||||
_super.call(this, factory);
|
||||
this.logger = logger;
|
||||
this.host = host;
|
||||
this.logPerformance = false;
|
||||
}
|
||||
CoreServicesShimObject.prototype.forwardJSONCall = function (actionDescription, action) {
|
||||
return forwardJSONCall(this.logger, actionDescription, action, false);
|
||||
return forwardJSONCall(this.logger, actionDescription, action, this.logPerformance);
|
||||
};
|
||||
CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) {
|
||||
return this.forwardJSONCall("getPreProcessedFileInfo('" + fileName + "')", function () {
|
||||
@ -42444,7 +42506,6 @@ var ts;
|
||||
var TypeScriptServicesFactory = (function () {
|
||||
function TypeScriptServicesFactory() {
|
||||
this._shims = [];
|
||||
this.documentRegistry = ts.createDocumentRegistry();
|
||||
}
|
||||
/*
|
||||
* Returns script API version.
|
||||
@ -42454,6 +42515,9 @@ var ts;
|
||||
};
|
||||
TypeScriptServicesFactory.prototype.createLanguageServiceShim = function (host) {
|
||||
try {
|
||||
if (this.documentRegistry === undefined) {
|
||||
this.documentRegistry = ts.createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames());
|
||||
}
|
||||
var hostAdapter = new LanguageServiceShimHostAdapter(host);
|
||||
var languageService = ts.createLanguageService(hostAdapter, this.documentRegistry);
|
||||
return new LanguageServiceShimObject(this, host, languageService);
|
||||
|
||||
14
bin/typescriptServices.d.ts
vendored
14
bin/typescriptServices.d.ts
vendored
@ -17,6 +17,13 @@ declare module ts {
|
||||
interface Map<T> {
|
||||
[index: string]: T;
|
||||
}
|
||||
interface FileMap<T> {
|
||||
get(fileName: string): T;
|
||||
set(fileName: string, value: T): void;
|
||||
contains(fileName: string): boolean;
|
||||
remove(fileName: string): void;
|
||||
forEachValue(f: (v: T) => void): void;
|
||||
}
|
||||
interface TextRange {
|
||||
pos: number;
|
||||
end: number;
|
||||
@ -748,7 +755,7 @@ declare module ts {
|
||||
path: string;
|
||||
name: string;
|
||||
}[];
|
||||
amdModuleName: string;
|
||||
moduleName: string;
|
||||
referencedFiles: FileReference[];
|
||||
hasNoDefaultLib: boolean;
|
||||
languageVersion: ScriptTarget;
|
||||
@ -1391,6 +1398,7 @@ declare module ts {
|
||||
log?(s: string): void;
|
||||
trace?(s: string): void;
|
||||
error?(s: string): void;
|
||||
useCaseSensitiveFileNames?(): boolean;
|
||||
}
|
||||
interface LanguageService {
|
||||
cleanupSemanticCache(): void;
|
||||
@ -1847,11 +1855,11 @@ declare module ts {
|
||||
isCancellationRequested(): boolean;
|
||||
throwIfCancellationRequested(): void;
|
||||
}
|
||||
function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string;
|
||||
function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[], moduleName?: string): string;
|
||||
function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile;
|
||||
let disableIncrementalParsing: boolean;
|
||||
function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile;
|
||||
function createDocumentRegistry(): DocumentRegistry;
|
||||
function createDocumentRegistry(useCaseSensitiveFileNames?: boolean): DocumentRegistry;
|
||||
function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo;
|
||||
function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry): LanguageService;
|
||||
function createClassifier(): Classifier;
|
||||
|
||||
@ -706,6 +706,36 @@ var ts;
|
||||
Ternary[Ternary["True"] = -1] = "True";
|
||||
})(ts.Ternary || (ts.Ternary = {}));
|
||||
var Ternary = ts.Ternary;
|
||||
function createFileMap(getCanonicalFileName) {
|
||||
var files = {};
|
||||
return {
|
||||
get: get,
|
||||
set: set,
|
||||
contains: contains,
|
||||
remove: remove,
|
||||
forEachValue: forEachValueInMap
|
||||
};
|
||||
function set(fileName, value) {
|
||||
files[normalizeKey(fileName)] = value;
|
||||
}
|
||||
function get(fileName) {
|
||||
return files[normalizeKey(fileName)];
|
||||
}
|
||||
function contains(fileName) {
|
||||
return hasProperty(files, normalizeKey(fileName));
|
||||
}
|
||||
function remove(fileName) {
|
||||
var key = normalizeKey(fileName);
|
||||
delete files[key];
|
||||
}
|
||||
function forEachValueInMap(f) {
|
||||
forEachValue(files, f);
|
||||
}
|
||||
function normalizeKey(key) {
|
||||
return getCanonicalFileName(normalizeSlashes(key));
|
||||
}
|
||||
}
|
||||
ts.createFileMap = createFileMap;
|
||||
(function (Comparison) {
|
||||
Comparison[Comparison["LessThan"] = -1] = "LessThan";
|
||||
Comparison[Comparison["EqualTo"] = 0] = "EqualTo";
|
||||
@ -9703,7 +9733,7 @@ var ts;
|
||||
token === 18 /* OpenBracketToken */) {
|
||||
return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers);
|
||||
}
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
// treat this as a property declaration with a missing name.
|
||||
var name_3 = createMissingNode(65 /* Identifier */, true, ts.Diagnostics.Declaration_expected);
|
||||
return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined);
|
||||
@ -10161,7 +10191,7 @@ var ts;
|
||||
case 85 /* ImportKeyword */:
|
||||
return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers);
|
||||
default:
|
||||
if (decorators) {
|
||||
if (decorators || modifiers) {
|
||||
// We reached this point because we encountered an AtToken and assumed a declaration would
|
||||
// follow. For recovery and error reporting purposes, return an incomplete declaration.
|
||||
var node = createMissingNode(219 /* MissingDeclaration */, true, ts.Diagnostics.Declaration_expected);
|
||||
@ -10242,7 +10272,7 @@ var ts;
|
||||
}
|
||||
sourceFile.referencedFiles = referencedFiles;
|
||||
sourceFile.amdDependencies = amdDependencies;
|
||||
sourceFile.amdModuleName = amdModuleName;
|
||||
sourceFile.moduleName = amdModuleName;
|
||||
}
|
||||
function setExternalModuleIndicator(sourceFile) {
|
||||
sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) {
|
||||
@ -11085,21 +11115,35 @@ var ts;
|
||||
if (!ts.isExternalModule(location))
|
||||
break;
|
||||
case 206 /* ModuleDeclaration */:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931 /* ModuleMember */)) {
|
||||
if (result.flags & meaning || !(result.flags & 8388608 /* Alias */ && getDeclarationOfAliasSymbol(result).kind === 218 /* ExportSpecifier */)) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
else if (location.kind === 228 /* SourceFile */ ||
|
||||
var moduleExports = getSymbolOfNode(location).exports;
|
||||
if (location.kind === 228 /* SourceFile */ ||
|
||||
(location.kind === 206 /* ModuleDeclaration */ && location.name.kind === 8 /* StringLiteral */)) {
|
||||
result = getSymbolOfNode(location).exports["default"];
|
||||
// It's an external module. Because of module/namespace merging, a module's exports are in scope,
|
||||
// yet we never want to treat an export specifier as putting a member in scope. Therefore,
|
||||
// if the name we find is purely an export specifier, it is not actually considered in scope.
|
||||
// Two things to note about this:
|
||||
// 1. We have to check this without calling getSymbol. The problem with calling getSymbol
|
||||
// on an export specifier is that it might find the export specifier itself, and try to
|
||||
// resolve it as an alias. This will cause the checker to consider the export specifier
|
||||
// a circular alias reference when it might not be.
|
||||
// 2. We check === SymbolFlags.Alias in order to check that the symbol is *purely*
|
||||
// an alias. If we used &, we'd be throwing out symbols that have non alias aspects,
|
||||
// which is not the desired behavior.
|
||||
if (ts.hasProperty(moduleExports, name) &&
|
||||
moduleExports[name].flags === 8388608 /* Alias */ &&
|
||||
ts.getDeclarationOfKind(moduleExports[name], 218 /* ExportSpecifier */)) {
|
||||
break;
|
||||
}
|
||||
result = moduleExports["default"];
|
||||
var localSymbol = ts.getLocalSymbolForExportDefault(result);
|
||||
if (result && localSymbol && (result.flags & meaning) && localSymbol.name === name) {
|
||||
break loop;
|
||||
}
|
||||
result = undefined;
|
||||
}
|
||||
if (result = getSymbol(moduleExports, name, meaning & 8914931 /* ModuleMember */)) {
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
case 205 /* EnumDeclaration */:
|
||||
if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8 /* EnumMember */)) {
|
||||
@ -28972,10 +29016,10 @@ var ts;
|
||||
emitSetters(exportStarFunction);
|
||||
writeLine();
|
||||
emitExecute(node, startIndex);
|
||||
emitTempDeclarations(true);
|
||||
decreaseIndent();
|
||||
writeLine();
|
||||
write("}"); // return
|
||||
emitTempDeclarations(true);
|
||||
}
|
||||
function emitSetters(exportStarFunction) {
|
||||
write("setters:[");
|
||||
@ -29108,7 +29152,11 @@ var ts;
|
||||
ts.Debug.assert(!exportFunctionForFile);
|
||||
// make sure that name of 'exports' function does not conflict with existing identifiers
|
||||
exportFunctionForFile = makeUniqueName("exports");
|
||||
write("System.register([");
|
||||
write("System.register(");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
write("[");
|
||||
for (var i = 0; i < externalImports.length; ++i) {
|
||||
var text = getExternalModuleNameText(externalImports[i]);
|
||||
if (i !== 0) {
|
||||
@ -29188,8 +29236,8 @@ var ts;
|
||||
collectExternalModuleInfo(node);
|
||||
writeLine();
|
||||
write("define(");
|
||||
if (node.amdModuleName) {
|
||||
write("\"" + node.amdModuleName + "\", ");
|
||||
if (node.moduleName) {
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
emitAMDDependencies(node, true);
|
||||
write(") {");
|
||||
@ -29810,7 +29858,6 @@ var ts;
|
||||
function createProgram(rootNames, options, host) {
|
||||
var program;
|
||||
var files = [];
|
||||
var filesByName = {};
|
||||
var diagnostics = ts.createDiagnosticCollection();
|
||||
var seenNoDefaultLib = options.noLib;
|
||||
var commonSourceDirectory;
|
||||
@ -29818,6 +29865,7 @@ var ts;
|
||||
var noDiagnosticsTypeChecker;
|
||||
var start = new Date().getTime();
|
||||
host = host || createCompilerHost(options);
|
||||
var filesByName = ts.createFileMap(function (fileName) { return host.getCanonicalFileName(fileName); });
|
||||
ts.forEach(rootNames, function (name) { return processRootFile(name, false); });
|
||||
if (!seenNoDefaultLib) {
|
||||
processRootFile(host.getDefaultLibFileName(options), true);
|
||||
@ -29883,8 +29931,7 @@ var ts;
|
||||
return emitResult;
|
||||
}
|
||||
function getSourceFile(fileName) {
|
||||
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
|
||||
return filesByName.get(fileName);
|
||||
}
|
||||
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
|
||||
if (sourceFile) {
|
||||
@ -29982,18 +30029,18 @@ var ts;
|
||||
// Get source file from normalized fileName
|
||||
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
|
||||
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
if (ts.hasProperty(filesByName, canonicalName)) {
|
||||
if (filesByName.contains(canonicalName)) {
|
||||
// We've already looked for this file, use cached result
|
||||
return getSourceFileFromCache(fileName, canonicalName, false);
|
||||
}
|
||||
else {
|
||||
var normalizedAbsolutePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory());
|
||||
var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath);
|
||||
if (ts.hasProperty(filesByName, canonicalAbsolutePath)) {
|
||||
if (filesByName.contains(canonicalAbsolutePath)) {
|
||||
return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, true);
|
||||
}
|
||||
// We haven't looked for this file, do so now and cache result
|
||||
var file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
if (refFile) {
|
||||
diagnostics.add(ts.createFileDiagnostic(refFile, refStart, refLength, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
@ -30001,10 +30048,11 @@ var ts;
|
||||
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
|
||||
}
|
||||
});
|
||||
filesByName.set(canonicalName, file);
|
||||
if (file) {
|
||||
seenNoDefaultLib = seenNoDefaultLib || file.hasNoDefaultLib;
|
||||
// Set the source file for normalized absolute path
|
||||
filesByName[canonicalAbsolutePath] = file;
|
||||
filesByName.set(canonicalAbsolutePath, file);
|
||||
if (!options.noResolve) {
|
||||
var basePath = ts.getDirectoryPath(fileName);
|
||||
processReferencedFiles(file, basePath);
|
||||
@ -30020,7 +30068,7 @@ var ts;
|
||||
return file;
|
||||
}
|
||||
function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) {
|
||||
var file = filesByName[canonicalName];
|
||||
var file = filesByName.get(canonicalName);
|
||||
if (file && host.useCaseSensitiveFileNames()) {
|
||||
var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName;
|
||||
if (canonicalName !== sourceFileName) {
|
||||
@ -36625,9 +36673,8 @@ var ts;
|
||||
var HostCache = (function () {
|
||||
function HostCache(host, getCanonicalFileName) {
|
||||
this.host = host;
|
||||
this.getCanonicalFileName = getCanonicalFileName;
|
||||
// script id => script index
|
||||
this.fileNameToEntry = {};
|
||||
this.fileNameToEntry = ts.createFileMap(getCanonicalFileName);
|
||||
// Initialize the list with the root file names
|
||||
var rootFileNames = host.getScriptFileNames();
|
||||
for (var _i = 0; _i < rootFileNames.length; _i++) {
|
||||
@ -36640,9 +36687,6 @@ var ts;
|
||||
HostCache.prototype.compilationSettings = function () {
|
||||
return this._compilationSettings;
|
||||
};
|
||||
HostCache.prototype.normalizeFileName = function (fileName) {
|
||||
return this.getCanonicalFileName(ts.normalizeSlashes(fileName));
|
||||
};
|
||||
HostCache.prototype.createEntry = function (fileName) {
|
||||
var entry;
|
||||
var scriptSnapshot = this.host.getScriptSnapshot(fileName);
|
||||
@ -36653,13 +36697,14 @@ var ts;
|
||||
scriptSnapshot: scriptSnapshot
|
||||
};
|
||||
}
|
||||
return this.fileNameToEntry[this.normalizeFileName(fileName)] = entry;
|
||||
this.fileNameToEntry.set(fileName, entry);
|
||||
return entry;
|
||||
};
|
||||
HostCache.prototype.getEntry = function (fileName) {
|
||||
return ts.lookUp(this.fileNameToEntry, this.normalizeFileName(fileName));
|
||||
return this.fileNameToEntry.get(fileName);
|
||||
};
|
||||
HostCache.prototype.contains = function (fileName) {
|
||||
return ts.hasProperty(this.fileNameToEntry, this.normalizeFileName(fileName));
|
||||
return this.fileNameToEntry.contains(fileName);
|
||||
};
|
||||
HostCache.prototype.getOrCreateEntry = function (fileName) {
|
||||
if (this.contains(fileName)) {
|
||||
@ -36668,12 +36713,10 @@ var ts;
|
||||
return this.createEntry(fileName);
|
||||
};
|
||||
HostCache.prototype.getRootFileNames = function () {
|
||||
var _this = this;
|
||||
var fileNames = [];
|
||||
ts.forEachKey(this.fileNameToEntry, function (key) {
|
||||
var entry = _this.getEntry(key);
|
||||
if (entry) {
|
||||
fileNames.push(entry.hostFileName);
|
||||
this.fileNameToEntry.forEachValue(function (value) {
|
||||
if (value) {
|
||||
fileNames.push(value.hostFileName);
|
||||
}
|
||||
});
|
||||
return fileNames;
|
||||
@ -36733,7 +36776,7 @@ var ts;
|
||||
* - noLib = true
|
||||
* - noResolve = true
|
||||
*/
|
||||
function transpile(input, compilerOptions, fileName, diagnostics) {
|
||||
function transpile(input, compilerOptions, fileName, diagnostics, moduleName) {
|
||||
var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions();
|
||||
options.isolatedModules = true;
|
||||
// Filename can be non-ts file.
|
||||
@ -36747,6 +36790,9 @@ var ts;
|
||||
// Parse
|
||||
var inputFileName = fileName || "module.ts";
|
||||
var sourceFile = ts.createSourceFile(inputFileName, input, options.target);
|
||||
if (moduleName) {
|
||||
sourceFile.moduleName = moduleName;
|
||||
}
|
||||
// Store syntactic diagnostics
|
||||
if (diagnostics && sourceFile.parseDiagnostics) {
|
||||
diagnostics.push.apply(diagnostics, sourceFile.parseDiagnostics);
|
||||
@ -36829,10 +36875,16 @@ var ts;
|
||||
return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, true);
|
||||
}
|
||||
ts.updateLanguageServiceSourceFile = updateLanguageServiceSourceFile;
|
||||
function createDocumentRegistry() {
|
||||
function createGetCanonicalFileName(useCaseSensitivefileNames) {
|
||||
return useCaseSensitivefileNames
|
||||
? (function (fileName) { return fileName; })
|
||||
: (function (fileName) { return fileName.toLowerCase(); });
|
||||
}
|
||||
function createDocumentRegistry(useCaseSensitiveFileNames) {
|
||||
// Maps from compiler setting target (ES3, ES5, etc.) to all the cached documents we have
|
||||
// for those settings.
|
||||
var buckets = {};
|
||||
var getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames);
|
||||
function getKeyFromCompilationSettings(settings) {
|
||||
return "_" + settings.target; // + "|" + settings.propagateEnumConstantoString()
|
||||
}
|
||||
@ -36840,7 +36892,7 @@ var ts;
|
||||
var key = getKeyFromCompilationSettings(settings);
|
||||
var bucket = ts.lookUp(buckets, key);
|
||||
if (!bucket && createIfMissing) {
|
||||
buckets[key] = bucket = {};
|
||||
buckets[key] = bucket = ts.createFileMap(getCanonicalFileName);
|
||||
}
|
||||
return bucket;
|
||||
}
|
||||
@ -36849,7 +36901,7 @@ var ts;
|
||||
var entries = ts.lookUp(buckets, name);
|
||||
var sourceFiles = [];
|
||||
for (var i in entries) {
|
||||
var entry = entries[i];
|
||||
var entry = entries.get(i);
|
||||
sourceFiles.push({
|
||||
name: i,
|
||||
refCount: entry.languageServiceRefCount,
|
||||
@ -36872,16 +36924,17 @@ var ts;
|
||||
}
|
||||
function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) {
|
||||
var bucket = getBucketForCompilationSettings(compilationSettings, true);
|
||||
var entry = ts.lookUp(bucket, fileName);
|
||||
var entry = bucket.get(fileName);
|
||||
if (!entry) {
|
||||
ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?");
|
||||
// Have never seen this file with these settings. Create a new source file for it.
|
||||
var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, false);
|
||||
bucket[fileName] = entry = {
|
||||
entry = {
|
||||
sourceFile: sourceFile,
|
||||
languageServiceRefCount: 0,
|
||||
owners: []
|
||||
};
|
||||
bucket.set(fileName, entry);
|
||||
}
|
||||
else {
|
||||
// We have an entry for this file. However, it may be for a different version of
|
||||
@ -36904,11 +36957,11 @@ var ts;
|
||||
function releaseDocument(fileName, compilationSettings) {
|
||||
var bucket = getBucketForCompilationSettings(compilationSettings, false);
|
||||
ts.Debug.assert(bucket !== undefined);
|
||||
var entry = ts.lookUp(bucket, fileName);
|
||||
var entry = bucket.get(fileName);
|
||||
entry.languageServiceRefCount--;
|
||||
ts.Debug.assert(entry.languageServiceRefCount >= 0);
|
||||
if (entry.languageServiceRefCount === 0) {
|
||||
delete bucket[fileName];
|
||||
bucket.remove(fileName);
|
||||
}
|
||||
}
|
||||
return {
|
||||
@ -37305,9 +37358,7 @@ var ts;
|
||||
host.log(message);
|
||||
}
|
||||
}
|
||||
function getCanonicalFileName(fileName) {
|
||||
return useCaseSensitivefileNames ? fileName : fileName.toLowerCase();
|
||||
}
|
||||
var getCanonicalFileName = createGetCanonicalFileName(useCaseSensitivefileNames);
|
||||
function getValidSourceFile(fileName) {
|
||||
fileName = ts.normalizeSlashes(fileName);
|
||||
var sourceFile = program.getSourceFile(getCanonicalFileName(fileName));
|
||||
@ -41901,12 +41952,18 @@ var ts;
|
||||
var LanguageServiceShimHostAdapter = (function () {
|
||||
function LanguageServiceShimHostAdapter(shimHost) {
|
||||
this.shimHost = shimHost;
|
||||
this.loggingEnabled = false;
|
||||
this.tracingEnabled = false;
|
||||
}
|
||||
LanguageServiceShimHostAdapter.prototype.log = function (s) {
|
||||
this.shimHost.log(s);
|
||||
if (this.loggingEnabled) {
|
||||
this.shimHost.log(s);
|
||||
}
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.trace = function (s) {
|
||||
this.shimHost.trace(s);
|
||||
if (this.tracingEnabled) {
|
||||
this.shimHost.trace(s);
|
||||
}
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.error = function (s) {
|
||||
this.shimHost.error(s);
|
||||
@ -41918,6 +41975,9 @@ var ts;
|
||||
}
|
||||
return this.shimHost.getProjectVersion();
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.useCaseSensitiveFileNames = function () {
|
||||
return this.shimHost.useCaseSensitiveFileNames ? this.shimHost.useCaseSensitiveFileNames() : false;
|
||||
};
|
||||
LanguageServiceShimHostAdapter.prototype.getCompilationSettings = function () {
|
||||
var settingsJson = this.shimHost.getCompilationSettings();
|
||||
if (settingsJson == null || settingsJson == "") {
|
||||
@ -41985,13 +42045,13 @@ var ts;
|
||||
return CoreServicesShimHostAdapter;
|
||||
})();
|
||||
ts.CoreServicesShimHostAdapter = CoreServicesShimHostAdapter;
|
||||
function simpleForwardCall(logger, actionDescription, action, noPerfLogging) {
|
||||
if (!noPerfLogging) {
|
||||
function simpleForwardCall(logger, actionDescription, action, logPerformance) {
|
||||
if (logPerformance) {
|
||||
logger.log(actionDescription);
|
||||
var start = Date.now();
|
||||
}
|
||||
var result = action();
|
||||
if (!noPerfLogging) {
|
||||
if (logPerformance) {
|
||||
var end = Date.now();
|
||||
logger.log(actionDescription + " completed in " + (end - start) + " msec");
|
||||
if (typeof (result) === "string") {
|
||||
@ -42004,9 +42064,9 @@ var ts;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function forwardJSONCall(logger, actionDescription, action, noPerfLogging) {
|
||||
function forwardJSONCall(logger, actionDescription, action, logPerformance) {
|
||||
try {
|
||||
var result = simpleForwardCall(logger, actionDescription, action, noPerfLogging);
|
||||
var result = simpleForwardCall(logger, actionDescription, action, logPerformance);
|
||||
return JSON.stringify({ result: result });
|
||||
}
|
||||
catch (err) {
|
||||
@ -42048,10 +42108,11 @@ var ts;
|
||||
_super.call(this, factory);
|
||||
this.host = host;
|
||||
this.languageService = languageService;
|
||||
this.logPerformance = false;
|
||||
this.logger = this.host;
|
||||
}
|
||||
LanguageServiceShimObject.prototype.forwardJSONCall = function (actionDescription, action) {
|
||||
return forwardJSONCall(this.logger, actionDescription, action, false);
|
||||
return forwardJSONCall(this.logger, actionDescription, action, this.logPerformance);
|
||||
};
|
||||
/// DISPOSE
|
||||
/**
|
||||
@ -42358,12 +42419,12 @@ var ts;
|
||||
function ClassifierShimObject(factory, logger) {
|
||||
_super.call(this, factory);
|
||||
this.logger = logger;
|
||||
this.logPerformance = false;
|
||||
this.classifier = ts.createClassifier();
|
||||
}
|
||||
ClassifierShimObject.prototype.getEncodedLexicalClassifications = function (text, lexState, syntacticClassifierAbsent) {
|
||||
var _this = this;
|
||||
return forwardJSONCall(this.logger, "getEncodedLexicalClassifications", function () { return convertClassifications(_this.classifier.getEncodedLexicalClassifications(text, lexState, syntacticClassifierAbsent)); },
|
||||
/*noPerfLogging:*/ true);
|
||||
return forwardJSONCall(this.logger, "getEncodedLexicalClassifications", function () { return convertClassifications(_this.classifier.getEncodedLexicalClassifications(text, lexState, syntacticClassifierAbsent)); }, this.logPerformance);
|
||||
};
|
||||
/// COLORIZATION
|
||||
ClassifierShimObject.prototype.getClassificationsForLine = function (text, lexState, classifyKeywordsInGenerics) {
|
||||
@ -42385,9 +42446,10 @@ var ts;
|
||||
_super.call(this, factory);
|
||||
this.logger = logger;
|
||||
this.host = host;
|
||||
this.logPerformance = false;
|
||||
}
|
||||
CoreServicesShimObject.prototype.forwardJSONCall = function (actionDescription, action) {
|
||||
return forwardJSONCall(this.logger, actionDescription, action, false);
|
||||
return forwardJSONCall(this.logger, actionDescription, action, this.logPerformance);
|
||||
};
|
||||
CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) {
|
||||
return this.forwardJSONCall("getPreProcessedFileInfo('" + fileName + "')", function () {
|
||||
@ -42444,7 +42506,6 @@ var ts;
|
||||
var TypeScriptServicesFactory = (function () {
|
||||
function TypeScriptServicesFactory() {
|
||||
this._shims = [];
|
||||
this.documentRegistry = ts.createDocumentRegistry();
|
||||
}
|
||||
/*
|
||||
* Returns script API version.
|
||||
@ -42454,6 +42515,9 @@ var ts;
|
||||
};
|
||||
TypeScriptServicesFactory.prototype.createLanguageServiceShim = function (host) {
|
||||
try {
|
||||
if (this.documentRegistry === undefined) {
|
||||
this.documentRegistry = ts.createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames());
|
||||
}
|
||||
var hostAdapter = new LanguageServiceShimHostAdapter(host);
|
||||
var languageService = ts.createLanguageService(hostAdapter, this.documentRegistry);
|
||||
return new LanguageServiceShimObject(this, host, languageService);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user