diff --git a/bin/tsc.js b/bin/tsc.js index 55ddea3cb86..5efd7065d8e 100644 --- a/bin/tsc.js +++ b/bin/tsc.js @@ -2207,10 +2207,6 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; - function getCanonicalFileName(fileName) { - return sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); - } - ts.getCanonicalFileName = getCanonicalFileName; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -2591,6 +2587,7 @@ var ts; } } ts.getJsDocComments = getJsDocComments; + ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; function forEachChild(node, cbNode, cbNodes) { function child(node) { if (node) @@ -5252,8 +5249,7 @@ var ts; file.hasNoDefaultLib = true; } else { - var fullReferenceRegEx = /^(\/\/\/\s*/; - var matchResult = fullReferenceRegEx.exec(comment); + var matchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); if (!matchResult) { var start = range.pos; var length = range.end - start; @@ -6025,7 +6021,7 @@ var ts; } } else { - writer.writeLiteral(sys.newLine); + writer.writeLiteral(newLine); } } function calculateIndent(pos, end) { @@ -6059,6 +6055,8 @@ var ts; var detachedCommentsInfo; var emitDetachedComments = compilerOptions.removeComments ? function (node) { } : emitDetachedCommentsAtPosition; + var emitPinnedOrTripleSlashComments = compilerOptions.removeComments ? function (node) { + } : emitPinnedOrTripleSlashCommentsOfNode; var writeComment = writeCommentRange; var emit = emitNode; var emitStart = function (node) { @@ -6854,8 +6852,9 @@ var ts; emitTrailingComments(node); } function emitFunctionDeclaration(node) { - if (!node.body) - return; + if (!node.body) { + return emitPinnedOrTripleSlashComments(node); + } if (node.kind !== 116 /* Method */) { emitLeadingComments(node); } @@ -7014,8 +7013,9 @@ var ts; function emitMemberFunctions(node) { ts.forEach(node.members, function (member) { if (member.kind === 116 /* Method */) { - if (!member.body) - return; + if (!member.body) { + return emitPinnedOrTripleSlashComments(member); + } writeLine(); emitLeadingComments(member); emitStart(member); @@ -7136,6 +7136,11 @@ var ts; } emitTrailingComments(node); function emitConstructorOfClass() { + ts.forEach(node.members, function (member) { + if (member.kind === 117 /* Constructor */ && !member.body) { + emitPinnedOrTripleSlashComments(member); + } + }); var ctor = getFirstConstructorWithBody(node); if (ctor) { emitLeadingComments(ctor); @@ -7191,6 +7196,9 @@ var ts; } } } + function emitInterfaceDeclaration(node) { + emitPinnedOrTripleSlashComments(node); + } function emitEnumDeclaration(node) { emitLeadingComments(node); if (!(node.flags & 1 /* Export */)) { @@ -7263,8 +7271,9 @@ var ts; } } function emitModuleDeclaration(node) { - if (!ts.isInstantiated(node)) - return; + if (!ts.isInstantiated(node)) { + return emitPinnedOrTripleSlashComments(node); + } emitLeadingComments(node); if (!(node.flags & 1 /* Export */)) { emitStart(node); @@ -7477,8 +7486,12 @@ var ts; } } function emitNode(node) { - if (!node || node.flags & 2 /* Ambient */) + if (!node) { return; + } + if (node.flags & 2 /* Ambient */) { + return emitPinnedOrTripleSlashComments(node); + } switch (node.kind) { case 55 /* Identifier */: return emitIdentifier(node); @@ -7582,6 +7595,8 @@ var ts; return emitVariableDeclaration(node); case 169 /* ClassDeclaration */: return emitClassDeclaration(node); + case 170 /* InterfaceDeclaration */: + return emitInterfaceDeclaration(node); case 171 /* EnumDeclaration */: return emitEnumDeclaration(node); case 172 /* ModuleDeclaration */: @@ -7605,7 +7620,7 @@ var ts; } return leadingComments; } - function emitLeadingDeclarationComments(node) { + function getLeadingCommentsToEmit(node) { if (node.parent.kind === 177 /* SourceFile */ || node.pos !== node.parent.pos) { var leadingComments; if (hasDetachedComments(node.pos)) { @@ -7614,10 +7629,14 @@ var ts; else { leadingComments = ts.getLeadingCommentsOfNode(node, currentSourceFile); } - emitNewLineBeforeLeadingComments(node, leadingComments, writer); - emitComments(leadingComments, true, writer, writeComment); + return leadingComments; } } + function emitLeadingDeclarationComments(node) { + var leadingComments = getLeadingCommentsToEmit(node); + emitNewLineBeforeLeadingComments(node, leadingComments, writer); + emitComments(leadingComments, true, writer, writeComment); + } function emitTrailingDeclarationComments(node) { if (node.parent.kind === 177 /* SourceFile */ || node.end !== node.parent.end) { var trailingComments = ts.getTrailingComments(currentSourceFile.text, node.end); @@ -7651,7 +7670,7 @@ var ts; detachedComments.push(comment); lastComment = comment; }); - if (detachedComments && detachedComments.length) { + if (detachedComments.length) { var lastCommentLine = getLineOfLocalPosition(detachedComments[detachedComments.length - 1].end); var astLine = getLineOfLocalPosition(ts.skipTrivia(currentSourceFile.text, node.pos)); if (astLine >= lastCommentLine + 2) { @@ -7668,6 +7687,19 @@ var ts; } } } + function emitPinnedOrTripleSlashCommentsOfNode(node) { + var pinnedComments = ts.filter(getLeadingCommentsToEmit(node), isPinnedOrTripleSlashComment); + function isPinnedOrTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 /* asterisk */) { + return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33 /* exclamation */; + } + else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 /* slash */ && comment.pos + 2 < comment.end && currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 /* slash */ && currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { + return true; + } + } + emitNewLineBeforeLeadingComments(node, pinnedComments, writer); + emitComments(pinnedComments, true, writer, writeComment); + } if (compilerOptions.sourceMap) { initializeEmitterWithSourceMaps(); } @@ -9102,7 +9134,7 @@ var ts; } return symbol.name; } - if (enclosingDeclaration && !(symbol.flags & ts.SymbolFlags.PropertyOrAccessor & ts.SymbolFlags.Signature & 4096 /* Constructor */ & 2048 /* Method */ & 262144 /* TypeParameter */)) { + if (enclosingDeclaration && !(symbol.flags & (ts.SymbolFlags.PropertyOrAccessor | ts.SymbolFlags.Signature | 4096 /* Constructor */ | 2048 /* Method */ | 262144 /* TypeParameter */))) { var symbolName; while (symbol) { var isFirstName = !symbolName; @@ -10257,13 +10289,12 @@ var ts; return emptyObjectType; } var type = getDeclaredTypeOfSymbol(symbol); - var name = symbol.name; if (!(type.flags & ts.TypeFlags.ObjectType)) { - error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_be_a_class_or_interface_type, name); + error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_be_a_class_or_interface_type, symbol.name); return emptyObjectType; } if ((type.typeParameters ? type.typeParameters.length : 0) !== arity) { - error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_have_1_type_parameter_s, name, arity); + error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_have_1_type_parameter_s, symbol.name, arity); return emptyObjectType; } return type; @@ -11395,7 +11426,8 @@ var ts; } return false; } - function checkSuperExpression(node, isCallExpression) { + function checkSuperExpression(node) { + var isCallExpression = node.parent.kind === 132 /* CallExpression */ && node.parent.func === node; var enclosingClass = getAncestor(node, 169 /* ClassDeclaration */); var baseClass; if (enclosingClass && enclosingClass.baseType) { @@ -11897,7 +11929,7 @@ var ts; } function resolveCallExpression(node) { if (node.func.kind === 81 /* SuperKeyword */) { - var superType = checkSuperExpression(node.func, true); + var superType = checkSuperExpression(node.func); if (superType !== unknownType) { return resolveCall(node, getSignaturesOfType(superType, 1 /* Construct */)); } @@ -12370,7 +12402,7 @@ var ts; case 83 /* ThisKeyword */: return checkThisExpression(node); case 81 /* SuperKeyword */: - return checkSuperExpression(node, false); + return checkSuperExpression(node); case 79 /* NullKeyword */: return nullType; case 85 /* TrueKeyword */: @@ -13811,6 +13843,7 @@ var ts; case 114 /* Parameter */: case 115 /* Property */: case 176 /* EnumMember */: + case 129 /* PropertyAssignment */: return parent.initializer === node; case 146 /* ExpressionStatement */: case 147 /* IfStatement */: @@ -13913,6 +13946,9 @@ var ts; if (entityName.parent.kind === 175 /* ExportAssignment */) { return resolveEntityName(entityName.parent.parent, entityName, ts.SymbolFlags.Value | ts.SymbolFlags.Type | ts.SymbolFlags.Namespace | 4194304 /* Import */); } + if (isInRightSideOfImportOrExportAssignment(entityName)) { + return getSymbolOfPartOfRightHandSideOfImport(entityName); + } if (isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } @@ -14001,8 +14037,7 @@ var ts; return getTypeOfSymbol(symbol); } if (isInRightSideOfImportOrExportAssignment(node)) { - var symbol; - symbol = node.parent.kind === 175 /* ExportAssignment */ ? getSymbolInfo(node) : getSymbolOfPartOfRightHandSideOfImport(node); + var symbol = getSymbolInfo(node); var declaredType = getDeclaredTypeOfSymbol(symbol); return declaredType !== unknownType ? declaredType : getTypeOfSymbol(symbol); } @@ -14138,7 +14173,8 @@ var ts; function isImplementationOfOverload(node) { if (node.body) { var symbol = getSymbolOfNode(node); - return getSignaturesOfSymbol(symbol).length > 1; + var signaturesOfSymbol = getSignaturesOfSymbol(symbol); + return signaturesOfSymbol.length > 1 || (signaturesOfSymbol.length === 1 && signaturesOfSymbol[0].declaration !== node); } return false; } @@ -14528,6 +14564,9 @@ var ts; function createCompilerHost(options) { var currentDirectory; var existingDirectories = {}; + function getCanonicalFileName(fileName) { + return sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); + } function getSourceFile(filename, languageVersion, onError) { try { var text = sys.readFile(filename, options.charset); @@ -14573,7 +14612,7 @@ var ts; writeFile: writeFile, getCurrentDirectory: function () { return currentDirectory || (currentDirectory = sys.getCurrentDirectory()); }, useCaseSensitiveFileNames: function () { return sys.useCaseSensitiveFileNames; }, - getCanonicalFileName: ts.getCanonicalFileName, + getCanonicalFileName: getCanonicalFileName, getNewLine: function () { return sys.newLine; } }; } diff --git a/bin/typescriptServices.js b/bin/typescriptServices.js index a4456620a4b..d9b53be63cf 100644 --- a/bin/typescriptServices.js +++ b/bin/typescriptServices.js @@ -2207,10 +2207,6 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; - function getCanonicalFileName(fileName) { - return sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); - } - ts.getCanonicalFileName = getCanonicalFileName; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -2268,201 +2264,6 @@ var ts; })(ts.Debug || (ts.Debug = {})); var Debug = ts.Debug; })(ts || (ts = {})); -var sys = (function () { - function getWScriptSystem() { - var fso = new ActiveXObject("Scripting.FileSystemObject"); - var fileStream = new ActiveXObject("ADODB.Stream"); - fileStream.Type = 2; - var binaryStream = new ActiveXObject("ADODB.Stream"); - binaryStream.Type = 1; - var args = []; - for (var i = 0; i < WScript.Arguments.length; i++) { - args[i] = WScript.Arguments.Item(i); - } - function readFile(fileName, encoding) { - if (!fso.FileExists(fileName)) { - return undefined; - } - fileStream.Open(); - try { - if (encoding) { - fileStream.Charset = encoding; - fileStream.LoadFromFile(fileName); - } - else { - fileStream.Charset = "x-ansi"; - fileStream.LoadFromFile(fileName); - var bom = fileStream.ReadText(2) || ""; - fileStream.Position = 0; - fileStream.Charset = bom.length >= 2 && (bom.charCodeAt(0) === 0xFF && bom.charCodeAt(1) === 0xFE || bom.charCodeAt(0) === 0xFE && bom.charCodeAt(1) === 0xFF) ? "unicode" : "utf-8"; - } - return fileStream.ReadText(); - } - catch (e) { - throw e.number === -2147024809 ? new Error(ts.Diagnostics.Unsupported_file_encoding.key) : e; - } - finally { - fileStream.Close(); - } - } - function writeFile(fileName, data, writeByteOrderMark) { - fileStream.Open(); - binaryStream.Open(); - try { - fileStream.Charset = "utf-8"; - fileStream.WriteText(data); - if (writeByteOrderMark) { - fileStream.Position = 0; - } - else { - fileStream.Position = 3; - } - fileStream.CopyTo(binaryStream); - binaryStream.SaveToFile(fileName, 2); - } - finally { - binaryStream.Close(); - fileStream.Close(); - } - } - return { - args: args, - newLine: "\r\n", - useCaseSensitiveFileNames: false, - write: function (s) { - WScript.StdOut.Write(s); - }, - readFile: readFile, - writeFile: writeFile, - resolvePath: function (path) { - return fso.GetAbsolutePathName(path); - }, - fileExists: function (path) { - return fso.FileExists(path); - }, - directoryExists: function (path) { - return fso.FolderExists(path); - }, - createDirectory: function (directoryName) { - if (!this.directoryExists(directoryName)) { - fso.CreateFolder(directoryName); - } - }, - getExecutingFilePath: function () { - return WScript.ScriptFullName; - }, - getCurrentDirectory: function () { - return new ActiveXObject("WScript.Shell").CurrentDirectory; - }, - exit: function (exitCode) { - try { - WScript.Quit(exitCode); - } - catch (e) { - } - } - }; - } - function getNodeSystem() { - var _fs = require("fs"); - var _path = require("path"); - var _os = require('os'); - var platform = _os.platform(); - var useCaseSensitiveFileNames = platform !== "win32" && platform !== "win64" && platform !== "darwin"; - function readFile(fileName, encoding) { - if (!_fs.existsSync(fileName)) { - return undefined; - } - var buffer = _fs.readFileSync(fileName); - var len = buffer.length; - if (len >= 2 && buffer[0] === 0xFE && buffer[1] === 0xFF) { - len &= ~1; - for (var i = 0; i < len; i += 2) { - var temp = buffer[i]; - buffer[i] = buffer[i + 1]; - buffer[i + 1] = temp; - } - return buffer.toString("utf16le", 2); - } - if (len >= 2 && buffer[0] === 0xFF && buffer[1] === 0xFE) { - return buffer.toString("utf16le", 2); - } - if (len >= 3 && buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { - return buffer.toString("utf8", 3); - } - return buffer.toString("utf8"); - } - function writeFile(fileName, data, writeByteOrderMark) { - if (writeByteOrderMark) { - data = '\uFEFF' + data; - } - _fs.writeFileSync(fileName, data, "utf8"); - } - return { - args: process.argv.slice(2), - newLine: _os.EOL, - useCaseSensitiveFileNames: useCaseSensitiveFileNames, - write: function (s) { - _fs.writeSync(1, s); - }, - readFile: readFile, - writeFile: writeFile, - watchFile: function (fileName, callback) { - _fs.watchFile(fileName, { persistent: true, interval: 250 }, fileChanged); - return { - close: function () { - _fs.unwatchFile(fileName, fileChanged); - } - }; - function fileChanged(curr, prev) { - if (+curr.mtime <= +prev.mtime) { - return; - } - callback(fileName); - } - ; - }, - resolvePath: function (path) { - return _path.resolve(path); - }, - fileExists: function (path) { - return _fs.existsSync(path); - }, - directoryExists: function (path) { - return _fs.existsSync(path) && _fs.statSync(path).isDirectory(); - }, - createDirectory: function (directoryName) { - if (!this.directoryExists(directoryName)) { - _fs.mkdirSync(directoryName); - } - }, - getExecutingFilePath: function () { - return process.mainModule.filename; - }, - getCurrentDirectory: function () { - return process.cwd(); - }, - getMemoryUsage: function () { - if (global.gc) { - global.gc(); - } - return process.memoryUsage().heapUsed; - }, - exit: function (exitCode) { - process.exit(exitCode); - } - }; - } - if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { - return getWScriptSystem(); - } - else if (typeof module !== "undefined" && module.exports) { - return getNodeSystem(); - } - else { - return undefined; - } -})(); var ts; (function (ts) { var nodeConstructors = new Array(180 /* Count */); @@ -2591,6 +2392,7 @@ var ts; } } ts.getJsDocComments = getJsDocComments; + ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; function forEachChild(node, cbNode, cbNodes) { function child(node) { if (node) @@ -5252,8 +5054,7 @@ var ts; file.hasNoDefaultLib = true; } else { - var fullReferenceRegEx = /^(\/\/\/\s*/; - var matchResult = fullReferenceRegEx.exec(comment); + var matchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); if (!matchResult) { var start = range.pos; var length = range.end - start; @@ -6025,7 +5826,7 @@ var ts; } } else { - writer.writeLiteral(sys.newLine); + writer.writeLiteral(newLine); } } function calculateIndent(pos, end) { @@ -6059,6 +5860,8 @@ var ts; var detachedCommentsInfo; var emitDetachedComments = compilerOptions.removeComments ? function (node) { } : emitDetachedCommentsAtPosition; + var emitPinnedOrTripleSlashComments = compilerOptions.removeComments ? function (node) { + } : emitPinnedOrTripleSlashCommentsOfNode; var writeComment = writeCommentRange; var emit = emitNode; var emitStart = function (node) { @@ -6854,8 +6657,9 @@ var ts; emitTrailingComments(node); } function emitFunctionDeclaration(node) { - if (!node.body) - return; + if (!node.body) { + return emitPinnedOrTripleSlashComments(node); + } if (node.kind !== 116 /* Method */) { emitLeadingComments(node); } @@ -7014,8 +6818,9 @@ var ts; function emitMemberFunctions(node) { ts.forEach(node.members, function (member) { if (member.kind === 116 /* Method */) { - if (!member.body) - return; + if (!member.body) { + return emitPinnedOrTripleSlashComments(member); + } writeLine(); emitLeadingComments(member); emitStart(member); @@ -7136,6 +6941,11 @@ var ts; } emitTrailingComments(node); function emitConstructorOfClass() { + ts.forEach(node.members, function (member) { + if (member.kind === 117 /* Constructor */ && !member.body) { + emitPinnedOrTripleSlashComments(member); + } + }); var ctor = getFirstConstructorWithBody(node); if (ctor) { emitLeadingComments(ctor); @@ -7191,6 +7001,9 @@ var ts; } } } + function emitInterfaceDeclaration(node) { + emitPinnedOrTripleSlashComments(node); + } function emitEnumDeclaration(node) { emitLeadingComments(node); if (!(node.flags & 1 /* Export */)) { @@ -7263,8 +7076,9 @@ var ts; } } function emitModuleDeclaration(node) { - if (!ts.isInstantiated(node)) - return; + if (!ts.isInstantiated(node)) { + return emitPinnedOrTripleSlashComments(node); + } emitLeadingComments(node); if (!(node.flags & 1 /* Export */)) { emitStart(node); @@ -7477,8 +7291,12 @@ var ts; } } function emitNode(node) { - if (!node || node.flags & 2 /* Ambient */) + if (!node) { return; + } + if (node.flags & 2 /* Ambient */) { + return emitPinnedOrTripleSlashComments(node); + } switch (node.kind) { case 55 /* Identifier */: return emitIdentifier(node); @@ -7582,6 +7400,8 @@ var ts; return emitVariableDeclaration(node); case 169 /* ClassDeclaration */: return emitClassDeclaration(node); + case 170 /* InterfaceDeclaration */: + return emitInterfaceDeclaration(node); case 171 /* EnumDeclaration */: return emitEnumDeclaration(node); case 172 /* ModuleDeclaration */: @@ -7605,7 +7425,7 @@ var ts; } return leadingComments; } - function emitLeadingDeclarationComments(node) { + function getLeadingCommentsToEmit(node) { if (node.parent.kind === 177 /* SourceFile */ || node.pos !== node.parent.pos) { var leadingComments; if (hasDetachedComments(node.pos)) { @@ -7614,10 +7434,14 @@ var ts; else { leadingComments = ts.getLeadingCommentsOfNode(node, currentSourceFile); } - emitNewLineBeforeLeadingComments(node, leadingComments, writer); - emitComments(leadingComments, true, writer, writeComment); + return leadingComments; } } + function emitLeadingDeclarationComments(node) { + var leadingComments = getLeadingCommentsToEmit(node); + emitNewLineBeforeLeadingComments(node, leadingComments, writer); + emitComments(leadingComments, true, writer, writeComment); + } function emitTrailingDeclarationComments(node) { if (node.parent.kind === 177 /* SourceFile */ || node.end !== node.parent.end) { var trailingComments = ts.getTrailingComments(currentSourceFile.text, node.end); @@ -7651,7 +7475,7 @@ var ts; detachedComments.push(comment); lastComment = comment; }); - if (detachedComments && detachedComments.length) { + if (detachedComments.length) { var lastCommentLine = getLineOfLocalPosition(detachedComments[detachedComments.length - 1].end); var astLine = getLineOfLocalPosition(ts.skipTrivia(currentSourceFile.text, node.pos)); if (astLine >= lastCommentLine + 2) { @@ -7668,6 +7492,19 @@ var ts; } } } + function emitPinnedOrTripleSlashCommentsOfNode(node) { + var pinnedComments = ts.filter(getLeadingCommentsToEmit(node), isPinnedOrTripleSlashComment); + function isPinnedOrTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42 /* asterisk */) { + return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33 /* exclamation */; + } + else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 /* slash */ && comment.pos + 2 < comment.end && currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 /* slash */ && currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { + return true; + } + } + emitNewLineBeforeLeadingComments(node, pinnedComments, writer); + emitComments(pinnedComments, true, writer, writeComment); + } if (compilerOptions.sourceMap) { initializeEmitterWithSourceMaps(); } @@ -9102,7 +8939,7 @@ var ts; } return symbol.name; } - if (enclosingDeclaration && !(symbol.flags & ts.SymbolFlags.PropertyOrAccessor & ts.SymbolFlags.Signature & 4096 /* Constructor */ & 2048 /* Method */ & 262144 /* TypeParameter */)) { + if (enclosingDeclaration && !(symbol.flags & (ts.SymbolFlags.PropertyOrAccessor | ts.SymbolFlags.Signature | 4096 /* Constructor */ | 2048 /* Method */ | 262144 /* TypeParameter */))) { var symbolName; while (symbol) { var isFirstName = !symbolName; @@ -10257,13 +10094,12 @@ var ts; return emptyObjectType; } var type = getDeclaredTypeOfSymbol(symbol); - var name = symbol.name; if (!(type.flags & ts.TypeFlags.ObjectType)) { - error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_be_a_class_or_interface_type, name); + error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_be_a_class_or_interface_type, symbol.name); return emptyObjectType; } if ((type.typeParameters ? type.typeParameters.length : 0) !== arity) { - error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_have_1_type_parameter_s, name, arity); + error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_have_1_type_parameter_s, symbol.name, arity); return emptyObjectType; } return type; @@ -11395,7 +11231,8 @@ var ts; } return false; } - function checkSuperExpression(node, isCallExpression) { + function checkSuperExpression(node) { + var isCallExpression = node.parent.kind === 132 /* CallExpression */ && node.parent.func === node; var enclosingClass = getAncestor(node, 169 /* ClassDeclaration */); var baseClass; if (enclosingClass && enclosingClass.baseType) { @@ -11897,7 +11734,7 @@ var ts; } function resolveCallExpression(node) { if (node.func.kind === 81 /* SuperKeyword */) { - var superType = checkSuperExpression(node.func, true); + var superType = checkSuperExpression(node.func); if (superType !== unknownType) { return resolveCall(node, getSignaturesOfType(superType, 1 /* Construct */)); } @@ -12370,7 +12207,7 @@ var ts; case 83 /* ThisKeyword */: return checkThisExpression(node); case 81 /* SuperKeyword */: - return checkSuperExpression(node, false); + return checkSuperExpression(node); case 79 /* NullKeyword */: return nullType; case 85 /* TrueKeyword */: @@ -13811,6 +13648,7 @@ var ts; case 114 /* Parameter */: case 115 /* Property */: case 176 /* EnumMember */: + case 129 /* PropertyAssignment */: return parent.initializer === node; case 146 /* ExpressionStatement */: case 147 /* IfStatement */: @@ -13913,6 +13751,9 @@ var ts; if (entityName.parent.kind === 175 /* ExportAssignment */) { return resolveEntityName(entityName.parent.parent, entityName, ts.SymbolFlags.Value | ts.SymbolFlags.Type | ts.SymbolFlags.Namespace | 4194304 /* Import */); } + if (isInRightSideOfImportOrExportAssignment(entityName)) { + return getSymbolOfPartOfRightHandSideOfImport(entityName); + } if (isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } @@ -14001,8 +13842,7 @@ var ts; return getTypeOfSymbol(symbol); } if (isInRightSideOfImportOrExportAssignment(node)) { - var symbol; - symbol = node.parent.kind === 175 /* ExportAssignment */ ? getSymbolInfo(node) : getSymbolOfPartOfRightHandSideOfImport(node); + var symbol = getSymbolInfo(node); var declaredType = getDeclaredTypeOfSymbol(symbol); return declaredType !== unknownType ? declaredType : getTypeOfSymbol(symbol); } @@ -14138,7 +13978,8 @@ var ts; function isImplementationOfOverload(node) { if (node.body) { var symbol = getSymbolOfNode(node); - return getSignaturesOfSymbol(symbol).length > 1; + var signaturesOfSymbol = getSignaturesOfSymbol(symbol); + return signaturesOfSymbol.length > 1 || (signaturesOfSymbol.length === 1 && signaturesOfSymbol[0].declaration !== node); } return false; } @@ -15393,7 +15234,7 @@ var TypeScript; })(Location); TypeScript.Diagnostic = Diagnostic; function newLine() { - return sys.newLine ? sys.newLine : "\r\n"; + return "\r\n"; } TypeScript.newLine = newLine; function getLargestIndex(diagnostic) {