diff --git a/bin/tsc.js b/bin/tsc.js
index 52ffd2b3b1b..b6cb0edc12c 100644
--- a/bin/tsc.js
+++ b/bin/tsc.js
@@ -600,10 +600,6 @@ var ts;
"\u2029": "\\u2029",
"\u0085": "\\u0085"
};
- function getDefaultLibFileName(options) {
- return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts";
- }
- ts.getDefaultLibFileName = getDefaultLibFileName;
function Symbol(flags, name) {
this.flags = flags;
this.name = name;
@@ -1076,6 +1072,12 @@ var ts;
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." },
Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." },
Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." },
Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." },
@@ -1443,7 +1445,7 @@ var ts;
(function (ts) {
var textToToken = {
"any": 112,
- "as": 102,
+ "as": 111,
"boolean": 113,
"break": 66,
"case": 67,
@@ -1468,24 +1470,24 @@ var ts;
"function": 83,
"get": 116,
"if": 84,
- "implements": 103,
+ "implements": 102,
"import": 85,
"in": 86,
"instanceof": 87,
- "interface": 104,
- "let": 105,
+ "interface": 103,
+ "let": 104,
"module": 117,
"new": 88,
"null": 89,
"number": 119,
- "package": 106,
- "private": 107,
- "protected": 108,
- "public": 109,
+ "package": 105,
+ "private": 106,
+ "protected": 107,
+ "public": 108,
"require": 118,
"return": 90,
"set": 120,
- "static": 110,
+ "static": 109,
"string": 121,
"super": 91,
"switch": 92,
@@ -1500,7 +1502,7 @@ var ts;
"void": 99,
"while": 100,
"with": 101,
- "yield": 111,
+ "yield": 110,
"of": 125,
"{": 14,
"}": 15,
@@ -3383,7 +3385,7 @@ var ts;
scanner.setTextPos(pos);
scanner.scan();
var start = scanner.getTokenPos();
- return createTextSpanFromBounds(start, scanner.getTextPos());
+ return ts.createTextSpanFromBounds(start, scanner.getTextPos());
}
ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition;
function getErrorSpanForNode(sourceFile, node) {
@@ -3392,7 +3394,7 @@ var ts;
case 227:
var pos_1 = ts.skipTrivia(sourceFile.text, 0, false);
if (pos_1 === sourceFile.text.length) {
- return createTextSpan(0, 0);
+ return ts.createTextSpan(0, 0);
}
return getSpanOfTokenAtPosition(sourceFile, pos_1);
case 198:
@@ -3414,7 +3416,7 @@ var ts;
var pos = nodeIsMissing(errorNode)
? errorNode.pos
: ts.skipTrivia(sourceFile.text, errorNode.pos);
- return createTextSpanFromBounds(pos, errorNode.end);
+ return ts.createTextSpanFromBounds(pos, errorNode.end);
}
ts.getErrorSpanForNode = getErrorSpanForNode;
function isExternalModule(file) {
@@ -4008,7 +4010,7 @@ var ts;
}
ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement;
function getClassImplementsHeritageClauseElements(node) {
- var heritageClause = getHeritageClause(node.heritageClauses, 103);
+ var heritageClause = getHeritageClause(node.heritageClauses, 102);
return heritageClause ? heritageClause.types : undefined;
}
ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements;
@@ -4123,10 +4125,10 @@ var ts;
ts.isESSymbolIdentifier = isESSymbolIdentifier;
function isModifier(token) {
switch (token) {
- case 109:
- case 107:
case 108:
- case 110:
+ case 106:
+ case 107:
+ case 109:
case 78:
case 115:
case 70:
@@ -4136,115 +4138,6 @@ var ts;
return false;
}
ts.isModifier = isModifier;
- function textSpanEnd(span) {
- return span.start + span.length;
- }
- ts.textSpanEnd = textSpanEnd;
- function textSpanIsEmpty(span) {
- return span.length === 0;
- }
- ts.textSpanIsEmpty = textSpanIsEmpty;
- function textSpanContainsPosition(span, position) {
- return position >= span.start && position < textSpanEnd(span);
- }
- ts.textSpanContainsPosition = textSpanContainsPosition;
- function textSpanContainsTextSpan(span, other) {
- return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
- }
- ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
- function textSpanOverlapsWith(span, other) {
- var overlapStart = Math.max(span.start, other.start);
- var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
- return overlapStart < overlapEnd;
- }
- ts.textSpanOverlapsWith = textSpanOverlapsWith;
- function textSpanOverlap(span1, span2) {
- var overlapStart = Math.max(span1.start, span2.start);
- var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (overlapStart < overlapEnd) {
- return createTextSpanFromBounds(overlapStart, overlapEnd);
- }
- return undefined;
- }
- ts.textSpanOverlap = textSpanOverlap;
- function textSpanIntersectsWithTextSpan(span, other) {
- return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
- }
- ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
- function textSpanIntersectsWith(span, start, length) {
- var end = start + length;
- return start <= textSpanEnd(span) && end >= span.start;
- }
- ts.textSpanIntersectsWith = textSpanIntersectsWith;
- function textSpanIntersectsWithPosition(span, position) {
- return position <= textSpanEnd(span) && position >= span.start;
- }
- ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
- function textSpanIntersection(span1, span2) {
- var intersectStart = Math.max(span1.start, span2.start);
- var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (intersectStart <= intersectEnd) {
- return createTextSpanFromBounds(intersectStart, intersectEnd);
- }
- return undefined;
- }
- ts.textSpanIntersection = textSpanIntersection;
- function createTextSpan(start, length) {
- if (start < 0) {
- throw new Error("start < 0");
- }
- if (length < 0) {
- throw new Error("length < 0");
- }
- return { start: start, length: length };
- }
- ts.createTextSpan = createTextSpan;
- function createTextSpanFromBounds(start, end) {
- return createTextSpan(start, end - start);
- }
- ts.createTextSpanFromBounds = createTextSpanFromBounds;
- function textChangeRangeNewSpan(range) {
- return createTextSpan(range.span.start, range.newLength);
- }
- ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
- function textChangeRangeIsUnchanged(range) {
- return textSpanIsEmpty(range.span) && range.newLength === 0;
- }
- ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
- function createTextChangeRange(span, newLength) {
- if (newLength < 0) {
- throw new Error("newLength < 0");
- }
- return { span: span, newLength: newLength };
- }
- ts.createTextChangeRange = createTextChangeRange;
- ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
- function collapseTextChangeRangesAcrossMultipleVersions(changes) {
- if (changes.length === 0) {
- return ts.unchangedTextChangeRange;
- }
- if (changes.length === 1) {
- return changes[0];
- }
- var change0 = changes[0];
- var oldStartN = change0.span.start;
- var oldEndN = textSpanEnd(change0.span);
- var newEndN = oldStartN + change0.newLength;
- for (var i = 1; i < changes.length; i++) {
- var nextChange = changes[i];
- var oldStart1 = oldStartN;
- var oldEnd1 = oldEndN;
- var newEnd1 = newEndN;
- var oldStart2 = nextChange.span.start;
- var oldEnd2 = textSpanEnd(nextChange.span);
- var newEnd2 = oldStart2 + nextChange.newLength;
- oldStartN = Math.min(oldStart1, oldStart2);
- oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
- newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
- }
- return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
- }
- ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
function nodeStartsNewLexicalEnvironment(n) {
return isFunctionLike(n) || n.kind === 205 || n.kind === 227;
}
@@ -4641,6 +4534,122 @@ var ts;
}
ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault;
})(ts || (ts = {}));
+var ts;
+(function (ts) {
+ function getDefaultLibFileName(options) {
+ return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts";
+ }
+ ts.getDefaultLibFileName = getDefaultLibFileName;
+ function textSpanEnd(span) {
+ return span.start + span.length;
+ }
+ ts.textSpanEnd = textSpanEnd;
+ function textSpanIsEmpty(span) {
+ return span.length === 0;
+ }
+ ts.textSpanIsEmpty = textSpanIsEmpty;
+ function textSpanContainsPosition(span, position) {
+ return position >= span.start && position < textSpanEnd(span);
+ }
+ ts.textSpanContainsPosition = textSpanContainsPosition;
+ function textSpanContainsTextSpan(span, other) {
+ return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
+ }
+ ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
+ function textSpanOverlapsWith(span, other) {
+ var overlapStart = Math.max(span.start, other.start);
+ var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
+ return overlapStart < overlapEnd;
+ }
+ ts.textSpanOverlapsWith = textSpanOverlapsWith;
+ function textSpanOverlap(span1, span2) {
+ var overlapStart = Math.max(span1.start, span2.start);
+ var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (overlapStart < overlapEnd) {
+ return createTextSpanFromBounds(overlapStart, overlapEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanOverlap = textSpanOverlap;
+ function textSpanIntersectsWithTextSpan(span, other) {
+ return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
+ }
+ ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
+ function textSpanIntersectsWith(span, start, length) {
+ var end = start + length;
+ return start <= textSpanEnd(span) && end >= span.start;
+ }
+ ts.textSpanIntersectsWith = textSpanIntersectsWith;
+ function textSpanIntersectsWithPosition(span, position) {
+ return position <= textSpanEnd(span) && position >= span.start;
+ }
+ ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
+ function textSpanIntersection(span1, span2) {
+ var intersectStart = Math.max(span1.start, span2.start);
+ var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (intersectStart <= intersectEnd) {
+ return createTextSpanFromBounds(intersectStart, intersectEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanIntersection = textSpanIntersection;
+ function createTextSpan(start, length) {
+ if (start < 0) {
+ throw new Error("start < 0");
+ }
+ if (length < 0) {
+ throw new Error("length < 0");
+ }
+ return { start: start, length: length };
+ }
+ ts.createTextSpan = createTextSpan;
+ function createTextSpanFromBounds(start, end) {
+ return createTextSpan(start, end - start);
+ }
+ ts.createTextSpanFromBounds = createTextSpanFromBounds;
+ function textChangeRangeNewSpan(range) {
+ return createTextSpan(range.span.start, range.newLength);
+ }
+ ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
+ function textChangeRangeIsUnchanged(range) {
+ return textSpanIsEmpty(range.span) && range.newLength === 0;
+ }
+ ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
+ function createTextChangeRange(span, newLength) {
+ if (newLength < 0) {
+ throw new Error("newLength < 0");
+ }
+ return { span: span, newLength: newLength };
+ }
+ ts.createTextChangeRange = createTextChangeRange;
+ ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
+ function collapseTextChangeRangesAcrossMultipleVersions(changes) {
+ if (changes.length === 0) {
+ return ts.unchangedTextChangeRange;
+ }
+ if (changes.length === 1) {
+ return changes[0];
+ }
+ var change0 = changes[0];
+ var oldStartN = change0.span.start;
+ var oldEndN = textSpanEnd(change0.span);
+ var newEndN = oldStartN + change0.newLength;
+ for (var i = 1; i < changes.length; i++) {
+ var nextChange = changes[i];
+ var oldStart1 = oldStartN;
+ var oldEnd1 = oldEndN;
+ var newEnd1 = newEndN;
+ var oldStart2 = nextChange.span.start;
+ var oldEnd2 = textSpanEnd(nextChange.span);
+ var newEnd2 = oldStart2 + nextChange.newLength;
+ oldStartN = Math.min(oldStart1, oldStart2);
+ oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
+ newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
+ }
+ return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
+ }
+ ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
+})(ts || (ts = {}));
///
///
var ts;
@@ -4979,10 +4988,10 @@ var ts;
;
function modifierToFlag(token) {
switch (token) {
- case 110: return 128;
- case 109: return 16;
- case 108: return 64;
- case 107: return 32;
+ case 109: return 128;
+ case 108: return 16;
+ case 107: return 64;
+ case 106: return 32;
case 78: return 1;
case 115: return 2;
case 70: return 8192;
@@ -5489,10 +5498,10 @@ var ts;
if (token === 65) {
return true;
}
- if (token === 111 && inYieldContext()) {
+ if (token === 110 && inYieldContext()) {
return false;
}
- return inStrictModeContext() ? token > 111 : token > 101;
+ return token > 101;
}
function parseExpected(kind, diagnosticMessage) {
if (token === kind) {
@@ -5586,6 +5595,9 @@ var ts;
identifierCount++;
if (isIdentifier) {
var node = createNode(65);
+ if (token !== 65) {
+ node.originalKeywordKind = token;
+ }
node.text = internIdentifier(scanner.getTokenValue());
nextToken();
return finishNode(node);
@@ -5722,7 +5734,7 @@ var ts;
ts.Debug.assert(token === 14);
if (nextToken() === 15) {
var next = nextToken();
- return next === 23 || next === 14 || next === 79 || next === 103;
+ return next === 23 || next === 14 || next === 79 || next === 102;
}
return true;
}
@@ -5731,7 +5743,7 @@ var ts;
return isIdentifier();
}
function isHeritageClauseExtendsOrImplementsKeyword() {
- if (token === 103 ||
+ if (token === 102 ||
token === 79) {
return lookAhead(nextTokenIsStartOfExpression);
}
@@ -5759,11 +5771,11 @@ var ts;
case 4:
return token === 15 || token === 67 || token === 73;
case 8:
- return token === 14 || token === 79 || token === 103;
+ return token === 14 || token === 79 || token === 102;
case 9:
return isVariableDeclaratorListTerminator();
case 16:
- return token === 25 || token === 16 || token === 14 || token === 79 || token === 103;
+ return token === 25 || token === 16 || token === 14 || token === 79 || token === 102;
case 12:
return token === 17 || token === 22;
case 14:
@@ -6567,7 +6579,7 @@ var ts;
case 38:
case 39:
case 24:
- case 111:
+ case 110:
return true;
default:
if (isBinaryOperator()) {
@@ -6637,7 +6649,7 @@ var ts;
return parseConditionalExpressionRest(expr);
}
function isYieldExpression() {
- if (token === 111) {
+ if (token === 110) {
if (inYieldContext()) {
return true;
}
@@ -7262,7 +7274,7 @@ var ts;
parseExpected(16);
var initializer = undefined;
if (token !== 22) {
- if (token === 98 || token === 105 || token === 70) {
+ if (token === 98 || token === 104 || token === 70) {
initializer = parseVariableDeclarationList(true);
}
else {
@@ -7423,7 +7435,7 @@ var ts;
return !inErrorRecovery;
case 14:
case 98:
- case 105:
+ case 104:
case 83:
case 69:
case 84:
@@ -7444,17 +7456,17 @@ var ts;
case 70:
var isConstEnum = lookAhead(nextTokenIsEnumKeyword);
return !isConstEnum;
- case 104:
+ case 103:
case 117:
case 77:
case 123:
if (isDeclarationStart()) {
return false;
}
- case 109:
- case 107:
case 108:
- case 110:
+ case 106:
+ case 107:
+ case 109:
if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) {
return false;
}
@@ -7509,7 +7521,7 @@ var ts;
return parseTryStatement();
case 72:
return parseDebuggerStatement();
- case 105:
+ case 104:
if (isLetDeclaration()) {
return parseVariableStatement(scanner.getStartPos(), undefined, undefined);
}
@@ -7534,7 +7546,7 @@ var ts;
return undefined;
}
return parseVariableStatement(start, decorators, modifiers);
- case 105:
+ case 104:
if (!isLetDeclaration()) {
return undefined;
}
@@ -7619,7 +7631,7 @@ var ts;
switch (token) {
case 98:
break;
- case 105:
+ case 104:
node.flags |= 4096;
break;
case 70:
@@ -7716,6 +7728,17 @@ var ts;
node.body = parseFunctionBlockOrSemicolon(false);
return finishNode(node);
}
+ function isClassMemberModifier(idToken) {
+ switch (idToken) {
+ case 108:
+ case 106:
+ case 107:
+ case 109:
+ return true;
+ default:
+ return false;
+ }
+ }
function isClassMemberStart() {
var idToken;
if (token === 52) {
@@ -7723,6 +7746,9 @@ var ts;
}
while (ts.isModifier(token)) {
idToken = token;
+ if (isClassMemberModifier(idToken)) {
+ return true;
+ }
nextToken();
}
if (token === 35) {
@@ -7870,7 +7896,7 @@ var ts;
return parseList(19, false, parseHeritageClause);
}
function parseHeritageClause() {
- if (token === 79 || token === 103) {
+ if (token === 79 || token === 102) {
var node = createNode(222);
node.token = token;
nextToken();
@@ -7888,7 +7914,7 @@ var ts;
return finishNode(node);
}
function isHeritageClause() {
- return token === 79 || token === 103;
+ return token === 79 || token === 102;
}
function parseClassMembers() {
return parseList(6, false, parseClassElement);
@@ -7897,7 +7923,7 @@ var ts;
var node = createNode(202, fullStart);
node.decorators = decorators;
setModifiers(node, modifiers);
- parseExpected(104);
+ parseExpected(103);
node.name = parseIdentifier();
node.typeParameters = parseTypeParameters();
node.heritageClauses = parseHeritageClauses(false);
@@ -8054,7 +8080,7 @@ var ts;
function parseNamespaceImport() {
var namespaceImport = createNode(211);
parseExpected(35);
- parseExpected(102);
+ parseExpected(111);
namespaceImport.name = parseIdentifier();
return finishNode(namespaceImport);
}
@@ -8075,9 +8101,9 @@ var ts;
var checkIdentifierStart = scanner.getTokenPos();
var checkIdentifierEnd = scanner.getTextPos();
var identifierName = parseIdentifierName();
- if (token === 102) {
+ if (token === 111) {
node.propertyName = identifierName;
- parseExpected(102);
+ parseExpected(111);
checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier();
checkIdentifierStart = scanner.getTokenPos();
checkIdentifierEnd = scanner.getTextPos();
@@ -8131,10 +8157,10 @@ var ts;
case 70:
case 83:
return true;
- case 105:
+ case 104:
return isLetDeclaration();
case 69:
- case 104:
+ case 103:
case 77:
case 123:
return lookAhead(nextTokenIsIdentifierOrKeyword);
@@ -8145,10 +8171,10 @@ var ts;
case 78:
return lookAhead(nextTokenCanFollowExportKeyword);
case 115:
- case 109:
- case 107:
case 108:
- case 110:
+ case 106:
+ case 107:
+ case 109:
return lookAhead(nextTokenIsDeclarationStart);
case 52:
return !followsModifier;
@@ -8180,7 +8206,7 @@ var ts;
return isDeclarationStart(true);
}
function nextTokenIsAsKeyword() {
- return nextToken() === 102;
+ return nextToken() === 111;
}
function parseDeclaration() {
var fullStart = getNodePos();
@@ -8197,14 +8223,14 @@ var ts;
}
switch (token) {
case 98:
- case 105:
+ case 104:
case 70:
return parseVariableStatement(fullStart, decorators, modifiers);
case 83:
return parseFunctionDeclaration(fullStart, decorators, modifiers);
case 69:
return parseClassDeclaration(fullStart, decorators, modifiers);
- case 104:
+ case 103:
return parseInterfaceDeclaration(fullStart, decorators, modifiers);
case 123:
return parseTypeAliasDeclaration(fullStart, decorators, modifiers);
@@ -10710,12 +10736,13 @@ var ts;
return result;
}
function getPropertiesOfType(type) {
- if (type.flags & 16384) {
- return getPropertiesOfUnionType(type);
- }
- return getPropertiesOfObjectType(getApparentType(type));
+ type = getApparentType(type);
+ return type.flags & 16384 ? getPropertiesOfUnionType(type) : getPropertiesOfObjectType(type);
}
function getApparentType(type) {
+ if (type.flags & 16384) {
+ type = getReducedTypeOfUnionType(type);
+ }
if (type.flags & 512) {
do {
type = getConstraintOfTypeParameter(type);
@@ -10784,28 +10811,27 @@ var ts;
return property;
}
function getPropertyOfType(type, name) {
+ type = getApparentType(type);
+ if (type.flags & 48128) {
+ var resolved = resolveObjectOrUnionTypeMembers(type);
+ if (ts.hasProperty(resolved.members, name)) {
+ var symbol = resolved.members[name];
+ if (symbolIsValue(symbol)) {
+ return symbol;
+ }
+ }
+ if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
+ var symbol = getPropertyOfObjectType(globalFunctionType, name);
+ if (symbol) {
+ return symbol;
+ }
+ }
+ return getPropertyOfObjectType(globalObjectType, name);
+ }
if (type.flags & 16384) {
return getPropertyOfUnionType(type, name);
}
- if (!(type.flags & 48128)) {
- type = getApparentType(type);
- if (!(type.flags & 48128)) {
- return undefined;
- }
- }
- var resolved = resolveObjectOrUnionTypeMembers(type);
- if (ts.hasProperty(resolved.members, name)) {
- var symbol = resolved.members[name];
- if (symbolIsValue(symbol)) {
- return symbol;
- }
- }
- if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
- var symbol = getPropertyOfObjectType(globalFunctionType, name);
- if (symbol)
- return symbol;
- }
- return getPropertyOfObjectType(globalObjectType, name);
+ return undefined;
}
function getSignaturesOfObjectOrUnionType(type, kind) {
if (type.flags & (48128 | 16384)) {
@@ -11311,9 +11337,16 @@ var ts;
if (!type) {
type = unionTypes[id] = createObjectType(16384 | getWideningFlagsOfTypes(sortedTypes));
type.types = sortedTypes;
+ type.reducedType = noSubtypeReduction ? undefined : type;
}
return type;
}
+ function getReducedTypeOfUnionType(type) {
+ if (!type.reducedType) {
+ type.reducedType = getUnionType(type.types, false);
+ }
+ return type.reducedType;
+ }
function getTypeFromUnionTypeNode(node) {
var links = getNodeLinks(node);
if (!links.resolvedType) {
@@ -14170,7 +14203,7 @@ var ts;
}
function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) {
ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node));
- var hasGrammarError = checkGrammarFunctionLikeDeclaration(node);
+ var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node);
if (!hasGrammarError && node.kind === 162) {
checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node);
}
@@ -14207,7 +14240,7 @@ var ts;
}
function checkFunctionExpressionOrObjectLiteralMethodBody(node) {
ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node));
- if (node.type) {
+ if (node.type && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
if (node.body) {
@@ -14678,6 +14711,7 @@ var ts;
return type;
}
function checkExpression(node, contextualMapper) {
+ checkGrammarIdentifierInStrictMode(node);
return checkExpressionOrQualifiedName(node, contextualMapper);
}
function checkExpressionOrQualifiedName(node, contextualMapper) {
@@ -14772,6 +14806,7 @@ var ts;
return unknownType;
}
function checkTypeParameter(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
if (node.expression) {
grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected);
}
@@ -14974,9 +15009,11 @@ var ts;
checkDecorators(node);
}
function checkTypeReferenceNode(node) {
+ checkGrammarTypeReferenceInStrictMode(node.typeName);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkHeritageClauseElement(node) {
+ checkGrammarHeritageClauseElementInStrictMode(node.expression);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkTypeReferenceOrHeritageClauseElement(node) {
@@ -15379,6 +15416,7 @@ var ts;
}
}
function checkFunctionLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSignatureDeclaration(node);
if (node.name && node.name.kind === 127) {
@@ -15398,7 +15436,7 @@ var ts;
}
}
checkSourceElement(node.body);
- if (node.type && !isAccessor(node.kind)) {
+ if (node.type && !isAccessor(node.kind) && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) {
@@ -15564,6 +15602,7 @@ var ts;
}
}
function checkVariableLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSourceElement(node.type);
if (node.name.kind === 127) {
@@ -15748,7 +15787,10 @@ var ts;
return checkElementTypeOfArrayOrString(inputType, errorNode);
}
if (isArrayLikeType(inputType)) {
- return getIndexTypeOfType(inputType, 1);
+ var indexType = getIndexTypeOfType(inputType, 1);
+ if (indexType) {
+ return indexType;
+ }
}
error(errorNode, ts.Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType));
return unknownType;
@@ -16087,6 +16129,7 @@ var ts;
return unknownType;
}
function checkClassDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
if (node.parent.kind !== 206 && node.parent.kind !== 227) {
grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration);
}
@@ -16275,7 +16318,7 @@ var ts;
return ok;
}
function checkInterfaceDeclaration(node) {
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
checkTypeParameters(node.typeParameters);
if (produceDiagnostics) {
checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0);
@@ -16461,7 +16504,7 @@ var ts;
if (!produceDiagnostics) {
return;
}
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
@@ -16514,7 +16557,7 @@ var ts;
}
function checkModuleDeclaration(node) {
if (produceDiagnostics) {
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
+ if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
if (!ts.isInAmbientContext(node) && node.name.kind === 8) {
grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names);
}
@@ -16603,7 +16646,7 @@ var ts;
checkAliasSymbol(node);
}
function checkImportDeclaration(node) {
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) {
+ if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) {
grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers);
}
if (checkExternalImportOrExportDeclaration(node)) {
@@ -16624,7 +16667,7 @@ var ts;
}
}
function checkImportEqualsDeclaration(node) {
- checkGrammarDecorators(node) || checkGrammarModifiers(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node);
if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) {
checkImportBinding(node);
if (node.flags & 1) {
@@ -16925,6 +16968,8 @@ var ts;
if (!(links.flags & 1)) {
checkGrammarSourceFile(node);
emitExtends = false;
+ emitDecorate = false;
+ emitParam = false;
potentialThisCollisions.length = 0;
ts.forEach(node.statements, checkSourceElement);
checkFunctionExpressionBodies(node);
@@ -17732,6 +17777,105 @@ var ts;
}
anyArrayType = createArrayType(anyType);
}
+ function isReservedwordInStrictMode(node) {
+ return (node.parserContextFlags & 1) &&
+ (node.originalKeywordKind >= 102 && node.originalKeywordKind <= 110);
+ }
+ function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) {
+ if (ts.getAncestor(identifier, 201) || ts.getAncestor(identifier, 174)) {
+ return grammarErrorOnNode(identifier, message, arg0);
+ }
+ return false;
+ }
+ function checkGrammarImportDeclarationNameInStrictMode(node) {
+ if (node.importClause) {
+ var impotClause = node.importClause;
+ if (impotClause.namedBindings) {
+ var nameBindings = impotClause.namedBindings;
+ if (nameBindings.kind === 211) {
+ var name_11 = nameBindings.name;
+ if (name_11.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_11);
+ return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ else if (nameBindings.kind === 212) {
+ var reportError = false;
+ for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) {
+ var element = _a[_i];
+ var name_12 = element.name;
+ if (name_12.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_12);
+ reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return reportError;
+ }
+ }
+ }
+ return false;
+ }
+ function checkGrammarDeclarationNameInStrictMode(node) {
+ var name = node.name;
+ if (name && name.kind === 65 && isReservedwordInStrictMode(name)) {
+ var nameText = ts.declarationNameToString(name);
+ switch (node.kind) {
+ case 129:
+ case 198:
+ case 200:
+ case 128:
+ case 152:
+ case 202:
+ case 203:
+ case 204:
+ return checkGrammarIdentifierInStrictMode(name);
+ case 201:
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText);
+ case 205:
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ case 208:
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return false;
+ }
+ function checkGrammarTypeReferenceInStrictMode(typeName) {
+ if (typeName.kind === 65) {
+ checkGrammarTypeNameInStrictMode(typeName);
+ }
+ else if (typeName.kind === 126) {
+ checkGrammarTypeNameInStrictMode(typeName.right);
+ checkGrammarTypeReferenceInStrictMode(typeName.left);
+ }
+ }
+ function checkGrammarHeritageClauseElementInStrictMode(expression) {
+ if (expression && expression.kind === 65) {
+ return checkGrammarIdentifierInStrictMode(expression);
+ }
+ else if (expression && expression.kind === 155) {
+ checkGrammarHeritageClauseElementInStrictMode(expression.expression);
+ }
+ }
+ function checkGrammarIdentifierInStrictMode(node, nameText) {
+ if (node && node.kind === 65 && isReservedwordInStrictMode(node)) {
+ if (!nameText) {
+ nameText = ts.declarationNameToString(node);
+ }
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
+ function checkGrammarTypeNameInStrictMode(node) {
+ if (node && node.kind === 65 && isReservedwordInStrictMode(node)) {
+ var nameText = ts.declarationNameToString(node);
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
function checkGrammarDecorators(node) {
if (!node.decorators) {
return false;
@@ -17784,14 +17928,14 @@ var ts;
for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) {
var modifier = _a[_i];
switch (modifier.kind) {
- case 109:
case 108:
case 107:
+ case 106:
var text = void 0;
- if (modifier.kind === 109) {
+ if (modifier.kind === 108) {
text = "public";
}
- else if (modifier.kind === 108) {
+ else if (modifier.kind === 107) {
text = "protected";
lastProtected = modifier;
}
@@ -17810,7 +17954,7 @@ var ts;
}
flags |= ts.modifierToFlag(modifier.kind);
break;
- case 110:
+ case 109:
if (flags & 128) {
return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static");
}
@@ -18040,7 +18184,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103);
+ ts.Debug.assert(heritageClause.token === 102);
if (seenImplementsClause) {
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen);
}
@@ -18062,7 +18206,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103);
+ ts.Debug.assert(heritageClause.token === 102);
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause);
}
checkGrammarHeritageClause(heritageClause);
@@ -18101,17 +18245,17 @@ var ts;
var inStrictMode = (node.parserContextFlags & 1) !== 0;
for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {
var prop = _a[_i];
- var name_11 = prop.name;
+ var name_13 = prop.name;
if (prop.kind === 175 ||
- name_11.kind === 127) {
- checkGrammarComputedPropertyName(name_11);
+ name_13.kind === 127) {
+ checkGrammarComputedPropertyName(name_13);
continue;
}
var currentKind = void 0;
if (prop.kind === 224 || prop.kind === 225) {
checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional);
- if (name_11.kind === 7) {
- checkGrammarNumbericLiteral(name_11);
+ if (name_13.kind === 7) {
+ checkGrammarNumbericLiteral(name_13);
}
currentKind = Property;
}
@@ -18127,26 +18271,26 @@ var ts;
else {
ts.Debug.fail("Unexpected syntax kind:" + prop.kind);
}
- if (!ts.hasProperty(seen, name_11.text)) {
- seen[name_11.text] = currentKind;
+ if (!ts.hasProperty(seen, name_13.text)) {
+ seen[name_13.text] = currentKind;
}
else {
- var existingKind = seen[name_11.text];
+ var existingKind = seen[name_13.text];
if (currentKind === Property && existingKind === Property) {
if (inStrictMode) {
- grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
+ grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
}
}
else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) {
if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) {
- seen[name_11.text] = currentKind | existingKind;
+ seen[name_13.text] = currentKind | existingKind;
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
}
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
}
}
}
@@ -18465,12 +18609,11 @@ var ts;
var identifier = name;
if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) {
var nameText = ts.declarationNameToString(identifier);
- if (ts.getAncestor(name, 201) || ts.getAncestor(name, 174)) {
- return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
- }
- else {
+ var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
+ if (!reportErrorInClassDeclaration) {
return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText);
}
+ return reportErrorInClassDeclaration;
}
}
}
@@ -18919,9 +19062,9 @@ var ts;
}
var count = 0;
while (true) {
- var name_12 = baseName + "_" + (++count);
- if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) {
- return name_12;
+ var name_14 = baseName + "_" + (++count);
+ if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) {
+ return name_14;
}
}
}
@@ -20003,9 +20146,9 @@ var ts;
var count = tempFlags & 268435455;
tempFlags++;
if (count !== 8 && count !== 13) {
- var name_13 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26);
- if (isUniqueName(name_13)) {
- return name_13;
+ var name_15 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26);
+ if (isUniqueName(name_15)) {
+ return name_15;
}
}
}
@@ -20033,8 +20176,8 @@ var ts;
}
function generateNameForModuleOrEnum(node) {
if (node.name.kind === 65) {
- var name_14 = node.name.text;
- assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14));
+ var name_16 = node.name.text;
+ assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16));
}
}
function generateNameForImportOrExportDeclaration(node) {
@@ -20214,8 +20357,8 @@ var ts;
if (scopeName) {
var parentIndex = getSourceMapNameIndex();
if (parentIndex !== -1) {
- var name_15 = node.name;
- if (!name_15 || name_15.kind !== 127) {
+ var name_17 = node.name;
+ if (!name_17 || name_17.kind !== 127) {
scopeName = "." + scopeName;
}
scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName;
@@ -20242,9 +20385,9 @@ var ts;
node.kind === 201 ||
node.kind === 204) {
if (node.name) {
- var name_16 = node.name;
- scopeName = name_16.kind === 127
- ? ts.getTextOfNode(name_16)
+ var name_18 = node.name;
+ scopeName = name_18.kind === 127
+ ? ts.getTextOfNode(name_18)
: node.name.text;
}
recordScopeNameStart(scopeName);
@@ -20657,6 +20800,7 @@ var ts;
default:
return -1;
}
+ case 172:
case 170:
return -1;
default:
@@ -20828,6 +20972,16 @@ var ts;
write("...");
emit(node.expression);
}
+ function emitYieldExpression(node) {
+ write(ts.tokenToString(110));
+ if (node.asteriskToken) {
+ write("*");
+ }
+ if (node.expression) {
+ write(" ");
+ emit(node.expression);
+ }
+ }
function needsParenthesisForPropertyAccessOrInvocation(node) {
switch (node.kind) {
case 65:
@@ -21069,6 +21223,9 @@ var ts;
write("]");
}
function emitMethod(node) {
+ if (languageVersion >= 2 && node.asteriskToken) {
+ write("*");
+ }
emit(node.name, false);
if (languageVersion < 2) {
write(": function ");
@@ -21440,7 +21597,7 @@ var ts;
var tokenKind = 98;
if (decl && languageVersion >= 2) {
if (ts.isLet(decl)) {
- tokenKind = 105;
+ tokenKind = 104;
}
else if (ts.isConst(decl)) {
tokenKind = 70;
@@ -21453,7 +21610,7 @@ var ts;
switch (tokenKind) {
case 98:
return write("var ");
- case 105:
+ case 104:
return write("let ");
case 70:
return write("const ");
@@ -22054,12 +22211,12 @@ var ts;
function emitParameter(node) {
if (languageVersion < 2) {
if (ts.isBindingPattern(node.name)) {
- var name_17 = createTempVariable(0);
+ var name_19 = createTempVariable(0);
if (!tempParameters) {
tempParameters = [];
}
- tempParameters.push(name_17);
- emit(name_17);
+ tempParameters.push(name_19);
+ emit(name_19);
}
else {
emit(node.name);
@@ -22178,7 +22335,11 @@ var ts;
write("default ");
}
}
- write("function ");
+ write("function");
+ if (languageVersion >= 2 && node.asteriskToken) {
+ write("*");
+ }
+ write(" ");
}
if (shouldEmitFunctionName(node)) {
emitDeclarationName(node);
@@ -22510,6 +22671,9 @@ var ts;
else if (member.kind === 137) {
write("set ");
}
+ if (member.asteriskToken) {
+ write("*");
+ }
emit(member.name);
emitSignatureAndBody(member);
emitEnd(member);
@@ -23475,8 +23639,8 @@ var ts;
else {
for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) {
var specifier = _d[_c];
- var name_18 = (specifier.propertyName || specifier.name).text;
- (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier);
+ var name_20 = (specifier.propertyName || specifier.name).text;
+ (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier);
}
}
break;
@@ -23787,6 +23951,8 @@ var ts;
return emitConditionalExpression(node);
case 173:
return emitSpreadElementExpression(node);
+ case 172:
+ return emitYieldExpression(node);
case 175:
return;
case 179:
diff --git a/bin/tsserver.js b/bin/tsserver.js
index ba3c349c046..1067c4f3150 100644
--- a/bin/tsserver.js
+++ b/bin/tsserver.js
@@ -600,10 +600,6 @@ var ts;
"\u2029": "\\u2029",
"\u0085": "\\u0085"
};
- function getDefaultLibFileName(options) {
- return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts";
- }
- ts.getDefaultLibFileName = getDefaultLibFileName;
function Symbol(flags, name) {
this.flags = flags;
this.name = name;
@@ -1076,6 +1072,12 @@ var ts;
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." },
Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." },
Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." },
Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." },
@@ -1443,7 +1445,7 @@ var ts;
(function (ts) {
var textToToken = {
"any": 112,
- "as": 102,
+ "as": 111,
"boolean": 113,
"break": 66,
"case": 67,
@@ -1468,24 +1470,24 @@ var ts;
"function": 83,
"get": 116,
"if": 84,
- "implements": 103,
+ "implements": 102,
"import": 85,
"in": 86,
"instanceof": 87,
- "interface": 104,
- "let": 105,
+ "interface": 103,
+ "let": 104,
"module": 117,
"new": 88,
"null": 89,
"number": 119,
- "package": 106,
- "private": 107,
- "protected": 108,
- "public": 109,
+ "package": 105,
+ "private": 106,
+ "protected": 107,
+ "public": 108,
"require": 118,
"return": 90,
"set": 120,
- "static": 110,
+ "static": 109,
"string": 121,
"super": 91,
"switch": 92,
@@ -1500,7 +1502,7 @@ var ts;
"void": 99,
"while": 100,
"with": 101,
- "yield": 111,
+ "yield": 110,
"of": 125,
"{": 14,
"}": 15,
@@ -3217,7 +3219,7 @@ var ts;
scanner.setTextPos(pos);
scanner.scan();
var start = scanner.getTokenPos();
- return createTextSpanFromBounds(start, scanner.getTextPos());
+ return ts.createTextSpanFromBounds(start, scanner.getTextPos());
}
ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition;
function getErrorSpanForNode(sourceFile, node) {
@@ -3226,7 +3228,7 @@ var ts;
case 227:
var pos_1 = ts.skipTrivia(sourceFile.text, 0, false);
if (pos_1 === sourceFile.text.length) {
- return createTextSpan(0, 0);
+ return ts.createTextSpan(0, 0);
}
return getSpanOfTokenAtPosition(sourceFile, pos_1);
case 198:
@@ -3248,7 +3250,7 @@ var ts;
var pos = nodeIsMissing(errorNode)
? errorNode.pos
: ts.skipTrivia(sourceFile.text, errorNode.pos);
- return createTextSpanFromBounds(pos, errorNode.end);
+ return ts.createTextSpanFromBounds(pos, errorNode.end);
}
ts.getErrorSpanForNode = getErrorSpanForNode;
function isExternalModule(file) {
@@ -3842,7 +3844,7 @@ var ts;
}
ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement;
function getClassImplementsHeritageClauseElements(node) {
- var heritageClause = getHeritageClause(node.heritageClauses, 103);
+ var heritageClause = getHeritageClause(node.heritageClauses, 102);
return heritageClause ? heritageClause.types : undefined;
}
ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements;
@@ -3957,10 +3959,10 @@ var ts;
ts.isESSymbolIdentifier = isESSymbolIdentifier;
function isModifier(token) {
switch (token) {
- case 109:
- case 107:
case 108:
- case 110:
+ case 106:
+ case 107:
+ case 109:
case 78:
case 115:
case 70:
@@ -3970,115 +3972,6 @@ var ts;
return false;
}
ts.isModifier = isModifier;
- function textSpanEnd(span) {
- return span.start + span.length;
- }
- ts.textSpanEnd = textSpanEnd;
- function textSpanIsEmpty(span) {
- return span.length === 0;
- }
- ts.textSpanIsEmpty = textSpanIsEmpty;
- function textSpanContainsPosition(span, position) {
- return position >= span.start && position < textSpanEnd(span);
- }
- ts.textSpanContainsPosition = textSpanContainsPosition;
- function textSpanContainsTextSpan(span, other) {
- return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
- }
- ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
- function textSpanOverlapsWith(span, other) {
- var overlapStart = Math.max(span.start, other.start);
- var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
- return overlapStart < overlapEnd;
- }
- ts.textSpanOverlapsWith = textSpanOverlapsWith;
- function textSpanOverlap(span1, span2) {
- var overlapStart = Math.max(span1.start, span2.start);
- var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (overlapStart < overlapEnd) {
- return createTextSpanFromBounds(overlapStart, overlapEnd);
- }
- return undefined;
- }
- ts.textSpanOverlap = textSpanOverlap;
- function textSpanIntersectsWithTextSpan(span, other) {
- return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
- }
- ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
- function textSpanIntersectsWith(span, start, length) {
- var end = start + length;
- return start <= textSpanEnd(span) && end >= span.start;
- }
- ts.textSpanIntersectsWith = textSpanIntersectsWith;
- function textSpanIntersectsWithPosition(span, position) {
- return position <= textSpanEnd(span) && position >= span.start;
- }
- ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
- function textSpanIntersection(span1, span2) {
- var intersectStart = Math.max(span1.start, span2.start);
- var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (intersectStart <= intersectEnd) {
- return createTextSpanFromBounds(intersectStart, intersectEnd);
- }
- return undefined;
- }
- ts.textSpanIntersection = textSpanIntersection;
- function createTextSpan(start, length) {
- if (start < 0) {
- throw new Error("start < 0");
- }
- if (length < 0) {
- throw new Error("length < 0");
- }
- return { start: start, length: length };
- }
- ts.createTextSpan = createTextSpan;
- function createTextSpanFromBounds(start, end) {
- return createTextSpan(start, end - start);
- }
- ts.createTextSpanFromBounds = createTextSpanFromBounds;
- function textChangeRangeNewSpan(range) {
- return createTextSpan(range.span.start, range.newLength);
- }
- ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
- function textChangeRangeIsUnchanged(range) {
- return textSpanIsEmpty(range.span) && range.newLength === 0;
- }
- ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
- function createTextChangeRange(span, newLength) {
- if (newLength < 0) {
- throw new Error("newLength < 0");
- }
- return { span: span, newLength: newLength };
- }
- ts.createTextChangeRange = createTextChangeRange;
- ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
- function collapseTextChangeRangesAcrossMultipleVersions(changes) {
- if (changes.length === 0) {
- return ts.unchangedTextChangeRange;
- }
- if (changes.length === 1) {
- return changes[0];
- }
- var change0 = changes[0];
- var oldStartN = change0.span.start;
- var oldEndN = textSpanEnd(change0.span);
- var newEndN = oldStartN + change0.newLength;
- for (var i = 1; i < changes.length; i++) {
- var nextChange = changes[i];
- var oldStart1 = oldStartN;
- var oldEnd1 = oldEndN;
- var newEnd1 = newEndN;
- var oldStart2 = nextChange.span.start;
- var oldEnd2 = textSpanEnd(nextChange.span);
- var newEnd2 = oldStart2 + nextChange.newLength;
- oldStartN = Math.min(oldStart1, oldStart2);
- oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
- newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
- }
- return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
- }
- ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
function nodeStartsNewLexicalEnvironment(n) {
return isFunctionLike(n) || n.kind === 205 || n.kind === 227;
}
@@ -4475,6 +4368,122 @@ var ts;
}
ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault;
})(ts || (ts = {}));
+var ts;
+(function (ts) {
+ function getDefaultLibFileName(options) {
+ return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts";
+ }
+ ts.getDefaultLibFileName = getDefaultLibFileName;
+ function textSpanEnd(span) {
+ return span.start + span.length;
+ }
+ ts.textSpanEnd = textSpanEnd;
+ function textSpanIsEmpty(span) {
+ return span.length === 0;
+ }
+ ts.textSpanIsEmpty = textSpanIsEmpty;
+ function textSpanContainsPosition(span, position) {
+ return position >= span.start && position < textSpanEnd(span);
+ }
+ ts.textSpanContainsPosition = textSpanContainsPosition;
+ function textSpanContainsTextSpan(span, other) {
+ return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
+ }
+ ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
+ function textSpanOverlapsWith(span, other) {
+ var overlapStart = Math.max(span.start, other.start);
+ var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
+ return overlapStart < overlapEnd;
+ }
+ ts.textSpanOverlapsWith = textSpanOverlapsWith;
+ function textSpanOverlap(span1, span2) {
+ var overlapStart = Math.max(span1.start, span2.start);
+ var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (overlapStart < overlapEnd) {
+ return createTextSpanFromBounds(overlapStart, overlapEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanOverlap = textSpanOverlap;
+ function textSpanIntersectsWithTextSpan(span, other) {
+ return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
+ }
+ ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
+ function textSpanIntersectsWith(span, start, length) {
+ var end = start + length;
+ return start <= textSpanEnd(span) && end >= span.start;
+ }
+ ts.textSpanIntersectsWith = textSpanIntersectsWith;
+ function textSpanIntersectsWithPosition(span, position) {
+ return position <= textSpanEnd(span) && position >= span.start;
+ }
+ ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
+ function textSpanIntersection(span1, span2) {
+ var intersectStart = Math.max(span1.start, span2.start);
+ var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (intersectStart <= intersectEnd) {
+ return createTextSpanFromBounds(intersectStart, intersectEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanIntersection = textSpanIntersection;
+ function createTextSpan(start, length) {
+ if (start < 0) {
+ throw new Error("start < 0");
+ }
+ if (length < 0) {
+ throw new Error("length < 0");
+ }
+ return { start: start, length: length };
+ }
+ ts.createTextSpan = createTextSpan;
+ function createTextSpanFromBounds(start, end) {
+ return createTextSpan(start, end - start);
+ }
+ ts.createTextSpanFromBounds = createTextSpanFromBounds;
+ function textChangeRangeNewSpan(range) {
+ return createTextSpan(range.span.start, range.newLength);
+ }
+ ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
+ function textChangeRangeIsUnchanged(range) {
+ return textSpanIsEmpty(range.span) && range.newLength === 0;
+ }
+ ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
+ function createTextChangeRange(span, newLength) {
+ if (newLength < 0) {
+ throw new Error("newLength < 0");
+ }
+ return { span: span, newLength: newLength };
+ }
+ ts.createTextChangeRange = createTextChangeRange;
+ ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
+ function collapseTextChangeRangesAcrossMultipleVersions(changes) {
+ if (changes.length === 0) {
+ return ts.unchangedTextChangeRange;
+ }
+ if (changes.length === 1) {
+ return changes[0];
+ }
+ var change0 = changes[0];
+ var oldStartN = change0.span.start;
+ var oldEndN = textSpanEnd(change0.span);
+ var newEndN = oldStartN + change0.newLength;
+ for (var i = 1; i < changes.length; i++) {
+ var nextChange = changes[i];
+ var oldStart1 = oldStartN;
+ var oldEnd1 = oldEndN;
+ var newEnd1 = newEndN;
+ var oldStart2 = nextChange.span.start;
+ var oldEnd2 = textSpanEnd(nextChange.span);
+ var newEnd2 = oldStart2 + nextChange.newLength;
+ oldStartN = Math.min(oldStart1, oldStart2);
+ oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
+ newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
+ }
+ return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
+ }
+ ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
+})(ts || (ts = {}));
///
///
var ts;
@@ -4813,10 +4822,10 @@ var ts;
;
function modifierToFlag(token) {
switch (token) {
- case 110: return 128;
- case 109: return 16;
- case 108: return 64;
- case 107: return 32;
+ case 109: return 128;
+ case 108: return 16;
+ case 107: return 64;
+ case 106: return 32;
case 78: return 1;
case 115: return 2;
case 70: return 8192;
@@ -5323,10 +5332,10 @@ var ts;
if (token === 65) {
return true;
}
- if (token === 111 && inYieldContext()) {
+ if (token === 110 && inYieldContext()) {
return false;
}
- return inStrictModeContext() ? token > 111 : token > 101;
+ return token > 101;
}
function parseExpected(kind, diagnosticMessage) {
if (token === kind) {
@@ -5420,6 +5429,9 @@ var ts;
identifierCount++;
if (isIdentifier) {
var node = createNode(65);
+ if (token !== 65) {
+ node.originalKeywordKind = token;
+ }
node.text = internIdentifier(scanner.getTokenValue());
nextToken();
return finishNode(node);
@@ -5556,7 +5568,7 @@ var ts;
ts.Debug.assert(token === 14);
if (nextToken() === 15) {
var next = nextToken();
- return next === 23 || next === 14 || next === 79 || next === 103;
+ return next === 23 || next === 14 || next === 79 || next === 102;
}
return true;
}
@@ -5565,7 +5577,7 @@ var ts;
return isIdentifier();
}
function isHeritageClauseExtendsOrImplementsKeyword() {
- if (token === 103 ||
+ if (token === 102 ||
token === 79) {
return lookAhead(nextTokenIsStartOfExpression);
}
@@ -5593,11 +5605,11 @@ var ts;
case 4:
return token === 15 || token === 67 || token === 73;
case 8:
- return token === 14 || token === 79 || token === 103;
+ return token === 14 || token === 79 || token === 102;
case 9:
return isVariableDeclaratorListTerminator();
case 16:
- return token === 25 || token === 16 || token === 14 || token === 79 || token === 103;
+ return token === 25 || token === 16 || token === 14 || token === 79 || token === 102;
case 12:
return token === 17 || token === 22;
case 14:
@@ -6401,7 +6413,7 @@ var ts;
case 38:
case 39:
case 24:
- case 111:
+ case 110:
return true;
default:
if (isBinaryOperator()) {
@@ -6471,7 +6483,7 @@ var ts;
return parseConditionalExpressionRest(expr);
}
function isYieldExpression() {
- if (token === 111) {
+ if (token === 110) {
if (inYieldContext()) {
return true;
}
@@ -7096,7 +7108,7 @@ var ts;
parseExpected(16);
var initializer = undefined;
if (token !== 22) {
- if (token === 98 || token === 105 || token === 70) {
+ if (token === 98 || token === 104 || token === 70) {
initializer = parseVariableDeclarationList(true);
}
else {
@@ -7257,7 +7269,7 @@ var ts;
return !inErrorRecovery;
case 14:
case 98:
- case 105:
+ case 104:
case 83:
case 69:
case 84:
@@ -7278,17 +7290,17 @@ var ts;
case 70:
var isConstEnum = lookAhead(nextTokenIsEnumKeyword);
return !isConstEnum;
- case 104:
+ case 103:
case 117:
case 77:
case 123:
if (isDeclarationStart()) {
return false;
}
- case 109:
- case 107:
case 108:
- case 110:
+ case 106:
+ case 107:
+ case 109:
if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) {
return false;
}
@@ -7343,7 +7355,7 @@ var ts;
return parseTryStatement();
case 72:
return parseDebuggerStatement();
- case 105:
+ case 104:
if (isLetDeclaration()) {
return parseVariableStatement(scanner.getStartPos(), undefined, undefined);
}
@@ -7368,7 +7380,7 @@ var ts;
return undefined;
}
return parseVariableStatement(start, decorators, modifiers);
- case 105:
+ case 104:
if (!isLetDeclaration()) {
return undefined;
}
@@ -7453,7 +7465,7 @@ var ts;
switch (token) {
case 98:
break;
- case 105:
+ case 104:
node.flags |= 4096;
break;
case 70:
@@ -7550,6 +7562,17 @@ var ts;
node.body = parseFunctionBlockOrSemicolon(false);
return finishNode(node);
}
+ function isClassMemberModifier(idToken) {
+ switch (idToken) {
+ case 108:
+ case 106:
+ case 107:
+ case 109:
+ return true;
+ default:
+ return false;
+ }
+ }
function isClassMemberStart() {
var idToken;
if (token === 52) {
@@ -7557,6 +7580,9 @@ var ts;
}
while (ts.isModifier(token)) {
idToken = token;
+ if (isClassMemberModifier(idToken)) {
+ return true;
+ }
nextToken();
}
if (token === 35) {
@@ -7704,7 +7730,7 @@ var ts;
return parseList(19, false, parseHeritageClause);
}
function parseHeritageClause() {
- if (token === 79 || token === 103) {
+ if (token === 79 || token === 102) {
var node = createNode(222);
node.token = token;
nextToken();
@@ -7722,7 +7748,7 @@ var ts;
return finishNode(node);
}
function isHeritageClause() {
- return token === 79 || token === 103;
+ return token === 79 || token === 102;
}
function parseClassMembers() {
return parseList(6, false, parseClassElement);
@@ -7731,7 +7757,7 @@ var ts;
var node = createNode(202, fullStart);
node.decorators = decorators;
setModifiers(node, modifiers);
- parseExpected(104);
+ parseExpected(103);
node.name = parseIdentifier();
node.typeParameters = parseTypeParameters();
node.heritageClauses = parseHeritageClauses(false);
@@ -7888,7 +7914,7 @@ var ts;
function parseNamespaceImport() {
var namespaceImport = createNode(211);
parseExpected(35);
- parseExpected(102);
+ parseExpected(111);
namespaceImport.name = parseIdentifier();
return finishNode(namespaceImport);
}
@@ -7909,9 +7935,9 @@ var ts;
var checkIdentifierStart = scanner.getTokenPos();
var checkIdentifierEnd = scanner.getTextPos();
var identifierName = parseIdentifierName();
- if (token === 102) {
+ if (token === 111) {
node.propertyName = identifierName;
- parseExpected(102);
+ parseExpected(111);
checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier();
checkIdentifierStart = scanner.getTokenPos();
checkIdentifierEnd = scanner.getTextPos();
@@ -7965,10 +7991,10 @@ var ts;
case 70:
case 83:
return true;
- case 105:
+ case 104:
return isLetDeclaration();
case 69:
- case 104:
+ case 103:
case 77:
case 123:
return lookAhead(nextTokenIsIdentifierOrKeyword);
@@ -7979,10 +8005,10 @@ var ts;
case 78:
return lookAhead(nextTokenCanFollowExportKeyword);
case 115:
- case 109:
- case 107:
case 108:
- case 110:
+ case 106:
+ case 107:
+ case 109:
return lookAhead(nextTokenIsDeclarationStart);
case 52:
return !followsModifier;
@@ -8014,7 +8040,7 @@ var ts;
return isDeclarationStart(true);
}
function nextTokenIsAsKeyword() {
- return nextToken() === 102;
+ return nextToken() === 111;
}
function parseDeclaration() {
var fullStart = getNodePos();
@@ -8031,14 +8057,14 @@ var ts;
}
switch (token) {
case 98:
- case 105:
+ case 104:
case 70:
return parseVariableStatement(fullStart, decorators, modifiers);
case 83:
return parseFunctionDeclaration(fullStart, decorators, modifiers);
case 69:
return parseClassDeclaration(fullStart, decorators, modifiers);
- case 104:
+ case 103:
return parseInterfaceDeclaration(fullStart, decorators, modifiers);
case 123:
return parseTypeAliasDeclaration(fullStart, decorators, modifiers);
@@ -11053,12 +11079,13 @@ var ts;
return result;
}
function getPropertiesOfType(type) {
- if (type.flags & 16384) {
- return getPropertiesOfUnionType(type);
- }
- return getPropertiesOfObjectType(getApparentType(type));
+ type = getApparentType(type);
+ return type.flags & 16384 ? getPropertiesOfUnionType(type) : getPropertiesOfObjectType(type);
}
function getApparentType(type) {
+ if (type.flags & 16384) {
+ type = getReducedTypeOfUnionType(type);
+ }
if (type.flags & 512) {
do {
type = getConstraintOfTypeParameter(type);
@@ -11127,28 +11154,27 @@ var ts;
return property;
}
function getPropertyOfType(type, name) {
+ type = getApparentType(type);
+ if (type.flags & 48128) {
+ var resolved = resolveObjectOrUnionTypeMembers(type);
+ if (ts.hasProperty(resolved.members, name)) {
+ var symbol = resolved.members[name];
+ if (symbolIsValue(symbol)) {
+ return symbol;
+ }
+ }
+ if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
+ var symbol = getPropertyOfObjectType(globalFunctionType, name);
+ if (symbol) {
+ return symbol;
+ }
+ }
+ return getPropertyOfObjectType(globalObjectType, name);
+ }
if (type.flags & 16384) {
return getPropertyOfUnionType(type, name);
}
- if (!(type.flags & 48128)) {
- type = getApparentType(type);
- if (!(type.flags & 48128)) {
- return undefined;
- }
- }
- var resolved = resolveObjectOrUnionTypeMembers(type);
- if (ts.hasProperty(resolved.members, name)) {
- var symbol = resolved.members[name];
- if (symbolIsValue(symbol)) {
- return symbol;
- }
- }
- if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
- var symbol = getPropertyOfObjectType(globalFunctionType, name);
- if (symbol)
- return symbol;
- }
- return getPropertyOfObjectType(globalObjectType, name);
+ return undefined;
}
function getSignaturesOfObjectOrUnionType(type, kind) {
if (type.flags & (48128 | 16384)) {
@@ -11654,9 +11680,16 @@ var ts;
if (!type) {
type = unionTypes[id] = createObjectType(16384 | getWideningFlagsOfTypes(sortedTypes));
type.types = sortedTypes;
+ type.reducedType = noSubtypeReduction ? undefined : type;
}
return type;
}
+ function getReducedTypeOfUnionType(type) {
+ if (!type.reducedType) {
+ type.reducedType = getUnionType(type.types, false);
+ }
+ return type.reducedType;
+ }
function getTypeFromUnionTypeNode(node) {
var links = getNodeLinks(node);
if (!links.resolvedType) {
@@ -14513,7 +14546,7 @@ var ts;
}
function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) {
ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node));
- var hasGrammarError = checkGrammarFunctionLikeDeclaration(node);
+ var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node);
if (!hasGrammarError && node.kind === 162) {
checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node);
}
@@ -14550,7 +14583,7 @@ var ts;
}
function checkFunctionExpressionOrObjectLiteralMethodBody(node) {
ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node));
- if (node.type) {
+ if (node.type && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
if (node.body) {
@@ -15021,6 +15054,7 @@ var ts;
return type;
}
function checkExpression(node, contextualMapper) {
+ checkGrammarIdentifierInStrictMode(node);
return checkExpressionOrQualifiedName(node, contextualMapper);
}
function checkExpressionOrQualifiedName(node, contextualMapper) {
@@ -15115,6 +15149,7 @@ var ts;
return unknownType;
}
function checkTypeParameter(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
if (node.expression) {
grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected);
}
@@ -15317,9 +15352,11 @@ var ts;
checkDecorators(node);
}
function checkTypeReferenceNode(node) {
+ checkGrammarTypeReferenceInStrictMode(node.typeName);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkHeritageClauseElement(node) {
+ checkGrammarHeritageClauseElementInStrictMode(node.expression);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkTypeReferenceOrHeritageClauseElement(node) {
@@ -15722,6 +15759,7 @@ var ts;
}
}
function checkFunctionLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSignatureDeclaration(node);
if (node.name && node.name.kind === 127) {
@@ -15741,7 +15779,7 @@ var ts;
}
}
checkSourceElement(node.body);
- if (node.type && !isAccessor(node.kind)) {
+ if (node.type && !isAccessor(node.kind) && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) {
@@ -15907,6 +15945,7 @@ var ts;
}
}
function checkVariableLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSourceElement(node.type);
if (node.name.kind === 127) {
@@ -16091,7 +16130,10 @@ var ts;
return checkElementTypeOfArrayOrString(inputType, errorNode);
}
if (isArrayLikeType(inputType)) {
- return getIndexTypeOfType(inputType, 1);
+ var indexType = getIndexTypeOfType(inputType, 1);
+ if (indexType) {
+ return indexType;
+ }
}
error(errorNode, ts.Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType));
return unknownType;
@@ -16430,6 +16472,7 @@ var ts;
return unknownType;
}
function checkClassDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
if (node.parent.kind !== 206 && node.parent.kind !== 227) {
grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration);
}
@@ -16618,7 +16661,7 @@ var ts;
return ok;
}
function checkInterfaceDeclaration(node) {
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
checkTypeParameters(node.typeParameters);
if (produceDiagnostics) {
checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0);
@@ -16804,7 +16847,7 @@ var ts;
if (!produceDiagnostics) {
return;
}
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
@@ -16857,7 +16900,7 @@ var ts;
}
function checkModuleDeclaration(node) {
if (produceDiagnostics) {
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
+ if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
if (!ts.isInAmbientContext(node) && node.name.kind === 8) {
grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names);
}
@@ -16946,7 +16989,7 @@ var ts;
checkAliasSymbol(node);
}
function checkImportDeclaration(node) {
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) {
+ if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) {
grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers);
}
if (checkExternalImportOrExportDeclaration(node)) {
@@ -16967,7 +17010,7 @@ var ts;
}
}
function checkImportEqualsDeclaration(node) {
- checkGrammarDecorators(node) || checkGrammarModifiers(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node);
if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) {
checkImportBinding(node);
if (node.flags & 1) {
@@ -17268,6 +17311,8 @@ var ts;
if (!(links.flags & 1)) {
checkGrammarSourceFile(node);
emitExtends = false;
+ emitDecorate = false;
+ emitParam = false;
potentialThisCollisions.length = 0;
ts.forEach(node.statements, checkSourceElement);
checkFunctionExpressionBodies(node);
@@ -18075,6 +18120,105 @@ var ts;
}
anyArrayType = createArrayType(anyType);
}
+ function isReservedwordInStrictMode(node) {
+ return (node.parserContextFlags & 1) &&
+ (node.originalKeywordKind >= 102 && node.originalKeywordKind <= 110);
+ }
+ function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) {
+ if (ts.getAncestor(identifier, 201) || ts.getAncestor(identifier, 174)) {
+ return grammarErrorOnNode(identifier, message, arg0);
+ }
+ return false;
+ }
+ function checkGrammarImportDeclarationNameInStrictMode(node) {
+ if (node.importClause) {
+ var impotClause = node.importClause;
+ if (impotClause.namedBindings) {
+ var nameBindings = impotClause.namedBindings;
+ if (nameBindings.kind === 211) {
+ var name_11 = nameBindings.name;
+ if (name_11.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_11);
+ return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ else if (nameBindings.kind === 212) {
+ var reportError = false;
+ for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) {
+ var element = _a[_i];
+ var name_12 = element.name;
+ if (name_12.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_12);
+ reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return reportError;
+ }
+ }
+ }
+ return false;
+ }
+ function checkGrammarDeclarationNameInStrictMode(node) {
+ var name = node.name;
+ if (name && name.kind === 65 && isReservedwordInStrictMode(name)) {
+ var nameText = ts.declarationNameToString(name);
+ switch (node.kind) {
+ case 129:
+ case 198:
+ case 200:
+ case 128:
+ case 152:
+ case 202:
+ case 203:
+ case 204:
+ return checkGrammarIdentifierInStrictMode(name);
+ case 201:
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText);
+ case 205:
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ case 208:
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return false;
+ }
+ function checkGrammarTypeReferenceInStrictMode(typeName) {
+ if (typeName.kind === 65) {
+ checkGrammarTypeNameInStrictMode(typeName);
+ }
+ else if (typeName.kind === 126) {
+ checkGrammarTypeNameInStrictMode(typeName.right);
+ checkGrammarTypeReferenceInStrictMode(typeName.left);
+ }
+ }
+ function checkGrammarHeritageClauseElementInStrictMode(expression) {
+ if (expression && expression.kind === 65) {
+ return checkGrammarIdentifierInStrictMode(expression);
+ }
+ else if (expression && expression.kind === 155) {
+ checkGrammarHeritageClauseElementInStrictMode(expression.expression);
+ }
+ }
+ function checkGrammarIdentifierInStrictMode(node, nameText) {
+ if (node && node.kind === 65 && isReservedwordInStrictMode(node)) {
+ if (!nameText) {
+ nameText = ts.declarationNameToString(node);
+ }
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
+ function checkGrammarTypeNameInStrictMode(node) {
+ if (node && node.kind === 65 && isReservedwordInStrictMode(node)) {
+ var nameText = ts.declarationNameToString(node);
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
function checkGrammarDecorators(node) {
if (!node.decorators) {
return false;
@@ -18127,14 +18271,14 @@ var ts;
for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) {
var modifier = _a[_i];
switch (modifier.kind) {
- case 109:
case 108:
case 107:
+ case 106:
var text = void 0;
- if (modifier.kind === 109) {
+ if (modifier.kind === 108) {
text = "public";
}
- else if (modifier.kind === 108) {
+ else if (modifier.kind === 107) {
text = "protected";
lastProtected = modifier;
}
@@ -18153,7 +18297,7 @@ var ts;
}
flags |= ts.modifierToFlag(modifier.kind);
break;
- case 110:
+ case 109:
if (flags & 128) {
return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static");
}
@@ -18383,7 +18527,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103);
+ ts.Debug.assert(heritageClause.token === 102);
if (seenImplementsClause) {
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen);
}
@@ -18405,7 +18549,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103);
+ ts.Debug.assert(heritageClause.token === 102);
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause);
}
checkGrammarHeritageClause(heritageClause);
@@ -18444,17 +18588,17 @@ var ts;
var inStrictMode = (node.parserContextFlags & 1) !== 0;
for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {
var prop = _a[_i];
- var name_11 = prop.name;
+ var name_13 = prop.name;
if (prop.kind === 175 ||
- name_11.kind === 127) {
- checkGrammarComputedPropertyName(name_11);
+ name_13.kind === 127) {
+ checkGrammarComputedPropertyName(name_13);
continue;
}
var currentKind = void 0;
if (prop.kind === 224 || prop.kind === 225) {
checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional);
- if (name_11.kind === 7) {
- checkGrammarNumbericLiteral(name_11);
+ if (name_13.kind === 7) {
+ checkGrammarNumbericLiteral(name_13);
}
currentKind = Property;
}
@@ -18470,26 +18614,26 @@ var ts;
else {
ts.Debug.fail("Unexpected syntax kind:" + prop.kind);
}
- if (!ts.hasProperty(seen, name_11.text)) {
- seen[name_11.text] = currentKind;
+ if (!ts.hasProperty(seen, name_13.text)) {
+ seen[name_13.text] = currentKind;
}
else {
- var existingKind = seen[name_11.text];
+ var existingKind = seen[name_13.text];
if (currentKind === Property && existingKind === Property) {
if (inStrictMode) {
- grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
+ grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
}
}
else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) {
if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) {
- seen[name_11.text] = currentKind | existingKind;
+ seen[name_13.text] = currentKind | existingKind;
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
}
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
}
}
}
@@ -18808,12 +18952,11 @@ var ts;
var identifier = name;
if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) {
var nameText = ts.declarationNameToString(identifier);
- if (ts.getAncestor(name, 201) || ts.getAncestor(name, 174)) {
- return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
- }
- else {
+ var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
+ if (!reportErrorInClassDeclaration) {
return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText);
}
+ return reportErrorInClassDeclaration;
}
}
}
@@ -19262,9 +19405,9 @@ var ts;
}
var count = 0;
while (true) {
- var name_12 = baseName + "_" + (++count);
- if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) {
- return name_12;
+ var name_14 = baseName + "_" + (++count);
+ if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) {
+ return name_14;
}
}
}
@@ -20346,9 +20489,9 @@ var ts;
var count = tempFlags & 268435455;
tempFlags++;
if (count !== 8 && count !== 13) {
- var name_13 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26);
- if (isUniqueName(name_13)) {
- return name_13;
+ var name_15 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26);
+ if (isUniqueName(name_15)) {
+ return name_15;
}
}
}
@@ -20376,8 +20519,8 @@ var ts;
}
function generateNameForModuleOrEnum(node) {
if (node.name.kind === 65) {
- var name_14 = node.name.text;
- assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14));
+ var name_16 = node.name.text;
+ assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16));
}
}
function generateNameForImportOrExportDeclaration(node) {
@@ -20557,8 +20700,8 @@ var ts;
if (scopeName) {
var parentIndex = getSourceMapNameIndex();
if (parentIndex !== -1) {
- var name_15 = node.name;
- if (!name_15 || name_15.kind !== 127) {
+ var name_17 = node.name;
+ if (!name_17 || name_17.kind !== 127) {
scopeName = "." + scopeName;
}
scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName;
@@ -20585,9 +20728,9 @@ var ts;
node.kind === 201 ||
node.kind === 204) {
if (node.name) {
- var name_16 = node.name;
- scopeName = name_16.kind === 127
- ? ts.getTextOfNode(name_16)
+ var name_18 = node.name;
+ scopeName = name_18.kind === 127
+ ? ts.getTextOfNode(name_18)
: node.name.text;
}
recordScopeNameStart(scopeName);
@@ -21000,6 +21143,7 @@ var ts;
default:
return -1;
}
+ case 172:
case 170:
return -1;
default:
@@ -21171,6 +21315,16 @@ var ts;
write("...");
emit(node.expression);
}
+ function emitYieldExpression(node) {
+ write(ts.tokenToString(110));
+ if (node.asteriskToken) {
+ write("*");
+ }
+ if (node.expression) {
+ write(" ");
+ emit(node.expression);
+ }
+ }
function needsParenthesisForPropertyAccessOrInvocation(node) {
switch (node.kind) {
case 65:
@@ -21412,6 +21566,9 @@ var ts;
write("]");
}
function emitMethod(node) {
+ if (languageVersion >= 2 && node.asteriskToken) {
+ write("*");
+ }
emit(node.name, false);
if (languageVersion < 2) {
write(": function ");
@@ -21783,7 +21940,7 @@ var ts;
var tokenKind = 98;
if (decl && languageVersion >= 2) {
if (ts.isLet(decl)) {
- tokenKind = 105;
+ tokenKind = 104;
}
else if (ts.isConst(decl)) {
tokenKind = 70;
@@ -21796,7 +21953,7 @@ var ts;
switch (tokenKind) {
case 98:
return write("var ");
- case 105:
+ case 104:
return write("let ");
case 70:
return write("const ");
@@ -22397,12 +22554,12 @@ var ts;
function emitParameter(node) {
if (languageVersion < 2) {
if (ts.isBindingPattern(node.name)) {
- var name_17 = createTempVariable(0);
+ var name_19 = createTempVariable(0);
if (!tempParameters) {
tempParameters = [];
}
- tempParameters.push(name_17);
- emit(name_17);
+ tempParameters.push(name_19);
+ emit(name_19);
}
else {
emit(node.name);
@@ -22521,7 +22678,11 @@ var ts;
write("default ");
}
}
- write("function ");
+ write("function");
+ if (languageVersion >= 2 && node.asteriskToken) {
+ write("*");
+ }
+ write(" ");
}
if (shouldEmitFunctionName(node)) {
emitDeclarationName(node);
@@ -22853,6 +23014,9 @@ var ts;
else if (member.kind === 137) {
write("set ");
}
+ if (member.asteriskToken) {
+ write("*");
+ }
emit(member.name);
emitSignatureAndBody(member);
emitEnd(member);
@@ -23818,8 +23982,8 @@ var ts;
else {
for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) {
var specifier = _d[_c];
- var name_18 = (specifier.propertyName || specifier.name).text;
- (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier);
+ var name_20 = (specifier.propertyName || specifier.name).text;
+ (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier);
}
}
break;
@@ -24130,6 +24294,8 @@ var ts;
return emitConditionalExpression(node);
case 173:
return emitSpreadElementExpression(node);
+ case 172:
+ return emitYieldExpression(node);
case 175:
return;
case 179:
@@ -25308,28 +25474,30 @@ var ts;
var rawItems = [];
ts.forEach(program.getSourceFiles(), function (sourceFile) {
cancellationToken.throwIfCancellationRequested();
- var declarations = sourceFile.getNamedDeclarations();
- for (var _i = 0; _i < declarations.length; _i++) {
- var declaration = declarations[_i];
- var name = getDeclarationName(declaration);
- if (name !== undefined) {
- var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name);
+ var nameToDeclarations = sourceFile.getNamedDeclarations();
+ for (var name_21 in nameToDeclarations) {
+ var declarations = ts.getProperty(nameToDeclarations, name_21);
+ if (declarations) {
+ var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_21);
if (!matches) {
continue;
}
- if (patternMatcher.patternContainsDots) {
- var containers = getContainers(declaration);
- if (!containers) {
- return undefined;
- }
- matches = patternMatcher.getMatches(containers, name);
- if (!matches) {
- continue;
+ for (var _i = 0; _i < declarations.length; _i++) {
+ var declaration = declarations[_i];
+ if (patternMatcher.patternContainsDots) {
+ var containers = getContainers(declaration);
+ if (!containers) {
+ return undefined;
+ }
+ matches = patternMatcher.getMatches(containers, name_21);
+ if (!matches) {
+ continue;
+ }
}
+ var fileName = sourceFile.fileName;
+ var matchKind = bestMatchKind(matches);
+ rawItems.push({ name: name_21, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
- var fileName = sourceFile.fileName;
- var matchKind = bestMatchKind(matches);
- rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
}
});
@@ -25349,25 +25517,13 @@ var ts;
}
return true;
}
- function getDeclarationName(declaration) {
- var result = getTextOfIdentifierOrLiteral(declaration.name);
- if (result !== undefined) {
- return result;
- }
- if (declaration.name.kind === 127) {
- var expr = declaration.name.expression;
- if (expr.kind === 155) {
- return expr.name.text;
- }
- return getTextOfIdentifierOrLiteral(expr);
- }
- return undefined;
- }
function getTextOfIdentifierOrLiteral(node) {
- if (node.kind === 65 ||
- node.kind === 8 ||
- node.kind === 7) {
- return node.text;
+ if (node) {
+ if (node.kind === 65 ||
+ node.kind === 8 ||
+ node.kind === 7) {
+ return node.text;
+ }
}
return undefined;
}
@@ -25670,9 +25826,9 @@ var ts;
case 198:
case 152:
var variableDeclarationNode;
- var name_19;
+ var name_22;
if (node.kind === 152) {
- name_19 = node.name;
+ name_22 = node.name;
variableDeclarationNode = node;
while (variableDeclarationNode && variableDeclarationNode.kind !== 198) {
variableDeclarationNode = variableDeclarationNode.parent;
@@ -25682,16 +25838,16 @@ var ts;
else {
ts.Debug.assert(!ts.isBindingPattern(node.name));
variableDeclarationNode = node;
- name_19 = node.name;
+ name_22 = node.name;
}
if (ts.isConst(variableDeclarationNode)) {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.constElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.constElement);
}
else if (ts.isLet(variableDeclarationNode)) {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.letElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.letElement);
}
else {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.variableElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.variableElement);
}
case 135:
return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement);
@@ -26283,7 +26439,8 @@ var ts;
var SignatureHelp;
(function (SignatureHelp) {
var emptyArray = [];
- function getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken) {
+ function getSignatureHelpItems(program, sourceFile, position, cancellationToken) {
+ var typeChecker = program.getTypeChecker();
var startingToken = ts.findTokenOnLeftOfPosition(sourceFile, position);
if (!startingToken) {
return undefined;
@@ -26295,12 +26452,51 @@ var ts;
}
var call = argumentInfo.invocation;
var candidates = [];
- var resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates);
+ var resolvedSignature = typeChecker.getResolvedSignature(call, candidates);
cancellationToken.throwIfCancellationRequested();
if (!candidates.length) {
+ if (ts.isJavaScript(sourceFile.fileName)) {
+ return createJavaScriptSignatureHelpItems(argumentInfo);
+ }
return undefined;
}
return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo);
+ function createJavaScriptSignatureHelpItems(argumentInfo) {
+ if (argumentInfo.invocation.kind !== 157) {
+ return undefined;
+ }
+ var callExpression = argumentInfo.invocation;
+ var expression = callExpression.expression;
+ var name = expression.kind === 65
+ ? expression
+ : expression.kind === 155
+ ? expression.name
+ : undefined;
+ if (!name || !name.text) {
+ return undefined;
+ }
+ var typeChecker = program.getTypeChecker();
+ for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
+ var sourceFile_1 = _a[_i];
+ var nameToDeclarations = sourceFile_1.getNamedDeclarations();
+ var declarations = ts.getProperty(nameToDeclarations, name.text);
+ if (declarations) {
+ for (var _b = 0; _b < declarations.length; _b++) {
+ var declaration = declarations[_b];
+ var symbol = declaration.symbol;
+ if (symbol) {
+ var type = typeChecker.getTypeOfSymbolAtLocation(symbol, declaration);
+ if (type) {
+ var callSignatures = type.getCallSignatures();
+ if (callSignatures && callSignatures.length) {
+ return createSignatureHelpItems(callSignatures, callSignatures[0], argumentInfo);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
function getImmediatelyContainingArgumentInfo(node) {
if (node.parent.kind === 157 || node.parent.kind === 158) {
var callExpression = node.parent;
@@ -26462,8 +26658,8 @@ var ts;
var isTypeParameterList = argumentListInfo.kind === 0;
var invocation = argumentListInfo.invocation;
var callTarget = ts.getInvokedExpression(invocation);
- var callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget);
- var callTargetDisplayParts = callTargetSymbol && ts.symbolToDisplayParts(typeInfoResolver, callTargetSymbol, undefined, undefined);
+ var callTargetSymbol = typeChecker.getSymbolAtLocation(callTarget);
+ var callTargetDisplayParts = callTargetSymbol && ts.symbolToDisplayParts(typeChecker, callTargetSymbol, undefined, undefined);
var items = ts.map(candidates, function (candidateSignature) {
var signatureHelpParameters;
var prefixDisplayParts = [];
@@ -26477,13 +26673,13 @@ var ts;
signatureHelpParameters = typeParameters && typeParameters.length > 0 ? ts.map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray;
suffixDisplayParts.push(ts.punctuationPart(25));
var parameterParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation);
});
suffixDisplayParts.push.apply(suffixDisplayParts, parameterParts);
}
else {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation);
});
prefixDisplayParts.push.apply(prefixDisplayParts, typeParameterParts);
prefixDisplayParts.push(ts.punctuationPart(16));
@@ -26492,7 +26688,7 @@ var ts;
suffixDisplayParts.push(ts.punctuationPart(17));
}
var returnTypeParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation);
});
suffixDisplayParts.push.apply(suffixDisplayParts, returnTypeParts);
return {
@@ -26520,7 +26716,7 @@ var ts;
};
function createSignatureHelpParameterForParameter(parameter) {
var displayParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation);
});
var isOptional = ts.hasQuestionToken(parameter.valueDeclaration);
return {
@@ -26532,7 +26728,7 @@ var ts;
}
function createSignatureHelpParameterForTypeParameter(typeParameter) {
var displayParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation);
});
return {
name: typeParameter.symbol.name,
@@ -26918,9 +27114,9 @@ var ts;
ts.isInsideTemplateLiteral = isInsideTemplateLiteral;
function isAccessibilityModifier(kind) {
switch (kind) {
- case 109:
- case 107:
case 108:
+ case 106:
+ case 107:
return true;
}
return false;
@@ -27110,6 +27306,10 @@ var ts;
});
}
ts.signatureToDisplayParts = signatureToDisplayParts;
+ function isJavaScript(fileName) {
+ return ts.fileExtensionIs(fileName, ".js");
+ }
+ ts.isJavaScript = isJavaScript;
})(ts || (ts = {}));
///
///
@@ -27538,7 +27738,7 @@ var ts;
this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(34, 39), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2));
this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 23), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8));
this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([98, 94, 88, 74, 90, 97]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2));
- this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([105, 70]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2));
+ this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([104, 70]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2));
this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8));
this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(83, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2));
this.NoSpaceBeforeOpenParenInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionDeclContext), 8));
@@ -27551,8 +27751,8 @@ var ts;
this.SpaceAfterBinaryKeywordOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.BinaryKeywordOperators, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2));
this.NoSpaceAfterConstructor = new formatting.Rule(formatting.RuleDescriptor.create1(114, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8));
this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([117, 118]), 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8));
- this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69, 115, 77, 78, 79, 116, 103, 85, 104, 117, 107, 109, 120, 110]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2));
- this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79, 103])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2));
+ this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69, 115, 77, 78, 79, 116, 102, 85, 103, 117, 106, 108, 120, 109]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2));
+ this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79, 102])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2));
this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(8, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2));
this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(32, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2));
this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(21, 65), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8));
@@ -27565,7 +27765,7 @@ var ts;
this.NoSpaceBetweenEmptyInterfaceBraceBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(14, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsObjectTypeContext), 8));
this.SpaceBeforeAt = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 52), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2));
this.NoSpaceAfterAt = new formatting.Rule(formatting.RuleDescriptor.create3(52, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8));
- this.SpaceAfterDecorator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([65, 78, 73, 69, 110, 109, 107, 108, 116, 120, 18, 35])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsEndOfDecoratorContextOnSameLine), 2));
+ this.SpaceAfterDecorator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([65, 78, 73, 69, 109, 108, 106, 107, 116, 120, 18, 35])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsEndOfDecoratorContextOnSameLine), 2));
this.HighPriorityCommonRules =
[
this.IgnoreBeforeComment, this.IgnoreAfterLineComment,
@@ -27639,9 +27839,9 @@ var ts;
}
Rules.prototype.getRuleName = function (rule) {
var o = this;
- for (var name_20 in o) {
- if (o[name_20] === rule) {
- return name_20;
+ for (var name_23 in o) {
+ if (o[name_23] === rule) {
+ return name_23;
}
}
throw new Error("Unknown rule");
@@ -28453,7 +28653,7 @@ var ts;
}
switch (node.kind) {
case 201: return 69;
- case 202: return 104;
+ case 202: return 103;
case 200: return 83;
case 204: return 204;
case 136: return 116;
@@ -29772,26 +29972,62 @@ var ts;
return this.namedDeclarations;
};
SourceFileObject.prototype.computeNamedDeclarations = function () {
- var namedDeclarations = [];
+ var result = {};
ts.forEachChild(this, visit);
- return namedDeclarations;
+ return result;
+ function addDeclaration(declaration) {
+ var name = getDeclarationName(declaration);
+ if (name) {
+ var declarations = getDeclarations(name);
+ declarations.push(declaration);
+ }
+ }
+ function getDeclarations(name) {
+ return ts.getProperty(result, name) || (result[name] = []);
+ }
+ function getDeclarationName(declaration) {
+ if (declaration.name) {
+ var result_2 = getTextOfIdentifierOrLiteral(declaration.name);
+ if (result_2 !== undefined) {
+ return result_2;
+ }
+ if (declaration.name.kind === 127) {
+ var expr = declaration.name.expression;
+ if (expr.kind === 155) {
+ return expr.name.text;
+ }
+ return getTextOfIdentifierOrLiteral(expr);
+ }
+ }
+ return undefined;
+ }
+ function getTextOfIdentifierOrLiteral(node) {
+ if (node) {
+ if (node.kind === 65 ||
+ node.kind === 8 ||
+ node.kind === 7) {
+ return node.text;
+ }
+ }
+ return undefined;
+ }
function visit(node) {
switch (node.kind) {
case 200:
case 134:
case 133:
var functionDeclaration = node;
- if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) {
- var lastDeclaration = namedDeclarations.length > 0 ?
- namedDeclarations[namedDeclarations.length - 1] :
- undefined;
- if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) {
+ var declarationName = getDeclarationName(functionDeclaration);
+ if (declarationName) {
+ var declarations = getDeclarations(declarationName);
+ var lastDeclaration = ts.lastOrUndefined(declarations);
+ if (lastDeclaration && functionDeclaration.parent === lastDeclaration.parent && functionDeclaration.symbol === lastDeclaration.symbol) {
if (functionDeclaration.body && !lastDeclaration.body) {
- namedDeclarations[namedDeclarations.length - 1] = functionDeclaration;
+ declarations[declarations.length - 1] = functionDeclaration;
}
}
else {
- namedDeclarations.push(functionDeclaration);
+ declarations.push(functionDeclaration);
}
ts.forEachChild(node, visit);
}
@@ -29810,9 +30046,7 @@ var ts;
case 136:
case 137:
case 145:
- if (node.name) {
- namedDeclarations.push(node);
- }
+ addDeclaration(node);
case 135:
case 180:
case 199:
@@ -29839,7 +30073,7 @@ var ts;
case 226:
case 132:
case 131:
- namedDeclarations.push(node);
+ addDeclaration(node);
break;
case 215:
if (node.exportClause) {
@@ -29850,11 +30084,11 @@ var ts;
var importClause = node.importClause;
if (importClause) {
if (importClause.name) {
- namedDeclarations.push(importClause);
+ addDeclaration(importClause);
}
if (importClause.namedBindings) {
if (importClause.namedBindings.kind === 211) {
- namedDeclarations.push(importClause.namedBindings);
+ addDeclaration(importClause.namedBindings);
}
else {
ts.forEach(importClause.namedBindings.elements, visit);
@@ -30340,7 +30574,7 @@ var ts;
}
else if (token === 35) {
token = scanner.scan();
- if (token === 102) {
+ if (token === 111) {
token = scanner.scan();
if (token === 65) {
token = scanner.scan();
@@ -30578,7 +30812,6 @@ var ts;
var syntaxTreeCache = new SyntaxTreeCache(host);
var ruleProvider;
var program;
- var typeInfoResolver;
var useCaseSensitivefileNames = false;
var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken());
if (!ts.localizedDiagnosticMessages && host.getLocalizedDiagnosticMessages) {
@@ -30636,7 +30869,7 @@ var ts;
}
}
program = newProgram;
- typeInfoResolver = program.getTypeChecker();
+ program.getTypeChecker();
return;
function getOrCreateSourceFile(fileName) {
var hostFileInformation = hostCache.getOrCreateEntry(fileName);
@@ -30676,9 +30909,6 @@ var ts;
return program;
}
function cleanupSemanticCache() {
- if (program) {
- typeInfoResolver = program.getTypeChecker();
- }
}
function dispose() {
if (program) {
@@ -30691,13 +30921,10 @@ var ts;
synchronizeHostData();
return program.getSyntacticDiagnostics(getValidSourceFile(fileName));
}
- function isJavaScript(fileName) {
- return ts.fileExtensionIs(fileName, ".js");
- }
function getSemanticDiagnostics(fileName) {
synchronizeHostData();
var targetSourceFile = getValidSourceFile(fileName);
- if (isJavaScript(fileName)) {
+ if (ts.isJavaScript(fileName)) {
return getJavaScriptSemanticDiagnostics(targetSourceFile);
}
var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile);
@@ -30731,7 +30958,7 @@ var ts;
break;
case 222:
var heritageClause = node;
- if (heritageClause.token === 103) {
+ if (heritageClause.token === 102) {
diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file));
return true;
}
@@ -30834,13 +31061,13 @@ var ts;
for (var _i = 0; _i < modifiers.length; _i++) {
var modifier = modifiers[_i];
switch (modifier.kind) {
- case 109:
- case 107:
case 108:
+ case 106:
+ case 107:
case 115:
diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind)));
return true;
- case 110:
+ case 109:
case 78:
case 70:
case 73:
@@ -30895,19 +31122,8 @@ var ts;
}
return ts.unescapeIdentifier(displayName);
}
- function createCompletionEntry(symbol, typeChecker, location) {
- var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, true);
- if (!displayName) {
- return undefined;
- }
- return {
- name: displayName,
- kind: getSymbolKind(symbol, typeChecker, location),
- kindModifiers: getSymbolModifiers(symbol),
- sortText: "0"
- };
- }
function getCompletionData(fileName, position) {
+ var typeChecker = program.getTypeChecker();
var syntacticStart = new Date().getTime();
var sourceFile = getValidSourceFile(fileName);
var start = new Date().getTime();
@@ -30963,23 +31179,23 @@ var ts;
isMemberCompletion = true;
isNewIdentifierLocation = false;
if (node.kind === 65 || node.kind === 126 || node.kind === 155) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (symbol && symbol.flags & 8388608) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
if (symbol && symbol.flags & 1952) {
- var exportedSymbols = typeInfoResolver.getExportsOfModule(symbol);
+ var exportedSymbols = typeChecker.getExportsOfModule(symbol);
ts.forEach(exportedSymbols, function (symbol) {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
}
}
- var type = typeInfoResolver.getTypeAtLocation(node);
+ var type = typeChecker.getTypeAtLocation(node);
if (type) {
ts.forEach(type.getApparentProperties(), function (symbol) {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
@@ -30990,11 +31206,11 @@ var ts;
if (containingObjectLiteral) {
isMemberCompletion = true;
isNewIdentifierLocation = true;
- var contextualType = typeInfoResolver.getContextualType(containingObjectLiteral);
+ var contextualType = typeChecker.getContextualType(containingObjectLiteral);
if (!contextualType) {
return false;
}
- var contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType);
+ var contextualTypeMembers = typeChecker.getPropertiesOfType(contextualType);
if (contextualTypeMembers && contextualTypeMembers.length > 0) {
symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties);
}
@@ -31007,9 +31223,9 @@ var ts;
ts.Debug.assert(importDeclaration !== undefined);
var exports_2;
if (importDeclaration.moduleSpecifier) {
- var moduleSpecifierSymbol = typeInfoResolver.getSymbolAtLocation(importDeclaration.moduleSpecifier);
+ var moduleSpecifierSymbol = typeChecker.getSymbolAtLocation(importDeclaration.moduleSpecifier);
if (moduleSpecifierSymbol) {
- exports_2 = typeInfoResolver.getExportsOfModule(moduleSpecifierSymbol);
+ exports_2 = typeChecker.getExportsOfModule(moduleSpecifierSymbol);
}
}
symbols = exports_2 ? filterModuleExports(exports_2, importDeclaration) : emptyArray;
@@ -31026,7 +31242,7 @@ var ts;
position;
var scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile;
var symbolMeanings = 793056 | 107455 | 1536 | 8388608;
- symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings);
+ symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings);
}
return true;
}
@@ -31083,9 +31299,9 @@ var ts;
return containingNodeKind === 171;
case 12:
return containingNodeKind === 176;
- case 109:
- case 107:
case 108:
+ case 106:
+ case 107:
return containingNodeKind === 132;
}
switch (previousToken.getText()) {
@@ -31172,6 +31388,7 @@ var ts;
containingNodeKind === 150;
case 22:
return containingNodeKind === 131 &&
+ previousToken.parent && previousToken.parent.parent &&
(previousToken.parent.parent.kind === 202 ||
previousToken.parent.parent.kind === 145);
case 24:
@@ -31179,27 +31396,28 @@ var ts;
containingNodeKind === 200 ||
containingNodeKind === 202 ||
isFunction(containingNodeKind);
- case 110:
+ case 109:
return containingNodeKind === 132;
case 21:
return containingNodeKind === 129 ||
containingNodeKind === 135 ||
- (previousToken.parent.parent.kind === 151);
- case 109:
- case 107:
+ (previousToken.parent && previousToken.parent.parent &&
+ previousToken.parent.parent.kind === 151);
case 108:
+ case 106:
+ case 107:
return containingNodeKind === 129;
case 69:
case 77:
- case 104:
+ case 103:
case 83:
case 98:
case 116:
case 120:
case 85:
- case 105:
+ case 104:
case 70:
- case 111:
+ case 110:
return true;
}
switch (previousToken.getText()) {
@@ -31272,7 +31490,7 @@ var ts;
}
var symbols = completionData.symbols, isMemberCompletion = completionData.isMemberCompletion, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, isRightOfDot = completionData.isRightOfDot;
var entries;
- if (isRightOfDot && isJavaScript(fileName)) {
+ if (isRightOfDot && ts.isJavaScript(fileName)) {
entries = getCompletionEntriesFromSymbols(symbols);
ts.addRange(entries, getJavaScriptCompletionEntries());
}
@@ -31293,10 +31511,10 @@ var ts;
for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
var sourceFile = _a[_i];
var nameTable = getNameTable(sourceFile);
- for (var name_21 in nameTable) {
- if (!allNames[name_21]) {
- allNames[name_21] = name_21;
- var displayName = getCompletionEntryDisplayName(name_21, target, true);
+ for (var name_24 in nameTable) {
+ if (!allNames[name_24]) {
+ allNames[name_24] = name_24;
+ var displayName = getCompletionEntryDisplayName(name_24, target, true);
if (displayName) {
var entry = {
name: displayName,
@@ -31311,6 +31529,18 @@ var ts;
}
return entries;
}
+ function createCompletionEntry(symbol, location) {
+ var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, true);
+ if (!displayName) {
+ return undefined;
+ }
+ return {
+ name: displayName,
+ kind: getSymbolKind(symbol, location),
+ kindModifiers: getSymbolModifiers(symbol),
+ sortText: "0"
+ };
+ }
function getCompletionEntriesFromSymbols(symbols) {
var start = new Date().getTime();
var entries = [];
@@ -31318,7 +31548,7 @@ var ts;
var nameToSymbol = {};
for (var _i = 0; _i < symbols.length; _i++) {
var symbol = symbols[_i];
- var entry = createCompletionEntry(symbol, typeInfoResolver, location);
+ var entry = createCompletionEntry(symbol, location);
if (entry) {
var id = ts.escapeIdentifier(entry.name);
if (!ts.lookUp(nameToSymbol, id)) {
@@ -31340,7 +31570,7 @@ var ts;
var target = program.getCompilerOptions().target;
var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayNameForSymbol(s, target, false) === entryName ? s : undefined; });
if (symbol) {
- var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, typeInfoResolver, location_2, 7);
+ var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, location_2, 7);
return {
name: entryName,
kind: displayPartsDocumentationsAndSymbolKind.symbolKind,
@@ -31362,7 +31592,7 @@ var ts;
}
return undefined;
}
- function getSymbolKind(symbol, typeResolver, location) {
+ function getSymbolKind(symbol, location) {
var flags = symbol.getFlags();
if (flags & 32)
return ScriptElementKind.classElement;
@@ -31374,7 +31604,7 @@ var ts;
return ScriptElementKind.interfaceElement;
if (flags & 262144)
return ScriptElementKind.typeParameterElement;
- var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location);
+ var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location);
if (result === ScriptElementKind.unknown) {
if (flags & 262144)
return ScriptElementKind.typeParameterElement;
@@ -31387,11 +31617,12 @@ var ts;
}
return result;
}
- function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location) {
- if (typeResolver.isUndefinedSymbol(symbol)) {
+ function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location) {
+ var typeChecker = program.getTypeChecker();
+ if (typeChecker.isUndefinedSymbol(symbol)) {
return ScriptElementKind.variableElement;
}
- if (typeResolver.isArgumentsSymbol(symbol)) {
+ if (typeChecker.isArgumentsSymbol(symbol)) {
return ScriptElementKind.localVariableElement;
}
if (flags & 3) {
@@ -31418,7 +31649,7 @@ var ts;
return ScriptElementKind.constructorImplementationElement;
if (flags & 4) {
if (flags & 268435456) {
- var unionPropertyKind = ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) {
+ var unionPropertyKind = ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) {
var rootSymbolFlags = rootSymbol.getFlags();
if (rootSymbolFlags & (98308 | 3)) {
return ScriptElementKind.memberVariableElement;
@@ -31426,7 +31657,7 @@ var ts;
ts.Debug.assert(!!(rootSymbolFlags & 8192));
});
if (!unionPropertyKind) {
- var typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location);
+ var typeOfUnionProperty = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (typeOfUnionProperty.getCallSignatures().length) {
return ScriptElementKind.memberFunctionElement;
}
@@ -31459,12 +31690,13 @@ var ts;
? ts.getNodeModifiers(symbol.declarations[0])
: ScriptElementKindModifier.none;
}
- function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, typeResolver, location, semanticMeaning) {
+ function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, location, semanticMeaning) {
if (semanticMeaning === void 0) { semanticMeaning = getMeaningFromLocation(location); }
+ var typeChecker = program.getTypeChecker();
var displayParts = [];
var documentation;
var symbolFlags = symbol.flags;
- var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location);
+ var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location);
var hasAddedSymbolInfo;
var type;
if (symbolKind !== ScriptElementKind.unknown || symbolFlags & 32 || symbolFlags & 8388608) {
@@ -31472,7 +31704,7 @@ var ts;
symbolKind = ScriptElementKind.memberVariableElement;
}
var signature;
- type = typeResolver.getTypeOfSymbolAtLocation(symbol, location);
+ type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (type) {
if (location.parent && location.parent.kind === 155) {
var right = location.parent.name;
@@ -31489,7 +31721,7 @@ var ts;
}
if (callExpression) {
var candidateSignatures = [];
- signature = typeResolver.getResolvedSignature(callExpression, candidateSignatures);
+ signature = typeChecker.getResolvedSignature(callExpression, candidateSignatures);
if (!signature && candidateSignatures.length) {
signature = candidateSignatures[0];
}
@@ -31530,7 +31762,7 @@ var ts;
displayParts.push(ts.spacePart());
}
if (!(type.flags & 32768)) {
- displayParts.push.apply(displayParts, ts.symbolToDisplayParts(typeResolver, type.symbol, enclosingDeclaration, undefined, 1));
+ displayParts.push.apply(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, undefined, 1));
}
addSignatureDisplayParts(signature, allSignatures, 8);
break;
@@ -31544,8 +31776,8 @@ var ts;
(location.kind === 114 && location.parent.kind === 135)) {
var functionDeclaration = location.parent;
var allSignatures = functionDeclaration.kind === 135 ? type.getConstructSignatures() : type.getCallSignatures();
- if (!typeResolver.isImplementationOfOverload(functionDeclaration)) {
- signature = typeResolver.getSignatureFromDeclaration(functionDeclaration);
+ if (!typeChecker.isImplementationOfOverload(functionDeclaration)) {
+ signature = typeChecker.getSignatureFromDeclaration(functionDeclaration);
}
else {
signature = allSignatures[0];
@@ -31571,7 +31803,7 @@ var ts;
}
if ((symbolFlags & 64) && (semanticMeaning & 2)) {
addNewLineIfDisplayPartsExist();
- displayParts.push(ts.keywordPart(104));
+ displayParts.push(ts.keywordPart(103));
displayParts.push(ts.spacePart());
addFullSymbolName(symbol);
writeTypeParametersOfSymbol(symbol, sourceFile);
@@ -31584,7 +31816,7 @@ var ts;
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53));
displayParts.push(ts.spacePart());
- displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
+ displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeChecker, typeChecker.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
}
if (symbolFlags & 384) {
addNewLineIfDisplayPartsExist();
@@ -31618,7 +31850,7 @@ var ts;
}
else {
var signatureDeclaration = ts.getDeclarationOfKind(symbol, 128).parent;
- var signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration);
+ var signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration);
if (signatureDeclaration.kind === 139) {
displayParts.push(ts.keywordPart(88));
displayParts.push(ts.spacePart());
@@ -31626,14 +31858,14 @@ var ts;
else if (signatureDeclaration.kind !== 138 && signatureDeclaration.name) {
addFullSymbolName(signatureDeclaration.symbol);
}
- displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, sourceFile, 32));
+ displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32));
}
}
if (symbolFlags & 8) {
addPrefixForAnyFunctionOrVar(symbol, "enum member");
var declaration = symbol.declarations[0];
if (declaration.kind === 226) {
- var constantValue = typeResolver.getConstantValue(declaration);
+ var constantValue = typeChecker.getConstantValue(declaration);
if (constantValue !== undefined) {
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53));
@@ -31660,7 +31892,7 @@ var ts;
displayParts.push(ts.punctuationPart(17));
}
else {
- var internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
+ var internalAliasSymbol = typeChecker.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
if (internalAliasSymbol) {
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53));
@@ -31683,12 +31915,12 @@ var ts;
displayParts.push(ts.spacePart());
if (type.symbol && type.symbol.flags & 262144) {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
else {
- displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, type, enclosingDeclaration));
+ displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeChecker, type, enclosingDeclaration));
}
}
else if (symbolFlags & 16 ||
@@ -31703,7 +31935,7 @@ var ts;
}
}
else {
- symbolKind = getSymbolKind(symbol, typeResolver, location);
+ symbolKind = getSymbolKind(symbol, location);
}
}
if (!documentation) {
@@ -31716,7 +31948,7 @@ var ts;
}
}
function addFullSymbolName(symbol, enclosingDeclaration) {
- var fullSymbolDisplayParts = ts.symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, undefined, 1 | 2);
+ var fullSymbolDisplayParts = ts.symbolToDisplayParts(typeChecker, symbol, enclosingDeclaration || sourceFile, undefined, 1 | 2);
displayParts.push.apply(displayParts, fullSymbolDisplayParts);
}
function addPrefixForAnyFunctionOrVar(symbol, symbolKind) {
@@ -31744,7 +31976,7 @@ var ts;
}
}
function addSignatureDisplayParts(signature, allSignatures, flags) {
- displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | 32));
+ displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeChecker, signature, enclosingDeclaration, flags | 32));
if (allSignatures.length > 1) {
displayParts.push(ts.spacePart());
displayParts.push(ts.punctuationPart(16));
@@ -31758,7 +31990,7 @@ var ts;
}
function writeTypeParametersOfSymbol(symbol, enclosingDeclaration) {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
@@ -31770,7 +32002,11 @@ var ts;
if (!node) {
return undefined;
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ if (isLabelName(node)) {
+ return undefined;
+ }
+ var typeChecker = program.getTypeChecker();
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (!symbol) {
switch (node.kind) {
case 65:
@@ -31778,20 +32014,20 @@ var ts;
case 126:
case 93:
case 91:
- var type = typeInfoResolver.getTypeAtLocation(node);
+ var type = typeChecker.getTypeAtLocation(node);
if (type) {
return {
kind: ScriptElementKind.unknown,
kindModifiers: ScriptElementKindModifier.none,
textSpan: ts.createTextSpan(node.getStart(), node.getWidth()),
- displayParts: ts.typeToDisplayParts(typeInfoResolver, type, getContainerNode(node)),
+ displayParts: ts.typeToDisplayParts(typeChecker, type, getContainerNode(node)),
documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined
};
}
}
return undefined;
}
- var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node);
+ var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), node);
return {
kind: displayPartsDocumentationsAndKind.symbolKind,
kindModifiers: getSymbolModifiers(symbol),
@@ -31837,33 +32073,34 @@ var ts;
}
return undefined;
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var typeChecker = program.getTypeChecker();
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (!symbol) {
return undefined;
}
if (symbol.flags & 8388608) {
var declaration = symbol.declarations[0];
if (node.kind === 65 && node.parent === declaration) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
}
if (node.parent.kind === 225) {
- var shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
+ var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
if (!shorthandSymbol) {
return [];
}
var shorthandDeclarations = shorthandSymbol.getDeclarations();
- var shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node);
- var shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol);
- var shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node);
+ var shorthandSymbolKind = getSymbolKind(shorthandSymbol, node);
+ var shorthandSymbolName = typeChecker.symbolToString(shorthandSymbol);
+ var shorthandContainerName = typeChecker.symbolToString(symbol.parent, node);
return ts.map(shorthandDeclarations, function (declaration) { return createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName); });
}
var result = [];
var declarations = symbol.getDeclarations();
- var symbolName = typeInfoResolver.symbolToString(symbol);
- var symbolKind = getSymbolKind(symbol, typeInfoResolver, node);
+ var symbolName = typeChecker.symbolToString(symbol);
+ var symbolKind = getSymbolKind(symbol, node);
var containerSymbol = symbol.parent;
- var containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : "";
+ var containerName = containerSymbol ? typeChecker.symbolToString(containerSymbol, node) : "";
if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) &&
!tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) {
ts.forEach(declarations, function (declaration) {
@@ -31913,7 +32150,7 @@ var ts;
var results = getOccurrencesAtPositionCore(fileName, position);
if (results) {
var sourceFile = getCanonicalFileName(ts.normalizeSlashes(fileName));
- results = ts.filter(results, function (r) { return r.fileName === fileName; });
+ results = ts.filter(results, function (r) { return getCanonicalFileName(ts.normalizeSlashes(r.fileName)) === sourceFile; });
}
return results;
}
@@ -32158,7 +32395,7 @@ var ts;
return undefined;
}
}
- else if (modifier === 110) {
+ else if (modifier === 109) {
if (container.kind !== 201) {
return undefined;
}
@@ -32204,13 +32441,13 @@ var ts;
return ts.map(keywords, getHighlightSpanForNode);
function getFlagFromModifier(modifier) {
switch (modifier) {
- case 109:
- return 16;
- case 107:
- return 32;
case 108:
+ return 16;
+ case 106:
+ return 32;
+ case 107:
return 64;
- case 110:
+ case 109:
return 128;
case 78:
return 1;
@@ -32453,6 +32690,7 @@ var ts;
return getReferencedSymbolsForNodes(node, program.getSourceFiles(), findInStrings, findInComments);
}
function getReferencedSymbolsForNodes(node, sourceFiles, findInStrings, findInComments) {
+ var typeChecker = program.getTypeChecker();
if (isLabelName(node)) {
if (isJumpStatementTarget(node)) {
var labelDefinition = getTargetLabel(node.parent, node.text);
@@ -32468,7 +32706,7 @@ var ts;
if (node.kind === 91) {
return getReferencesForSuperKeyword(node);
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (!symbol) {
return undefined;
}
@@ -32499,7 +32737,7 @@ var ts;
}
return result;
function getDefinition(symbol) {
- var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node);
+ var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), node);
var name = ts.map(info.displayParts, function (p) { return p.text; }).join("");
var declarations = symbol.declarations;
if (!declarations || declarations.length === 0) {
@@ -32533,7 +32771,7 @@ var ts;
if (isImportOrExportSpecifierName(location)) {
return location.getText();
}
- name = typeInfoResolver.symbolToString(symbol);
+ name = typeChecker.symbolToString(symbol);
return stripQuotes(name);
}
function getInternedName(symbol, location, declarations) {
@@ -32681,10 +32919,10 @@ var ts;
if (!(getMeaningFromLocation(referenceLocation) & searchMeaning)) {
return;
}
- var referenceSymbol = typeInfoResolver.getSymbolAtLocation(referenceLocation);
+ var referenceSymbol = typeChecker.getSymbolAtLocation(referenceLocation);
if (referenceSymbol) {
var referenceSymbolDeclaration = referenceSymbol.valueDeclaration;
- var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
+ var shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
var relatedSymbol = getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation);
if (relatedSymbol) {
var referencedSymbol = getReferencedSymbol(relatedSymbol);
@@ -32857,18 +33095,18 @@ var ts;
function populateSearchSymbolSet(symbol, location) {
var result = [symbol];
if (isImportOrExportSpecifierImportSymbol(symbol)) {
- result.push(typeInfoResolver.getAliasedSymbol(symbol));
+ result.push(typeChecker.getAliasedSymbol(symbol));
}
if (isNameOfPropertyAssignment(location)) {
ts.forEach(getPropertySymbolsFromContextualType(location), function (contextualSymbol) {
- result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol));
+ result.push.apply(result, typeChecker.getRootSymbols(contextualSymbol));
});
- var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent);
+ var shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(location.parent);
if (shorthandValueSymbol) {
result.push(shorthandValueSymbol);
}
}
- ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) {
+ ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) {
if (rootSymbol !== symbol) {
result.push(rootSymbol);
}
@@ -32893,9 +33131,9 @@ var ts;
return;
function getPropertySymbolFromTypeReference(typeReference) {
if (typeReference) {
- var type = typeInfoResolver.getTypeAtLocation(typeReference);
+ var type = typeChecker.getTypeAtLocation(typeReference);
if (type) {
- var propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName);
+ var propertySymbol = typeChecker.getPropertyOfType(type, propertyName);
if (propertySymbol) {
result.push(propertySymbol);
}
@@ -32909,24 +33147,24 @@ var ts;
return referenceSymbol;
}
if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) {
- var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol);
+ var aliasedSymbol = typeChecker.getAliasedSymbol(referenceSymbol);
if (searchSymbols.indexOf(aliasedSymbol) >= 0) {
return aliasedSymbol;
}
}
if (isNameOfPropertyAssignment(referenceLocation)) {
return ts.forEach(getPropertySymbolsFromContextualType(referenceLocation), function (contextualSymbol) {
- return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
+ return ts.forEach(typeChecker.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
});
}
- return ts.forEach(typeInfoResolver.getRootSymbols(referenceSymbol), function (rootSymbol) {
+ return ts.forEach(typeChecker.getRootSymbols(referenceSymbol), function (rootSymbol) {
if (searchSymbols.indexOf(rootSymbol) >= 0) {
return rootSymbol;
}
if (rootSymbol.parent && rootSymbol.parent.flags & (32 | 64)) {
- var result_2 = [];
- getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_2);
- return ts.forEach(result_2, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
+ var result_3 = [];
+ getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_3);
+ return ts.forEach(result_3, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
}
return undefined;
});
@@ -32934,27 +33172,27 @@ var ts;
function getPropertySymbolsFromContextualType(node) {
if (isNameOfPropertyAssignment(node)) {
var objectLiteral = node.parent.parent;
- var contextualType = typeInfoResolver.getContextualType(objectLiteral);
- var name_22 = node.text;
+ var contextualType = typeChecker.getContextualType(objectLiteral);
+ var name_25 = node.text;
if (contextualType) {
if (contextualType.flags & 16384) {
- var unionProperty = contextualType.getProperty(name_22);
+ var unionProperty = contextualType.getProperty(name_25);
if (unionProperty) {
return [unionProperty];
}
else {
- var result_3 = [];
+ var result_4 = [];
ts.forEach(contextualType.types, function (t) {
- var symbol = t.getProperty(name_22);
+ var symbol = t.getProperty(name_25);
if (symbol) {
- result_3.push(symbol);
+ result_4.push(symbol);
}
});
- return result_3;
+ return result_4;
}
}
else {
- var symbol_1 = contextualType.getProperty(name_22);
+ var symbol_1 = contextualType.getProperty(name_25);
if (symbol_1) {
return [symbol_1];
}
@@ -33104,7 +33342,7 @@ var ts;
}
if (!isLastClause && root.parent.kind === 177 && root.parent.parent.kind === 222) {
var decl = root.parent.parent.parent;
- return (decl.kind === 201 && root.parent.parent.token === 103) ||
+ return (decl.kind === 201 && root.parent.parent.token === 102) ||
(decl.kind === 202 && root.parent.parent.token === 79);
}
return false;
@@ -33158,7 +33396,7 @@ var ts;
function getSignatureHelpItems(fileName, position) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
- return ts.SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken);
+ return ts.SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken);
}
function getSourceFile(fileName) {
return syntaxTreeCache.getCurrentSourceFile(fileName);
@@ -33214,6 +33452,7 @@ var ts;
function getSemanticClassifications(fileName, span) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
+ var typeChecker = program.getTypeChecker();
var result = [];
processNode(sourceFile);
return result;
@@ -33252,7 +33491,7 @@ var ts;
function processNode(node) {
if (node && ts.textSpanIntersectsWith(span, node.getStart(), node.getWidth())) {
if (node.kind === 65 && node.getWidth() > 0) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (symbol) {
var type = classifySymbol(symbol, getMeaningFromLocation(node));
if (type) {
@@ -33576,9 +33815,10 @@ var ts;
function getRenameInfo(fileName, position) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
+ var typeChecker = program.getTypeChecker();
var node = ts.getTouchingWord(sourceFile, position);
if (node && node.kind === 65) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (symbol) {
var declarations = symbol.getDeclarations();
if (declarations && declarations.length > 0) {
@@ -33586,19 +33826,19 @@ var ts;
if (defaultLibFileName) {
for (var _i = 0; _i < declarations.length; _i++) {
var current = declarations[_i];
- var sourceFile_1 = current.getSourceFile();
- if (sourceFile_1 && getCanonicalFileName(ts.normalizePath(sourceFile_1.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) {
+ var sourceFile_2 = current.getSourceFile();
+ if (sourceFile_2 && getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) {
return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library.key));
}
}
}
- var kind = getSymbolKind(symbol, typeInfoResolver, node);
+ var kind = getSymbolKind(symbol, node);
if (kind) {
return {
canRename: true,
localizedErrorMessage: undefined,
displayName: symbol.name,
- fullDisplayName: typeInfoResolver.getFullyQualifiedName(symbol),
+ fullDisplayName: typeChecker.getFullyQualifiedName(symbol),
kind: kind,
kindModifiers: getSymbolModifiers(symbol),
triggerSpan: ts.createTextSpan(node.getStart(), node.getWidth())
@@ -33712,7 +33952,7 @@ var ts;
if (keyword2 === 116 ||
keyword2 === 120 ||
keyword2 === 114 ||
- keyword2 === 110) {
+ keyword2 === 109) {
return true;
}
return false;
@@ -34230,8 +34470,7 @@ var ts;
this.errorTimer = setTimeout(checkOne, ms);
}
};
- Session.prototype.getDefinition = function (_a) {
- var line = _a.line, offset = _a.offset, fileName = _a.file;
+ Session.prototype.getDefinition = function (line, offset, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34249,8 +34488,7 @@ var ts;
end: compilerService.host.positionToLineOffset(def.fileName, ts.textSpanEnd(def.textSpan))
}); });
};
- Session.prototype.getOccurrences = function (_a) {
- var line = _a.line, offset = _a.offset, fileName = _a.file;
+ Session.prototype.getOccurrences = function (line, offset, fileName) {
fileName = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(fileName);
if (!project) {
@@ -34274,8 +34512,7 @@ var ts;
};
});
};
- Session.prototype.getRenameLocations = function (_a) {
- var line = _a.line, offset = _a.offset, fileName = _a.file, findInComments = _a.findInComments, findInStrings = _a.findInStrings;
+ Session.prototype.getRenameLocations = function (line, offset, fileName, findInComments, findInStrings) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34336,8 +34573,7 @@ var ts;
}, []);
return { info: renameInfo, locs: bakedRenameLocs };
};
- Session.prototype.getReferences = function (_a) {
- var line = _a.line, offset = _a.offset, fileName = _a.file;
+ Session.prototype.getReferences = function (line, offset, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34377,13 +34613,11 @@ var ts;
symbolDisplayString: displayString
};
};
- Session.prototype.openClientFile = function (_a) {
- var fileName = _a.file;
+ Session.prototype.openClientFile = function (fileName) {
var file = ts.normalizePath(fileName);
this.projectService.openClientFile(file);
};
- Session.prototype.getQuickInfo = function (_a) {
- var line = _a.line, offset = _a.offset, fileName = _a.file;
+ Session.prototype.getQuickInfo = function (line, offset, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34406,8 +34640,7 @@ var ts;
documentation: docString
};
};
- Session.prototype.getFormattingEditsForRange = function (_a) {
- var line = _a.line, offset = _a.offset, endLine = _a.endLine, endOffset = _a.endOffset, fileName = _a.file;
+ Session.prototype.getFormattingEditsForRange = function (line, offset, endLine, endOffset, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34428,8 +34661,7 @@ var ts;
};
});
};
- Session.prototype.getFormattingEditsAfterKeystroke = function (_a) {
- var line = _a.line, offset = _a.offset, key = _a.key, fileName = _a.file;
+ Session.prototype.getFormattingEditsAfterKeystroke = function (line, offset, key, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34486,8 +34718,7 @@ var ts;
};
});
};
- Session.prototype.getCompletions = function (_a) {
- var line = _a.line, offset = _a.offset, prefix = _a.prefix, fileName = _a.file;
+ Session.prototype.getCompletions = function (line, offset, prefix, fileName) {
if (!prefix) {
prefix = "";
}
@@ -34509,8 +34740,7 @@ var ts;
return result;
}, []).sort(function (a, b) { return a.name.localeCompare(b.name); });
};
- Session.prototype.getCompletionEntryDetails = function (_a) {
- var line = _a.line, offset = _a.offset, entryNames = _a.entryNames, fileName = _a.file;
+ Session.prototype.getCompletionEntryDetails = function (line, offset, entryNames, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34526,8 +34756,7 @@ var ts;
return accum;
}, []);
};
- Session.prototype.getSignatureHelpItems = function (_a) {
- var line = _a.line, offset = _a.offset, fileName = _a.file;
+ Session.prototype.getSignatureHelpItems = function (line, offset, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34552,9 +34781,8 @@ var ts;
};
return result;
};
- Session.prototype.getDiagnostics = function (_a) {
+ Session.prototype.getDiagnostics = function (delay, fileNames) {
var _this = this;
- var delay = _a.delay, fileNames = _a.files;
var checkList = fileNames.reduce(function (accum, fileName) {
fileName = ts.normalizePath(fileName);
var project = _this.projectService.getProjectForFile(fileName);
@@ -34567,9 +34795,8 @@ var ts;
this.updateErrorCheck(checkList, this.changeSeq, function (n) { return n == _this.changeSeq; }, delay);
}
};
- Session.prototype.change = function (_a) {
+ Session.prototype.change = function (line, offset, endLine, endOffset, insertString, fileName) {
var _this = this;
- var line = _a.line, offset = _a.offset, endLine = _a.endLine, endOffset = _a.endOffset, insertString = _a.insertString, fileName = _a.file;
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (project) {
@@ -34583,9 +34810,8 @@ var ts;
this.updateProjectStructure(this.changeSeq, function (n) { return n == _this.changeSeq; });
}
};
- Session.prototype.reload = function (_a, reqSeq) {
+ Session.prototype.reload = function (fileName, tempFileName, reqSeq) {
var _this = this;
- var fileName = _a.file, tempFileName = _a.tmpfile;
if (reqSeq === void 0) { reqSeq = 0; }
var file = ts.normalizePath(fileName);
var tmpfile = ts.normalizePath(tempFileName);
@@ -34597,8 +34823,7 @@ var ts;
});
}
};
- Session.prototype.saveToTmp = function (_a) {
- var fileName = _a.file, tempFileName = _a.tmpfile;
+ Session.prototype.saveToTmp = function (fileName, tempFileName) {
var file = ts.normalizePath(fileName);
var tmpfile = ts.normalizePath(tempFileName);
var project = this.projectService.getProjectForFile(file);
@@ -34606,8 +34831,7 @@ var ts;
project.compilerService.host.saveTo(file, tmpfile);
}
};
- Session.prototype.closeClientFile = function (_a) {
- var fileName = _a.file;
+ Session.prototype.closeClientFile = function (fileName) {
var file = ts.normalizePath(fileName);
this.projectService.closeClientFile(file);
};
@@ -34628,8 +34852,7 @@ var ts;
childItems: _this.decorateNavigationBarItem(project, fileName, item.childItems)
}); });
};
- Session.prototype.getNavigationBarItems = function (_a) {
- var fileName = _a.file;
+ Session.prototype.getNavigationBarItems = function (fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34642,8 +34865,7 @@ var ts;
}
return this.decorateNavigationBarItem(project, fileName, items);
};
- Session.prototype.getNavigateToItems = function (_a) {
- var searchValue = _a.searchValue, fileName = _a.file, maxResultCount = _a.maxResultCount;
+ Session.prototype.getNavigateToItems = function (searchValue, fileName, maxResultCount) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34679,8 +34901,7 @@ var ts;
return bakedItem;
});
};
- Session.prototype.getBraceMatching = function (_a) {
- var line = _a.line, offset = _a.offset, fileName = _a.file;
+ Session.prototype.getBraceMatching = function (line, offset, fileName) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -34716,91 +34937,112 @@ var ts;
break;
}
case CommandNames.Definition: {
- response = this.getDefinition(request.arguments);
+ var defArgs = request.arguments;
+ response = this.getDefinition(defArgs.line, defArgs.offset, defArgs.file);
break;
}
case CommandNames.References: {
- response = this.getReferences(request.arguments);
+ var refArgs = request.arguments;
+ response = this.getReferences(refArgs.line, refArgs.offset, refArgs.file);
break;
}
case CommandNames.Rename: {
- response = this.getRenameLocations(request.arguments);
+ var renameArgs = request.arguments;
+ response = this.getRenameLocations(renameArgs.line, renameArgs.offset, renameArgs.file, renameArgs.findInComments, renameArgs.findInStrings);
break;
}
case CommandNames.Open: {
- this.openClientFile(request.arguments);
+ var openArgs = request.arguments;
+ this.openClientFile(openArgs.file);
responseRequired = false;
break;
}
case CommandNames.Quickinfo: {
- response = this.getQuickInfo(request.arguments);
+ var quickinfoArgs = request.arguments;
+ response = this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.offset, quickinfoArgs.file);
break;
}
case CommandNames.Format: {
- response = this.getFormattingEditsForRange(request.arguments);
+ var formatArgs = request.arguments;
+ response = this.getFormattingEditsForRange(formatArgs.line, formatArgs.offset, formatArgs.endLine, formatArgs.endOffset, formatArgs.file);
break;
}
case CommandNames.Formatonkey: {
- response = this.getFormattingEditsAfterKeystroke(request.arguments);
+ var formatOnKeyArgs = request.arguments;
+ response = this.getFormattingEditsAfterKeystroke(formatOnKeyArgs.line, formatOnKeyArgs.offset, formatOnKeyArgs.key, formatOnKeyArgs.file);
break;
}
case CommandNames.Completions: {
- response = this.getCompletions(request.arguments);
+ var completionsArgs = request.arguments;
+ response = this.getCompletions(completionsArgs.line, completionsArgs.offset, completionsArgs.prefix, completionsArgs.file);
break;
}
case CommandNames.CompletionDetails: {
- response = this.getCompletionEntryDetails(request.arguments);
+ var completionDetailsArgs = request.arguments;
+ response =
+ this.getCompletionEntryDetails(completionDetailsArgs.line, completionDetailsArgs.offset, completionDetailsArgs.entryNames, completionDetailsArgs.file);
break;
}
case CommandNames.SignatureHelp: {
- response = this.getSignatureHelpItems(request.arguments);
+ var signatureHelpArgs = request.arguments;
+ response = this.getSignatureHelpItems(signatureHelpArgs.line, signatureHelpArgs.offset, signatureHelpArgs.file);
break;
}
case CommandNames.Geterr: {
- this.getDiagnostics(request.arguments);
+ var geterrArgs = request.arguments;
+ response = this.getDiagnostics(geterrArgs.delay, geterrArgs.files);
responseRequired = false;
break;
}
case CommandNames.Change: {
- this.change(request.arguments);
+ var changeArgs = request.arguments;
+ this.change(changeArgs.line, changeArgs.offset, changeArgs.endLine, changeArgs.endOffset, changeArgs.insertString, changeArgs.file);
responseRequired = false;
break;
}
case CommandNames.Configure: {
- this.projectService.setHostConfiguration(request.arguments);
+ var configureArgs = request.arguments;
+ this.projectService.setHostConfiguration(configureArgs);
this.output(undefined, CommandNames.Configure, request.seq);
responseRequired = false;
break;
}
case CommandNames.Reload: {
- this.reload(request.arguments);
+ var reloadArgs = request.arguments;
+ this.reload(reloadArgs.file, reloadArgs.tmpfile, request.seq);
responseRequired = false;
break;
}
case CommandNames.Saveto: {
- this.saveToTmp(request.arguments);
+ var savetoArgs = request.arguments;
+ this.saveToTmp(savetoArgs.file, savetoArgs.tmpfile);
responseRequired = false;
break;
}
case CommandNames.Close: {
- this.closeClientFile(request.arguments);
+ var closeArgs = request.arguments;
+ this.closeClientFile(closeArgs.file);
responseRequired = false;
break;
}
case CommandNames.Navto: {
- response = this.getNavigateToItems(request.arguments);
+ var navtoArgs = request.arguments;
+ response = this.getNavigateToItems(navtoArgs.searchValue, navtoArgs.file, navtoArgs.maxResultCount);
break;
}
case CommandNames.Brace: {
- response = this.getBraceMatching(request.arguments);
+ var braceArguments = request.arguments;
+ response = this.getBraceMatching(braceArguments.line, braceArguments.offset, braceArguments.file);
break;
}
case CommandNames.NavBar: {
- response = this.getNavigationBarItems(request.arguments);
+ var navBarArgs = request.arguments;
+ response = this.getNavigationBarItems(navBarArgs.file);
break;
}
case CommandNames.Occurrences: {
- response = this.getOccurrences(request.arguments);
+ var _a = request.arguments, line = _a.line, offset = _a.offset, fileName = _a.file;
+ response = this.getOccurrences(line, offset, fileName);
break;
}
default: {
diff --git a/bin/typescript.d.ts b/bin/typescript.d.ts
index a16bff2a862..19f7ff11b4f 100644
--- a/bin/typescript.d.ts
+++ b/bin/typescript.d.ts
@@ -124,16 +124,16 @@ declare module "typescript" {
VoidKeyword = 99,
WhileKeyword = 100,
WithKeyword = 101,
- AsKeyword = 102,
- ImplementsKeyword = 103,
- InterfaceKeyword = 104,
- LetKeyword = 105,
- PackageKeyword = 106,
- PrivateKeyword = 107,
- ProtectedKeyword = 108,
- PublicKeyword = 109,
- StaticKeyword = 110,
- YieldKeyword = 111,
+ ImplementsKeyword = 102,
+ InterfaceKeyword = 103,
+ LetKeyword = 104,
+ PackageKeyword = 105,
+ PrivateKeyword = 106,
+ ProtectedKeyword = 107,
+ PublicKeyword = 108,
+ StaticKeyword = 109,
+ YieldKeyword = 110,
+ AsKeyword = 111,
AnyKeyword = 112,
BooleanKeyword = 113,
ConstructorKeyword = 114,
@@ -258,8 +258,8 @@ declare module "typescript" {
LastReservedWord = 101,
FirstKeyword = 66,
LastKeyword = 125,
- FirstFutureReservedWord = 103,
- LastFutureReservedWord = 111,
+ FirstFutureReservedWord = 102,
+ LastFutureReservedWord = 110,
FirstTypeNode = 141,
LastTypeNode = 149,
FirstPunctuation = 14,
@@ -310,6 +310,7 @@ declare module "typescript" {
}
interface Identifier extends PrimaryExpression {
text: string;
+ originalKeywordKind?: SyntaxKind;
}
interface QualifiedName extends Node {
left: EntityName;
@@ -1181,6 +1182,34 @@ declare module "typescript" {
function isIdentifierStart(ch: number, languageVersion: ScriptTarget): boolean;
function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean;
}
+declare module "typescript" {
+ function getDefaultLibFileName(options: CompilerOptions): string;
+ function textSpanEnd(span: TextSpan): number;
+ function textSpanIsEmpty(span: TextSpan): boolean;
+ function textSpanContainsPosition(span: TextSpan, position: number): boolean;
+ function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean;
+ function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean;
+ function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan;
+ function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean;
+ function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean;
+ function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean;
+ function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan;
+ function createTextSpan(start: number, length: number): TextSpan;
+ function createTextSpanFromBounds(start: number, end: number): TextSpan;
+ function textChangeRangeNewSpan(range: TextChangeRange): TextSpan;
+ function textChangeRangeIsUnchanged(range: TextChangeRange): boolean;
+ function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange;
+ let unchangedTextChangeRange: TextChangeRange;
+ /**
+ * Called to merge all the changes that occurred across several versions of a script snapshot
+ * into a single change. i.e. if a user keeps making successive edits to a script we will
+ * have a text change from V1 to V2, V2 to V3, ..., Vn.
+ *
+ * This function will then merge those changes into a single change range valid between V1 and
+ * Vn.
+ */
+ function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange;
+}
declare module "typescript" {
function getNodeConstructor(kind: SyntaxKind): new () => Node;
function createNode(kind: SyntaxKind): Node;
@@ -1260,7 +1289,6 @@ declare module "typescript" {
getDocumentationComment(): SymbolDisplayPart[];
}
interface SourceFile {
- getNamedDeclarations(): Declaration[];
getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
getLineStarts(): number[];
getPositionOfLineAndCharacter(line: number, character: number): number;
diff --git a/bin/typescript.js b/bin/typescript.js
index 1c749f0d94a..57271ad41ac 100644
--- a/bin/typescript.js
+++ b/bin/typescript.js
@@ -128,17 +128,17 @@ var ts;
SyntaxKind[SyntaxKind["WhileKeyword"] = 100] = "WhileKeyword";
SyntaxKind[SyntaxKind["WithKeyword"] = 101] = "WithKeyword";
// Strict mode reserved words
- SyntaxKind[SyntaxKind["AsKeyword"] = 102] = "AsKeyword";
- SyntaxKind[SyntaxKind["ImplementsKeyword"] = 103] = "ImplementsKeyword";
- SyntaxKind[SyntaxKind["InterfaceKeyword"] = 104] = "InterfaceKeyword";
- SyntaxKind[SyntaxKind["LetKeyword"] = 105] = "LetKeyword";
- SyntaxKind[SyntaxKind["PackageKeyword"] = 106] = "PackageKeyword";
- SyntaxKind[SyntaxKind["PrivateKeyword"] = 107] = "PrivateKeyword";
- SyntaxKind[SyntaxKind["ProtectedKeyword"] = 108] = "ProtectedKeyword";
- SyntaxKind[SyntaxKind["PublicKeyword"] = 109] = "PublicKeyword";
- SyntaxKind[SyntaxKind["StaticKeyword"] = 110] = "StaticKeyword";
- SyntaxKind[SyntaxKind["YieldKeyword"] = 111] = "YieldKeyword";
+ SyntaxKind[SyntaxKind["ImplementsKeyword"] = 102] = "ImplementsKeyword";
+ SyntaxKind[SyntaxKind["InterfaceKeyword"] = 103] = "InterfaceKeyword";
+ SyntaxKind[SyntaxKind["LetKeyword"] = 104] = "LetKeyword";
+ SyntaxKind[SyntaxKind["PackageKeyword"] = 105] = "PackageKeyword";
+ SyntaxKind[SyntaxKind["PrivateKeyword"] = 106] = "PrivateKeyword";
+ SyntaxKind[SyntaxKind["ProtectedKeyword"] = 107] = "ProtectedKeyword";
+ SyntaxKind[SyntaxKind["PublicKeyword"] = 108] = "PublicKeyword";
+ SyntaxKind[SyntaxKind["StaticKeyword"] = 109] = "StaticKeyword";
+ SyntaxKind[SyntaxKind["YieldKeyword"] = 110] = "YieldKeyword";
// Contextual keywords
+ SyntaxKind[SyntaxKind["AsKeyword"] = 111] = "AsKeyword";
SyntaxKind[SyntaxKind["AnyKeyword"] = 112] = "AnyKeyword";
SyntaxKind[SyntaxKind["BooleanKeyword"] = 113] = "BooleanKeyword";
SyntaxKind[SyntaxKind["ConstructorKeyword"] = 114] = "ConstructorKeyword";
@@ -280,8 +280,8 @@ var ts;
SyntaxKind[SyntaxKind["LastReservedWord"] = 101] = "LastReservedWord";
SyntaxKind[SyntaxKind["FirstKeyword"] = 66] = "FirstKeyword";
SyntaxKind[SyntaxKind["LastKeyword"] = 125] = "LastKeyword";
- SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 103] = "FirstFutureReservedWord";
- SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 111] = "LastFutureReservedWord";
+ SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 102] = "FirstFutureReservedWord";
+ SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 110] = "LastFutureReservedWord";
SyntaxKind[SyntaxKind["FirstTypeNode"] = 141] = "FirstTypeNode";
SyntaxKind[SyntaxKind["LastTypeNode"] = 149] = "LastTypeNode";
SyntaxKind[SyntaxKind["FirstPunctuation"] = 14] = "FirstPunctuation";
@@ -1308,10 +1308,6 @@ var ts;
"\u2029": "\\u2029",
"\u0085": "\\u0085" // nextLine
};
- function getDefaultLibFileName(options) {
- return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts";
- }
- ts.getDefaultLibFileName = getDefaultLibFileName;
function Symbol(flags, name) {
this.flags = flags;
this.name = name;
@@ -1809,6 +1805,12 @@ var ts;
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." },
Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." },
Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." },
Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." },
@@ -2176,7 +2178,7 @@ var ts;
(function (ts) {
var textToToken = {
"any": 112 /* AnyKeyword */,
- "as": 102 /* AsKeyword */,
+ "as": 111 /* AsKeyword */,
"boolean": 113 /* BooleanKeyword */,
"break": 66 /* BreakKeyword */,
"case": 67 /* CaseKeyword */,
@@ -2201,24 +2203,24 @@ var ts;
"function": 83 /* FunctionKeyword */,
"get": 116 /* GetKeyword */,
"if": 84 /* IfKeyword */,
- "implements": 103 /* ImplementsKeyword */,
+ "implements": 102 /* ImplementsKeyword */,
"import": 85 /* ImportKeyword */,
"in": 86 /* InKeyword */,
"instanceof": 87 /* InstanceOfKeyword */,
- "interface": 104 /* InterfaceKeyword */,
- "let": 105 /* LetKeyword */,
+ "interface": 103 /* InterfaceKeyword */,
+ "let": 104 /* LetKeyword */,
"module": 117 /* ModuleKeyword */,
"new": 88 /* NewKeyword */,
"null": 89 /* NullKeyword */,
"number": 119 /* NumberKeyword */,
- "package": 106 /* PackageKeyword */,
- "private": 107 /* PrivateKeyword */,
- "protected": 108 /* ProtectedKeyword */,
- "public": 109 /* PublicKeyword */,
+ "package": 105 /* PackageKeyword */,
+ "private": 106 /* PrivateKeyword */,
+ "protected": 107 /* ProtectedKeyword */,
+ "public": 108 /* PublicKeyword */,
"require": 118 /* RequireKeyword */,
"return": 90 /* ReturnKeyword */,
"set": 120 /* SetKeyword */,
- "static": 110 /* StaticKeyword */,
+ "static": 109 /* StaticKeyword */,
"string": 121 /* StringKeyword */,
"super": 91 /* SuperKeyword */,
"switch": 92 /* SwitchKeyword */,
@@ -2233,7 +2235,7 @@ var ts;
"void": 99 /* VoidKeyword */,
"while": 100 /* WhileKeyword */,
"with": 101 /* WithKeyword */,
- "yield": 111 /* YieldKeyword */,
+ "yield": 110 /* YieldKeyword */,
"of": 125 /* OfKeyword */,
"{": 14 /* OpenBraceToken */,
"}": 15 /* CloseBraceToken */,
@@ -4331,13 +4333,12 @@ var ts;
};
}
ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain;
- /* @internal */
function getSpanOfTokenAtPosition(sourceFile, pos) {
var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text);
scanner.setTextPos(pos);
scanner.scan();
var start = scanner.getTokenPos();
- return createTextSpanFromBounds(start, scanner.getTextPos());
+ return ts.createTextSpanFromBounds(start, scanner.getTextPos());
}
ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition;
function getErrorSpanForNode(sourceFile, node) {
@@ -4347,7 +4348,7 @@ var ts;
var pos_1 = ts.skipTrivia(sourceFile.text, 0, false);
if (pos_1 === sourceFile.text.length) {
// file is empty - return span for the beginning of the file
- return createTextSpan(0, 0);
+ return ts.createTextSpan(0, 0);
}
return getSpanOfTokenAtPosition(sourceFile, pos_1);
// This list is a work in progress. Add missing node kinds to improve their error
@@ -4373,7 +4374,7 @@ var ts;
var pos = nodeIsMissing(errorNode)
? errorNode.pos
: ts.skipTrivia(sourceFile.text, errorNode.pos);
- return createTextSpanFromBounds(pos, errorNode.end);
+ return ts.createTextSpanFromBounds(pos, errorNode.end);
}
ts.getErrorSpanForNode = getErrorSpanForNode;
function isExternalModule(file) {
@@ -4482,7 +4483,6 @@ var ts;
}
}
ts.forEachReturnStatement = forEachReturnStatement;
- /* @internal */
function isVariableLike(node) {
if (node) {
switch (node.kind) {
@@ -5027,7 +5027,7 @@ var ts;
}
ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement;
function getClassImplementsHeritageClauseElements(node) {
- var heritageClause = getHeritageClause(node.heritageClauses, 103 /* ImplementsKeyword */);
+ var heritageClause = getHeritageClause(node.heritageClauses, 102 /* ImplementsKeyword */);
return heritageClause ? heritageClause.types : undefined;
}
ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements;
@@ -5157,10 +5157,10 @@ var ts;
ts.isESSymbolIdentifier = isESSymbolIdentifier;
function isModifier(token) {
switch (token) {
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
- case 110 /* StaticKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
case 78 /* ExportKeyword */:
case 115 /* DeclareKeyword */:
case 70 /* ConstKeyword */:
@@ -5170,205 +5170,6 @@ var ts;
return false;
}
ts.isModifier = isModifier;
- function textSpanEnd(span) {
- return span.start + span.length;
- }
- ts.textSpanEnd = textSpanEnd;
- function textSpanIsEmpty(span) {
- return span.length === 0;
- }
- ts.textSpanIsEmpty = textSpanIsEmpty;
- function textSpanContainsPosition(span, position) {
- return position >= span.start && position < textSpanEnd(span);
- }
- ts.textSpanContainsPosition = textSpanContainsPosition;
- // Returns true if 'span' contains 'other'.
- function textSpanContainsTextSpan(span, other) {
- return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
- }
- ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
- function textSpanOverlapsWith(span, other) {
- var overlapStart = Math.max(span.start, other.start);
- var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
- return overlapStart < overlapEnd;
- }
- ts.textSpanOverlapsWith = textSpanOverlapsWith;
- function textSpanOverlap(span1, span2) {
- var overlapStart = Math.max(span1.start, span2.start);
- var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (overlapStart < overlapEnd) {
- return createTextSpanFromBounds(overlapStart, overlapEnd);
- }
- return undefined;
- }
- ts.textSpanOverlap = textSpanOverlap;
- function textSpanIntersectsWithTextSpan(span, other) {
- return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
- }
- ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
- function textSpanIntersectsWith(span, start, length) {
- var end = start + length;
- return start <= textSpanEnd(span) && end >= span.start;
- }
- ts.textSpanIntersectsWith = textSpanIntersectsWith;
- function textSpanIntersectsWithPosition(span, position) {
- return position <= textSpanEnd(span) && position >= span.start;
- }
- ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
- function textSpanIntersection(span1, span2) {
- var intersectStart = Math.max(span1.start, span2.start);
- var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (intersectStart <= intersectEnd) {
- return createTextSpanFromBounds(intersectStart, intersectEnd);
- }
- return undefined;
- }
- ts.textSpanIntersection = textSpanIntersection;
- function createTextSpan(start, length) {
- if (start < 0) {
- throw new Error("start < 0");
- }
- if (length < 0) {
- throw new Error("length < 0");
- }
- return { start: start, length: length };
- }
- ts.createTextSpan = createTextSpan;
- function createTextSpanFromBounds(start, end) {
- return createTextSpan(start, end - start);
- }
- ts.createTextSpanFromBounds = createTextSpanFromBounds;
- function textChangeRangeNewSpan(range) {
- return createTextSpan(range.span.start, range.newLength);
- }
- ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
- function textChangeRangeIsUnchanged(range) {
- return textSpanIsEmpty(range.span) && range.newLength === 0;
- }
- ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
- function createTextChangeRange(span, newLength) {
- if (newLength < 0) {
- throw new Error("newLength < 0");
- }
- return { span: span, newLength: newLength };
- }
- ts.createTextChangeRange = createTextChangeRange;
- ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
- /**
- * Called to merge all the changes that occurred across several versions of a script snapshot
- * into a single change. i.e. if a user keeps making successive edits to a script we will
- * have a text change from V1 to V2, V2 to V3, ..., Vn.
- *
- * This function will then merge those changes into a single change range valid between V1 and
- * Vn.
- */
- function collapseTextChangeRangesAcrossMultipleVersions(changes) {
- if (changes.length === 0) {
- return ts.unchangedTextChangeRange;
- }
- if (changes.length === 1) {
- return changes[0];
- }
- // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd }
- // as it makes things much easier to reason about.
- var change0 = changes[0];
- var oldStartN = change0.span.start;
- var oldEndN = textSpanEnd(change0.span);
- var newEndN = oldStartN + change0.newLength;
- for (var i = 1; i < changes.length; i++) {
- var nextChange = changes[i];
- // Consider the following case:
- // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting
- // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }.
- // i.e. the span starting at 30 with length 30 is increased to length 40.
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // -------------------------------------------------------------------------------------------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // -------------------------------------------------------------------------------------------------------
- // | \
- // | \
- // T2 | \
- // | \
- // | \
- // -------------------------------------------------------------------------------------------------------
- //
- // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial
- // it's just the min of the old and new starts. i.e.:
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // ------------------------------------------------------------*------------------------------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // ----------------------------------------$-------------------$------------------------------------------
- // . | \
- // . | \
- // T2 . | \
- // . | \
- // . | \
- // ----------------------------------------------------------------------*--------------------------------
- //
- // (Note the dots represent the newly inferrred start.
- // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the
- // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see
- // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that
- // means:
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // --------------------------------------------------------------------------------*----------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // ------------------------------------------------------------$------------------------------------------
- // . | \
- // . | \
- // T2 . | \
- // . | \
- // . | \
- // ----------------------------------------------------------------------*--------------------------------
- //
- // In other words (in this case), we're recognizing that the second edit happened after where the first edit
- // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started
- // that's the same as if we started at char 80 instead of 60.
- //
- // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter
- // than pusing the first edit forward to match the second, we'll push the second edit forward to match the
- // first.
- //
- // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange
- // semantics: { { start: 10, length: 70 }, newLength: 60 }
- //
- // The math then works out as follows.
- // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the
- // final result like so:
- //
- // {
- // oldStart3: Min(oldStart1, oldStart2),
- // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
- // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
- // }
- var oldStart1 = oldStartN;
- var oldEnd1 = oldEndN;
- var newEnd1 = newEndN;
- var oldStart2 = nextChange.span.start;
- var oldEnd2 = textSpanEnd(nextChange.span);
- var newEnd2 = oldStart2 + nextChange.newLength;
- oldStartN = Math.min(oldStart1, oldStart2);
- oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
- newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
- }
- return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
- }
- ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
function nodeStartsNewLexicalEnvironment(n) {
return isFunctionLike(n) || n.kind === 205 /* ModuleDeclaration */ || n.kind === 227 /* SourceFile */;
}
@@ -5385,7 +5186,6 @@ var ts;
return node;
}
ts.createSynthesizedNode = createSynthesizedNode;
- /* @internal */
function createDiagnosticCollection() {
var nonFileDiagnostics = [];
var fileDiagnostics = {};
@@ -5807,6 +5607,212 @@ var ts;
}
ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault;
})(ts || (ts = {}));
+var ts;
+(function (ts) {
+ function getDefaultLibFileName(options) {
+ return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts";
+ }
+ ts.getDefaultLibFileName = getDefaultLibFileName;
+ function textSpanEnd(span) {
+ return span.start + span.length;
+ }
+ ts.textSpanEnd = textSpanEnd;
+ function textSpanIsEmpty(span) {
+ return span.length === 0;
+ }
+ ts.textSpanIsEmpty = textSpanIsEmpty;
+ function textSpanContainsPosition(span, position) {
+ return position >= span.start && position < textSpanEnd(span);
+ }
+ ts.textSpanContainsPosition = textSpanContainsPosition;
+ // Returns true if 'span' contains 'other'.
+ function textSpanContainsTextSpan(span, other) {
+ return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
+ }
+ ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
+ function textSpanOverlapsWith(span, other) {
+ var overlapStart = Math.max(span.start, other.start);
+ var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
+ return overlapStart < overlapEnd;
+ }
+ ts.textSpanOverlapsWith = textSpanOverlapsWith;
+ function textSpanOverlap(span1, span2) {
+ var overlapStart = Math.max(span1.start, span2.start);
+ var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (overlapStart < overlapEnd) {
+ return createTextSpanFromBounds(overlapStart, overlapEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanOverlap = textSpanOverlap;
+ function textSpanIntersectsWithTextSpan(span, other) {
+ return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
+ }
+ ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
+ function textSpanIntersectsWith(span, start, length) {
+ var end = start + length;
+ return start <= textSpanEnd(span) && end >= span.start;
+ }
+ ts.textSpanIntersectsWith = textSpanIntersectsWith;
+ function textSpanIntersectsWithPosition(span, position) {
+ return position <= textSpanEnd(span) && position >= span.start;
+ }
+ ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
+ function textSpanIntersection(span1, span2) {
+ var intersectStart = Math.max(span1.start, span2.start);
+ var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (intersectStart <= intersectEnd) {
+ return createTextSpanFromBounds(intersectStart, intersectEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanIntersection = textSpanIntersection;
+ function createTextSpan(start, length) {
+ if (start < 0) {
+ throw new Error("start < 0");
+ }
+ if (length < 0) {
+ throw new Error("length < 0");
+ }
+ return { start: start, length: length };
+ }
+ ts.createTextSpan = createTextSpan;
+ function createTextSpanFromBounds(start, end) {
+ return createTextSpan(start, end - start);
+ }
+ ts.createTextSpanFromBounds = createTextSpanFromBounds;
+ function textChangeRangeNewSpan(range) {
+ return createTextSpan(range.span.start, range.newLength);
+ }
+ ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
+ function textChangeRangeIsUnchanged(range) {
+ return textSpanIsEmpty(range.span) && range.newLength === 0;
+ }
+ ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
+ function createTextChangeRange(span, newLength) {
+ if (newLength < 0) {
+ throw new Error("newLength < 0");
+ }
+ return { span: span, newLength: newLength };
+ }
+ ts.createTextChangeRange = createTextChangeRange;
+ ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
+ /**
+ * Called to merge all the changes that occurred across several versions of a script snapshot
+ * into a single change. i.e. if a user keeps making successive edits to a script we will
+ * have a text change from V1 to V2, V2 to V3, ..., Vn.
+ *
+ * This function will then merge those changes into a single change range valid between V1 and
+ * Vn.
+ */
+ function collapseTextChangeRangesAcrossMultipleVersions(changes) {
+ if (changes.length === 0) {
+ return ts.unchangedTextChangeRange;
+ }
+ if (changes.length === 1) {
+ return changes[0];
+ }
+ // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd }
+ // as it makes things much easier to reason about.
+ var change0 = changes[0];
+ var oldStartN = change0.span.start;
+ var oldEndN = textSpanEnd(change0.span);
+ var newEndN = oldStartN + change0.newLength;
+ for (var i = 1; i < changes.length; i++) {
+ var nextChange = changes[i];
+ // Consider the following case:
+ // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting
+ // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }.
+ // i.e. the span starting at 30 with length 30 is increased to length 40.
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // -------------------------------------------------------------------------------------------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // -------------------------------------------------------------------------------------------------------
+ // | \
+ // | \
+ // T2 | \
+ // | \
+ // | \
+ // -------------------------------------------------------------------------------------------------------
+ //
+ // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial
+ // it's just the min of the old and new starts. i.e.:
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // ------------------------------------------------------------*------------------------------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // ----------------------------------------$-------------------$------------------------------------------
+ // . | \
+ // . | \
+ // T2 . | \
+ // . | \
+ // . | \
+ // ----------------------------------------------------------------------*--------------------------------
+ //
+ // (Note the dots represent the newly inferrred start.
+ // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the
+ // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see
+ // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that
+ // means:
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // --------------------------------------------------------------------------------*----------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // ------------------------------------------------------------$------------------------------------------
+ // . | \
+ // . | \
+ // T2 . | \
+ // . | \
+ // . | \
+ // ----------------------------------------------------------------------*--------------------------------
+ //
+ // In other words (in this case), we're recognizing that the second edit happened after where the first edit
+ // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started
+ // that's the same as if we started at char 80 instead of 60.
+ //
+ // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter
+ // than pusing the first edit forward to match the second, we'll push the second edit forward to match the
+ // first.
+ //
+ // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange
+ // semantics: { { start: 10, length: 70 }, newLength: 60 }
+ //
+ // The math then works out as follows.
+ // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the
+ // final result like so:
+ //
+ // {
+ // oldStart3: Min(oldStart1, oldStart2),
+ // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
+ // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
+ // }
+ var oldStart1 = oldStartN;
+ var oldEnd1 = oldEndN;
+ var newEnd1 = newEndN;
+ var oldStart2 = nextChange.span.start;
+ var oldEnd2 = textSpanEnd(nextChange.span);
+ var newEnd2 = oldStart2 + nextChange.newLength;
+ oldStartN = Math.min(oldStart1, oldStart2);
+ oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
+ newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
+ }
+ return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
+ }
+ ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
+})(ts || (ts = {}));
///
///
var ts;
@@ -6183,10 +6189,10 @@ var ts;
;
function modifierToFlag(token) {
switch (token) {
- case 110 /* StaticKeyword */: return 128 /* Static */;
- case 109 /* PublicKeyword */: return 16 /* Public */;
- case 108 /* ProtectedKeyword */: return 64 /* Protected */;
- case 107 /* PrivateKeyword */: return 32 /* Private */;
+ case 109 /* StaticKeyword */: return 128 /* Static */;
+ case 108 /* PublicKeyword */: return 16 /* Public */;
+ case 107 /* ProtectedKeyword */: return 64 /* Protected */;
+ case 106 /* PrivateKeyword */: return 32 /* Private */;
case 78 /* ExportKeyword */: return 1 /* Export */;
case 115 /* DeclareKeyword */: return 2 /* Ambient */;
case 70 /* ConstKeyword */: return 8192 /* Const */;
@@ -6995,16 +7001,17 @@ var ts;
function tryParse(callback) {
return speculationHelper(callback, false);
}
+ // Ignore strict mode flag because we will report an error in type checker instead.
function isIdentifier() {
if (token === 65 /* Identifier */) {
return true;
}
// If we have a 'yield' keyword, and we're in the [yield] context, then 'yield' is
// considered a keyword and is not an identifier.
- if (token === 111 /* YieldKeyword */ && inYieldContext()) {
+ if (token === 110 /* YieldKeyword */ && inYieldContext()) {
return false;
}
- return inStrictModeContext() ? token > 111 /* LastFutureReservedWord */ : token > 101 /* LastReservedWord */;
+ return token > 101 /* LastReservedWord */;
}
function parseExpected(kind, diagnosticMessage) {
if (token === kind) {
@@ -7108,6 +7115,10 @@ var ts;
identifierCount++;
if (isIdentifier) {
var node = createNode(65 /* Identifier */);
+ // Store original token kind if it is not just an Identifier so we can report appropriate error later in type checker
+ if (token !== 65 /* Identifier */) {
+ node.originalKeywordKind = token;
+ }
node.text = internIdentifier(scanner.getTokenValue());
nextToken();
return finishNode(node);
@@ -7275,7 +7286,7 @@ var ts;
// extends {} extends
// extends {} implements
var next = nextToken();
- return next === 23 /* CommaToken */ || next === 14 /* OpenBraceToken */ || next === 79 /* ExtendsKeyword */ || next === 103 /* ImplementsKeyword */;
+ return next === 23 /* CommaToken */ || next === 14 /* OpenBraceToken */ || next === 79 /* ExtendsKeyword */ || next === 102 /* ImplementsKeyword */;
}
return true;
}
@@ -7284,7 +7295,7 @@ var ts;
return isIdentifier();
}
function isHeritageClauseExtendsOrImplementsKeyword() {
- if (token === 103 /* ImplementsKeyword */ ||
+ if (token === 102 /* ImplementsKeyword */ ||
token === 79 /* ExtendsKeyword */) {
return lookAhead(nextTokenIsStartOfExpression);
}
@@ -7314,12 +7325,12 @@ var ts;
case 4 /* SwitchClauseStatements */:
return token === 15 /* CloseBraceToken */ || token === 67 /* CaseKeyword */ || token === 73 /* DefaultKeyword */;
case 8 /* HeritageClauseElement */:
- return token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */;
+ return token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */;
case 9 /* VariableDeclarations */:
return isVariableDeclaratorListTerminator();
case 16 /* TypeParameters */:
// Tokens other than '>' are here for better error recovery
- return token === 25 /* GreaterThanToken */ || token === 16 /* OpenParenToken */ || token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */;
+ return token === 25 /* GreaterThanToken */ || token === 16 /* OpenParenToken */ || token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */;
case 12 /* ArgumentExpressions */:
// Tokens other than ')' are here for better error recovery
return token === 17 /* CloseParenToken */ || token === 22 /* SemicolonToken */;
@@ -8356,7 +8367,7 @@ var ts;
case 38 /* PlusPlusToken */:
case 39 /* MinusMinusToken */:
case 24 /* LessThanToken */:
- case 111 /* YieldKeyword */:
+ case 110 /* YieldKeyword */:
// Yield always starts an expression. Either it is an identifier (in which case
// it is definitely an expression). Or it's a keyword (either because we're in
// a generator, or in strict mode (or both)) and it started a yield expression.
@@ -8471,7 +8482,7 @@ var ts;
return parseConditionalExpressionRest(expr);
}
function isYieldExpression() {
- if (token === 111 /* YieldKeyword */) {
+ if (token === 110 /* YieldKeyword */) {
// If we have a 'yield' keyword, and htis is a context where yield expressions are
// allowed, then definitely parse out a yield expression.
if (inYieldContext()) {
@@ -9312,7 +9323,7 @@ var ts;
parseExpected(16 /* OpenParenToken */);
var initializer = undefined;
if (token !== 22 /* SemicolonToken */) {
- if (token === 98 /* VarKeyword */ || token === 105 /* LetKeyword */ || token === 70 /* ConstKeyword */) {
+ if (token === 98 /* VarKeyword */ || token === 104 /* LetKeyword */ || token === 70 /* ConstKeyword */) {
initializer = parseVariableDeclarationList(true);
}
else {
@@ -9496,7 +9507,7 @@ var ts;
return !inErrorRecovery;
case 14 /* OpenBraceToken */:
case 98 /* VarKeyword */:
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
case 83 /* FunctionKeyword */:
case 69 /* ClassKeyword */:
case 84 /* IfKeyword */:
@@ -9522,7 +9533,7 @@ var ts;
// In ES 6 'enum' is a future reserved keyword, so it should not be used as identifier
var isConstEnum = lookAhead(nextTokenIsEnumKeyword);
return !isConstEnum;
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
case 117 /* ModuleKeyword */:
case 77 /* EnumKeyword */:
case 123 /* TypeKeyword */:
@@ -9531,10 +9542,10 @@ var ts;
if (isDeclarationStart()) {
return false;
}
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
- case 110 /* StaticKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
// When followed by an identifier or keyword, these do not start a statement but
// might instead be following type members
if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) {
@@ -9593,7 +9604,7 @@ var ts;
return parseTryStatement();
case 72 /* DebuggerKeyword */:
return parseDebuggerStatement();
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
// If let follows identifier on the same line, it is declaration parse it as variable statement
if (isLetDeclaration()) {
return parseVariableStatement(scanner.getStartPos(), undefined, undefined);
@@ -9628,7 +9639,7 @@ var ts;
return undefined;
}
return parseVariableStatement(start, decorators, modifiers);
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
if (!isLetDeclaration()) {
return undefined;
}
@@ -9715,7 +9726,7 @@ var ts;
switch (token) {
case 98 /* VarKeyword */:
break;
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
node.flags |= 4096 /* Let */;
break;
case 70 /* ConstKeyword */:
@@ -9823,6 +9834,17 @@ var ts;
node.body = parseFunctionBlockOrSemicolon(false);
return finishNode(node);
}
+ function isClassMemberModifier(idToken) {
+ switch (idToken) {
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
+ return true;
+ default:
+ return false;
+ }
+ }
function isClassMemberStart() {
var idToken;
if (token === 52 /* AtToken */) {
@@ -9831,6 +9853,15 @@ var ts;
// Eat up all modifiers, but hold on to the last one in case it is actually an identifier.
while (ts.isModifier(token)) {
idToken = token;
+ // If the idToken is a class modifier (protected, private, public, and static), it is
+ // certain that we are starting to parse class member. This allows better error recovery
+ // Example:
+ // public foo() ... // true
+ // public @dec blah ... // true; we will then report an error later
+ // export public ... // true; we will then report an error later
+ if (isClassMemberModifier(idToken)) {
+ return true;
+ }
nextToken();
}
if (token === 35 /* AsteriskToken */) {
@@ -10001,7 +10032,7 @@ var ts;
return parseList(19 /* HeritageClauses */, false, parseHeritageClause);
}
function parseHeritageClause() {
- if (token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */) {
+ if (token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */) {
var node = createNode(222 /* HeritageClause */);
node.token = token;
nextToken();
@@ -10019,7 +10050,7 @@ var ts;
return finishNode(node);
}
function isHeritageClause() {
- return token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */;
+ return token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */;
}
function parseClassMembers() {
return parseList(6 /* ClassMembers */, false, parseClassElement);
@@ -10028,7 +10059,7 @@ var ts;
var node = createNode(202 /* InterfaceDeclaration */, fullStart);
node.decorators = decorators;
setModifiers(node, modifiers);
- parseExpected(104 /* InterfaceKeyword */);
+ parseExpected(103 /* InterfaceKeyword */);
node.name = parseIdentifier();
node.typeParameters = parseTypeParameters();
node.heritageClauses = parseHeritageClauses(false);
@@ -10207,7 +10238,7 @@ var ts;
// * as ImportedBinding
var namespaceImport = createNode(211 /* NamespaceImport */);
parseExpected(35 /* AsteriskToken */);
- parseExpected(102 /* AsKeyword */);
+ parseExpected(111 /* AsKeyword */);
namespaceImport.name = parseIdentifier();
return finishNode(namespaceImport);
}
@@ -10241,9 +10272,9 @@ var ts;
var checkIdentifierStart = scanner.getTokenPos();
var checkIdentifierEnd = scanner.getTextPos();
var identifierName = parseIdentifierName();
- if (token === 102 /* AsKeyword */) {
+ if (token === 111 /* AsKeyword */) {
node.propertyName = identifierName;
- parseExpected(102 /* AsKeyword */);
+ parseExpected(111 /* AsKeyword */);
checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier();
checkIdentifierStart = scanner.getTokenPos();
checkIdentifierEnd = scanner.getTextPos();
@@ -10300,10 +10331,10 @@ var ts;
case 70 /* ConstKeyword */:
case 83 /* FunctionKeyword */:
return true;
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
return isLetDeclaration();
case 69 /* ClassKeyword */:
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
case 77 /* EnumKeyword */:
case 123 /* TypeKeyword */:
// Not true keywords so ensure an identifier follows
@@ -10318,10 +10349,10 @@ var ts;
// Check for export assignment or modifier on source element
return lookAhead(nextTokenCanFollowExportKeyword);
case 115 /* DeclareKeyword */:
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
- case 110 /* StaticKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
// Check for modifier on source element
return lookAhead(nextTokenIsDeclarationStart);
case 52 /* AtToken */:
@@ -10356,7 +10387,7 @@ var ts;
return isDeclarationStart(true);
}
function nextTokenIsAsKeyword() {
- return nextToken() === 102 /* AsKeyword */;
+ return nextToken() === 111 /* AsKeyword */;
}
function parseDeclaration() {
var fullStart = getNodePos();
@@ -10373,14 +10404,14 @@ var ts;
}
switch (token) {
case 98 /* VarKeyword */:
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
case 70 /* ConstKeyword */:
return parseVariableStatement(fullStart, decorators, modifiers);
case 83 /* FunctionKeyword */:
return parseFunctionDeclaration(fullStart, decorators, modifiers);
case 69 /* ClassKeyword */:
return parseClassDeclaration(fullStart, decorators, modifiers);
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
return parseInterfaceDeclaration(fullStart, decorators, modifiers);
case 123 /* TypeKeyword */:
return parseTypeAliasDeclaration(fullStart, decorators, modifiers);
@@ -13201,15 +13232,16 @@ var ts;
return result;
}
function getPropertiesOfType(type) {
- if (type.flags & 16384 /* Union */) {
- return getPropertiesOfUnionType(type);
- }
- return getPropertiesOfObjectType(getApparentType(type));
+ type = getApparentType(type);
+ return type.flags & 16384 /* Union */ ? getPropertiesOfUnionType(type) : getPropertiesOfObjectType(type);
}
// For a type parameter, return the base constraint of the type parameter. For the string, number,
// boolean, and symbol primitive types, return the corresponding object types. Otherwise return the
// type itself. Note that the apparent type of a union type is the union type itself.
function getApparentType(type) {
+ if (type.flags & 16384 /* Union */) {
+ type = getReducedTypeOfUnionType(type);
+ }
if (type.flags & 512 /* TypeParameter */) {
do {
type = getConstraintOfTypeParameter(type);
@@ -13281,28 +13313,27 @@ var ts;
// necessary, maps primitive types and type parameters are to their apparent types, and augments with properties from
// Object and Function as appropriate.
function getPropertyOfType(type, name) {
+ type = getApparentType(type);
+ if (type.flags & 48128 /* ObjectType */) {
+ var resolved = resolveObjectOrUnionTypeMembers(type);
+ if (ts.hasProperty(resolved.members, name)) {
+ var symbol = resolved.members[name];
+ if (symbolIsValue(symbol)) {
+ return symbol;
+ }
+ }
+ if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
+ var symbol = getPropertyOfObjectType(globalFunctionType, name);
+ if (symbol) {
+ return symbol;
+ }
+ }
+ return getPropertyOfObjectType(globalObjectType, name);
+ }
if (type.flags & 16384 /* Union */) {
return getPropertyOfUnionType(type, name);
}
- if (!(type.flags & 48128 /* ObjectType */)) {
- type = getApparentType(type);
- if (!(type.flags & 48128 /* ObjectType */)) {
- return undefined;
- }
- }
- var resolved = resolveObjectOrUnionTypeMembers(type);
- if (ts.hasProperty(resolved.members, name)) {
- var symbol = resolved.members[name];
- if (symbolIsValue(symbol)) {
- return symbol;
- }
- }
- if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
- var symbol = getPropertyOfObjectType(globalFunctionType, name);
- if (symbol)
- return symbol;
- }
- return getPropertyOfObjectType(globalObjectType, name);
+ return undefined;
}
function getSignaturesOfObjectOrUnionType(type, kind) {
if (type.flags & (48128 /* ObjectType */ | 16384 /* Union */)) {
@@ -13825,6 +13856,10 @@ var ts;
}
}
}
+ // The noSubtypeReduction flag is there because it isn't possible to always do subtype reduction. The flag
+ // is true when creating a union type from a type node and when instantiating a union type. In both of those
+ // cases subtype reduction has to be deferred to properly support recursive union types. For example, a
+ // type alias of the form "type Item = string | (() => Item)" cannot be reduced during its declaration.
function getUnionType(types, noSubtypeReduction) {
if (types.length === 0) {
return emptyObjectType;
@@ -13849,9 +13884,17 @@ var ts;
if (!type) {
type = unionTypes[id] = createObjectType(16384 /* Union */ | getWideningFlagsOfTypes(sortedTypes));
type.types = sortedTypes;
+ type.reducedType = noSubtypeReduction ? undefined : type;
}
return type;
}
+ function getReducedTypeOfUnionType(type) {
+ // If union type was created without subtype reduction, perform the deferred reduction now
+ if (!type.reducedType) {
+ type.reducedType = getUnionType(type.types, false);
+ }
+ return type.reducedType;
+ }
function getTypeFromUnionTypeNode(node) {
var links = getNodeLinks(node);
if (!links.resolvedType) {
@@ -17230,7 +17273,7 @@ var ts;
function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) {
ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node));
// Grammar checking
- var hasGrammarError = checkGrammarFunctionLikeDeclaration(node);
+ var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node);
if (!hasGrammarError && node.kind === 162 /* FunctionExpression */) {
checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node);
}
@@ -17272,7 +17315,7 @@ var ts;
}
function checkFunctionExpressionOrObjectLiteralMethodBody(node) {
ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node));
- if (node.type) {
+ if (node.type && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
if (node.body) {
@@ -17834,6 +17877,7 @@ var ts;
return type;
}
function checkExpression(node, contextualMapper) {
+ checkGrammarIdentifierInStrictMode(node);
return checkExpressionOrQualifiedName(node, contextualMapper);
}
// Checks an expression and returns its type. The contextualMapper parameter serves two purposes: When
@@ -17941,6 +17985,7 @@ var ts;
}
// DECLARATION AND STATEMENT TYPE CHECKING
function checkTypeParameter(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
// Grammar Checking
if (node.expression) {
grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected);
@@ -18172,9 +18217,11 @@ var ts;
checkDecorators(node);
}
function checkTypeReferenceNode(node) {
+ checkGrammarTypeReferenceInStrictMode(node.typeName);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkHeritageClauseElement(node) {
+ checkGrammarHeritageClauseElementInStrictMode(node.expression);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkTypeReferenceOrHeritageClauseElement(node) {
@@ -18648,6 +18695,7 @@ var ts;
}
}
function checkFunctionLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSignatureDeclaration(node);
// Do not use hasDynamicName here, because that returns false for well known symbols.
@@ -18678,7 +18726,7 @@ var ts;
}
}
checkSourceElement(node.body);
- if (node.type && !isAccessor(node.kind)) {
+ if (node.type && !isAccessor(node.kind) && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
// Report an implicit any error if there is no body, no explicit return type, and node is not a private method
@@ -18891,6 +18939,7 @@ var ts;
}
// Check variable, parameter, or property declaration
function checkVariableLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSourceElement(node.type);
// For a computed property, just check the initializer and exit
@@ -19120,7 +19169,10 @@ var ts;
return checkElementTypeOfArrayOrString(inputType, errorNode);
}
if (isArrayLikeType(inputType)) {
- return getIndexTypeOfType(inputType, 1 /* Number */);
+ var indexType = getIndexTypeOfType(inputType, 1 /* Number */);
+ if (indexType) {
+ return indexType;
+ }
}
error(errorNode, ts.Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType));
return unknownType;
@@ -19521,6 +19573,7 @@ var ts;
return unknownType;
}
function checkClassDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
// Grammar checking
if (node.parent.kind !== 206 /* ModuleBlock */ && node.parent.kind !== 227 /* SourceFile */) {
grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration);
@@ -19721,7 +19774,7 @@ var ts;
}
function checkInterfaceDeclaration(node) {
// Grammar checking
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
checkTypeParameters(node.typeParameters);
if (produceDiagnostics) {
checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0);
@@ -19921,7 +19974,7 @@ var ts;
return;
}
// Grammar checking
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
@@ -19983,7 +20036,7 @@ var ts;
function checkModuleDeclaration(node) {
if (produceDiagnostics) {
// Grammar checking
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
+ if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
if (!ts.isInAmbientContext(node) && node.name.kind === 8 /* StringLiteral */) {
grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names);
}
@@ -20078,7 +20131,7 @@ var ts;
checkAliasSymbol(node);
}
function checkImportDeclaration(node) {
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) {
+ if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) {
grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers);
}
if (checkExternalImportOrExportDeclaration(node)) {
@@ -20099,7 +20152,7 @@ var ts;
}
}
function checkImportEqualsDeclaration(node) {
- checkGrammarDecorators(node) || checkGrammarModifiers(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node);
if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) {
checkImportBinding(node);
if (node.flags & 1 /* Export */) {
@@ -20418,6 +20471,8 @@ var ts;
// Grammar checking
checkGrammarSourceFile(node);
emitExtends = false;
+ emitDecorate = false;
+ emitParam = false;
potentialThisCollisions.length = 0;
ts.forEach(node.statements, checkSourceElement);
checkFunctionExpressionBodies(node);
@@ -21346,6 +21401,137 @@ var ts;
anyArrayType = createArrayType(anyType);
}
// GRAMMAR CHECKING
+ function isReservedwordInStrictMode(node) {
+ // Check that originalKeywordKind is less than LastFurtureReservedWord to see if an Identifier is a strict-mode reserved word
+ return (node.parserContextFlags & 1 /* StrictMode */) &&
+ (node.originalKeywordKind >= 102 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 110 /* LastFutureReservedWord */);
+ }
+ function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) {
+ // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.)
+ // if so, we would like to give more explicit invalid usage error.
+ if (ts.getAncestor(identifier, 201 /* ClassDeclaration */) || ts.getAncestor(identifier, 174 /* ClassExpression */)) {
+ return grammarErrorOnNode(identifier, message, arg0);
+ }
+ return false;
+ }
+ function checkGrammarImportDeclarationNameInStrictMode(node) {
+ // Check if the import declaration used strict-mode reserved word in its names bindings
+ if (node.importClause) {
+ var impotClause = node.importClause;
+ if (impotClause.namedBindings) {
+ var nameBindings = impotClause.namedBindings;
+ if (nameBindings.kind === 211 /* NamespaceImport */) {
+ var name_11 = nameBindings.name;
+ if (name_11.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_11);
+ return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ else if (nameBindings.kind === 212 /* NamedImports */) {
+ var reportError = false;
+ for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) {
+ var element = _a[_i];
+ var name_12 = element.name;
+ if (name_12.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_12);
+ reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return reportError;
+ }
+ }
+ }
+ return false;
+ }
+ function checkGrammarDeclarationNameInStrictMode(node) {
+ var name = node.name;
+ if (name && name.kind === 65 /* Identifier */ && isReservedwordInStrictMode(name)) {
+ var nameText = ts.declarationNameToString(name);
+ switch (node.kind) {
+ case 129 /* Parameter */:
+ case 198 /* VariableDeclaration */:
+ case 200 /* FunctionDeclaration */:
+ case 128 /* TypeParameter */:
+ case 152 /* BindingElement */:
+ case 202 /* InterfaceDeclaration */:
+ case 203 /* TypeAliasDeclaration */:
+ case 204 /* EnumDeclaration */:
+ return checkGrammarIdentifierInStrictMode(name);
+ case 201 /* ClassDeclaration */:
+ // Report an error if the class declaration uses strict-mode reserved word.
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText);
+ case 205 /* ModuleDeclaration */:
+ // Report an error if the module declaration uses strict-mode reserved word.
+ // TODO(yuisu): fix this when having external module in strict mode
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ case 208 /* ImportEqualsDeclaration */:
+ // TODO(yuisu): fix this when having external module in strict mode
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return false;
+ }
+ function checkGrammarTypeReferenceInStrictMode(typeName) {
+ // Check if the type reference is using strict mode keyword
+ // Example:
+ // class C {
+ // foo(x: public){} // Error.
+ // }
+ if (typeName.kind === 65 /* Identifier */) {
+ checkGrammarTypeNameInStrictMode(typeName);
+ }
+ else if (typeName.kind === 126 /* QualifiedName */) {
+ // Walk from right to left and report a possible error at each Identifier in QualifiedName
+ // Example:
+ // x1: public.private.package // error at public and private
+ checkGrammarTypeNameInStrictMode(typeName.right);
+ checkGrammarTypeReferenceInStrictMode(typeName.left);
+ }
+ }
+ // This function will report an error for every identifier in property access expression
+ // whether it violates strict mode reserved words.
+ // Example:
+ // public // error at public
+ // public.private.package // error at public
+ // B.private.B // no error
+ function checkGrammarHeritageClauseElementInStrictMode(expression) {
+ // Example:
+ // class C extends public // error at public
+ if (expression && expression.kind === 65 /* Identifier */) {
+ return checkGrammarIdentifierInStrictMode(expression);
+ }
+ else if (expression && expression.kind === 155 /* PropertyAccessExpression */) {
+ // Walk from left to right in PropertyAccessExpression until we are at the left most expression
+ // in PropertyAccessExpression. According to grammar production of MemberExpression,
+ // the left component expression is a PrimaryExpression (i.e. Identifier) while the other
+ // component after dots can be IdentifierName.
+ checkGrammarHeritageClauseElementInStrictMode(expression.expression);
+ }
+ }
+ // The function takes an identifier itself or an expression which has SyntaxKind.Identifier.
+ function checkGrammarIdentifierInStrictMode(node, nameText) {
+ if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) {
+ if (!nameText) {
+ nameText = ts.declarationNameToString(node);
+ }
+ // TODO (yuisu): Fix when module is a strict mode
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
+ // The function takes an identifier when uses as a typeName in TypeReferenceNode
+ function checkGrammarTypeNameInStrictMode(node) {
+ if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) {
+ var nameText = ts.declarationNameToString(node);
+ // TODO (yuisu): Fix when module is a strict mode
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
function checkGrammarDecorators(node) {
if (!node.decorators) {
return false;
@@ -21398,14 +21584,14 @@ var ts;
for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) {
var modifier = _a[_i];
switch (modifier.kind) {
- case 109 /* PublicKeyword */:
- case 108 /* ProtectedKeyword */:
- case 107 /* PrivateKeyword */:
+ case 108 /* PublicKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 106 /* PrivateKeyword */:
var text = void 0;
- if (modifier.kind === 109 /* PublicKeyword */) {
+ if (modifier.kind === 108 /* PublicKeyword */) {
text = "public";
}
- else if (modifier.kind === 108 /* ProtectedKeyword */) {
+ else if (modifier.kind === 107 /* ProtectedKeyword */) {
text = "protected";
lastProtected = modifier;
}
@@ -21424,7 +21610,7 @@ var ts;
}
flags |= ts.modifierToFlag(modifier.kind);
break;
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
if (flags & 128 /* Static */) {
return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static");
}
@@ -21656,7 +21842,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103 /* ImplementsKeyword */);
+ ts.Debug.assert(heritageClause.token === 102 /* ImplementsKeyword */);
if (seenImplementsClause) {
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen);
}
@@ -21679,7 +21865,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103 /* ImplementsKeyword */);
+ ts.Debug.assert(heritageClause.token === 102 /* ImplementsKeyword */);
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause);
}
// Grammar checking heritageClause inside class declaration
@@ -21721,11 +21907,11 @@ var ts;
var inStrictMode = (node.parserContextFlags & 1 /* StrictMode */) !== 0;
for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {
var prop = _a[_i];
- var name_11 = prop.name;
+ var name_13 = prop.name;
if (prop.kind === 175 /* OmittedExpression */ ||
- name_11.kind === 127 /* ComputedPropertyName */) {
+ name_13.kind === 127 /* ComputedPropertyName */) {
// If the name is not a ComputedPropertyName, the grammar checking will skip it
- checkGrammarComputedPropertyName(name_11);
+ checkGrammarComputedPropertyName(name_13);
continue;
}
// ECMA-262 11.1.5 Object Initialiser
@@ -21740,8 +21926,8 @@ var ts;
if (prop.kind === 224 /* PropertyAssignment */ || prop.kind === 225 /* ShorthandPropertyAssignment */) {
// Grammar checking for computedPropertName and shorthandPropertyAssignment
checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional);
- if (name_11.kind === 7 /* NumericLiteral */) {
- checkGrammarNumbericLiteral(name_11);
+ if (name_13.kind === 7 /* NumericLiteral */) {
+ checkGrammarNumbericLiteral(name_13);
}
currentKind = Property;
}
@@ -21757,26 +21943,26 @@ var ts;
else {
ts.Debug.fail("Unexpected syntax kind:" + prop.kind);
}
- if (!ts.hasProperty(seen, name_11.text)) {
- seen[name_11.text] = currentKind;
+ if (!ts.hasProperty(seen, name_13.text)) {
+ seen[name_13.text] = currentKind;
}
else {
- var existingKind = seen[name_11.text];
+ var existingKind = seen[name_13.text];
if (currentKind === Property && existingKind === Property) {
if (inStrictMode) {
- grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
+ grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
}
}
else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) {
if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) {
- seen[name_11.text] = currentKind | existingKind;
+ seen[name_13.text] = currentKind | existingKind;
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
}
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
}
}
}
@@ -22124,15 +22310,14 @@ var ts;
var identifier = name;
if (contextNode && (contextNode.parserContextFlags & 1 /* StrictMode */) && ts.isEvalOrArgumentsIdentifier(identifier)) {
var nameText = ts.declarationNameToString(identifier);
- // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.)
- // if so, we would like to give more explicit invalid usage error.
- // This will be particularly helpful in the case of "arguments" as such case is very common mistake.
- if (ts.getAncestor(name, 201 /* ClassDeclaration */) || ts.getAncestor(name, 174 /* ClassExpression */)) {
- return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
- }
- else {
+ // We check first if the name is inside class declaration or class expression; if so give explicit message
+ // otherwise report generic error message.
+ // reportGrammarErrorInClassDeclaration only return true if grammar error is successfully reported and false otherwise
+ var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
+ if (!reportErrorInClassDeclaration) {
return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText);
}
+ return reportErrorInClassDeclaration;
}
}
}
@@ -22631,9 +22816,9 @@ var ts;
}
var count = 0;
while (true) {
- var name_12 = baseName + "_" + (++count);
- if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) {
- return name_12;
+ var name_14 = baseName + "_" + (++count);
+ if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) {
+ return name_14;
}
}
}
@@ -23835,9 +24020,9 @@ var ts;
tempFlags++;
// Skip over 'i' and 'n'
if (count !== 8 && count !== 13) {
- var name_13 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26);
- if (isUniqueName(name_13)) {
- return name_13;
+ var name_15 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26);
+ if (isUniqueName(name_15)) {
+ return name_15;
}
}
}
@@ -23870,9 +24055,9 @@ var ts;
}
function generateNameForModuleOrEnum(node) {
if (node.name.kind === 65 /* Identifier */) {
- var name_14 = node.name.text;
+ var name_16 = node.name.text;
// Use module/enum name itself if it is unique, otherwise make a unique variation
- assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14));
+ assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16));
}
}
function generateNameForImportOrExportDeclaration(node) {
@@ -24085,8 +24270,8 @@ var ts;
// Child scopes are always shown with a dot (even if they have no name),
// unless it is a computed property. Then it is shown with brackets,
// but the brackets are included in the name.
- var name_15 = node.name;
- if (!name_15 || name_15.kind !== 127 /* ComputedPropertyName */) {
+ var name_17 = node.name;
+ if (!name_17 || name_17.kind !== 127 /* ComputedPropertyName */) {
scopeName = "." + scopeName;
}
scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName;
@@ -24115,10 +24300,10 @@ var ts;
node.kind === 204 /* EnumDeclaration */) {
// Declaration and has associated name use it
if (node.name) {
- var name_16 = node.name;
+ var name_18 = node.name;
// For computed property names, the text will include the brackets
- scopeName = name_16.kind === 127 /* ComputedPropertyName */
- ? ts.getTextOfNode(name_16)
+ scopeName = name_18.kind === 127 /* ComputedPropertyName */
+ ? ts.getTextOfNode(name_18)
: node.name.text;
}
recordScopeNameStart(scopeName);
@@ -24592,6 +24777,7 @@ var ts;
default:
return -1 /* LessThan */;
}
+ case 172 /* YieldExpression */:
case 170 /* ConditionalExpression */:
return -1 /* LessThan */;
default:
@@ -24779,6 +24965,16 @@ var ts;
write("...");
emit(node.expression);
}
+ function emitYieldExpression(node) {
+ write(ts.tokenToString(110 /* YieldKeyword */));
+ if (node.asteriskToken) {
+ write("*");
+ }
+ if (node.expression) {
+ write(" ");
+ emit(node.expression);
+ }
+ }
function needsParenthesisForPropertyAccessOrInvocation(node) {
switch (node.kind) {
case 65 /* Identifier */:
@@ -25037,6 +25233,9 @@ var ts;
write("]");
}
function emitMethod(node) {
+ if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) {
+ write("*");
+ }
emit(node.name, false);
if (languageVersion < 2 /* ES6 */) {
write(": function ");
@@ -25458,7 +25657,7 @@ var ts;
var tokenKind = 98 /* VarKeyword */;
if (decl && languageVersion >= 2 /* ES6 */) {
if (ts.isLet(decl)) {
- tokenKind = 105 /* LetKeyword */;
+ tokenKind = 104 /* LetKeyword */;
}
else if (ts.isConst(decl)) {
tokenKind = 70 /* ConstKeyword */;
@@ -25471,7 +25670,7 @@ var ts;
switch (tokenKind) {
case 98 /* VarKeyword */:
return write("var ");
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
return write("let ");
case 70 /* ConstKeyword */:
return write("const ");
@@ -26140,12 +26339,12 @@ var ts;
function emitParameter(node) {
if (languageVersion < 2 /* ES6 */) {
if (ts.isBindingPattern(node.name)) {
- var name_17 = createTempVariable(0 /* Auto */);
+ var name_19 = createTempVariable(0 /* Auto */);
if (!tempParameters) {
tempParameters = [];
}
- tempParameters.push(name_17);
- emit(name_17);
+ tempParameters.push(name_19);
+ emit(name_19);
}
else {
emit(node.name);
@@ -26269,7 +26468,11 @@ var ts;
write("default ");
}
}
- write("function ");
+ write("function");
+ if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) {
+ write("*");
+ }
+ write(" ");
}
if (shouldEmitFunctionName(node)) {
emitDeclarationName(node);
@@ -26616,6 +26819,9 @@ var ts;
else if (member.kind === 137 /* SetAccessor */) {
write("set ");
}
+ if (member.asteriskToken) {
+ write("*");
+ }
emit(member.name);
emitSignatureAndBody(member);
emitEnd(member);
@@ -27761,8 +27967,8 @@ var ts;
// export { x, y }
for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) {
var specifier = _d[_c];
- var name_18 = (specifier.propertyName || specifier.name).text;
- (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier);
+ var name_20 = (specifier.propertyName || specifier.name).text;
+ (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier);
}
}
break;
@@ -28094,6 +28300,8 @@ var ts;
return emitConditionalExpression(node);
case 173 /* SpreadElementExpression */:
return emitSpreadElementExpression(node);
+ case 172 /* YieldExpression */:
+ return emitYieldExpression(node);
case 175 /* OmittedExpression */:
return;
case 179 /* Block */:
@@ -29334,32 +29542,34 @@ var ts;
// Search the declarations in all files and output matched NavigateToItem into array of NavigateToItem[]
ts.forEach(program.getSourceFiles(), function (sourceFile) {
cancellationToken.throwIfCancellationRequested();
- var declarations = sourceFile.getNamedDeclarations();
- for (var _i = 0; _i < declarations.length; _i++) {
- var declaration = declarations[_i];
- var name = getDeclarationName(declaration);
- if (name !== undefined) {
+ var nameToDeclarations = sourceFile.getNamedDeclarations();
+ for (var name_21 in nameToDeclarations) {
+ var declarations = ts.getProperty(nameToDeclarations, name_21);
+ if (declarations) {
// First do a quick check to see if the name of the declaration matches the
// last portion of the (possibly) dotted name they're searching for.
- var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name);
+ var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_21);
if (!matches) {
continue;
}
- // It was a match! If the pattern has dots in it, then also see if the
- // declaration container matches as well.
- if (patternMatcher.patternContainsDots) {
- var containers = getContainers(declaration);
- if (!containers) {
- return undefined;
- }
- matches = patternMatcher.getMatches(containers, name);
- if (!matches) {
- continue;
+ for (var _i = 0; _i < declarations.length; _i++) {
+ var declaration = declarations[_i];
+ // It was a match! If the pattern has dots in it, then also see if the
+ // declaration container matches as well.
+ if (patternMatcher.patternContainsDots) {
+ var containers = getContainers(declaration);
+ if (!containers) {
+ return undefined;
+ }
+ matches = patternMatcher.getMatches(containers, name_21);
+ if (!matches) {
+ continue;
+ }
}
+ var fileName = sourceFile.fileName;
+ var matchKind = bestMatchKind(matches);
+ rawItems.push({ name: name_21, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
- var fileName = sourceFile.fileName;
- var matchKind = bestMatchKind(matches);
- rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
}
});
@@ -29380,25 +29590,13 @@ var ts;
}
return true;
}
- function getDeclarationName(declaration) {
- var result = getTextOfIdentifierOrLiteral(declaration.name);
- if (result !== undefined) {
- return result;
- }
- if (declaration.name.kind === 127 /* ComputedPropertyName */) {
- var expr = declaration.name.expression;
- if (expr.kind === 155 /* PropertyAccessExpression */) {
- return expr.name.text;
- }
- return getTextOfIdentifierOrLiteral(expr);
- }
- return undefined;
- }
function getTextOfIdentifierOrLiteral(node) {
- if (node.kind === 65 /* Identifier */ ||
- node.kind === 8 /* StringLiteral */ ||
- node.kind === 7 /* NumericLiteral */) {
- return node.text;
+ if (node) {
+ if (node.kind === 65 /* Identifier */ ||
+ node.kind === 8 /* StringLiteral */ ||
+ node.kind === 7 /* NumericLiteral */) {
+ return node.text;
+ }
}
return undefined;
}
@@ -29753,9 +29951,9 @@ var ts;
case 198 /* VariableDeclaration */:
case 152 /* BindingElement */:
var variableDeclarationNode;
- var name_19;
+ var name_22;
if (node.kind === 152 /* BindingElement */) {
- name_19 = node.name;
+ name_22 = node.name;
variableDeclarationNode = node;
// binding elements are added only for variable declarations
// bubble up to the containing variable declaration
@@ -29767,16 +29965,16 @@ var ts;
else {
ts.Debug.assert(!ts.isBindingPattern(node.name));
variableDeclarationNode = node;
- name_19 = node.name;
+ name_22 = node.name;
}
if (ts.isConst(variableDeclarationNode)) {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.constElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.constElement);
}
else if (ts.isLet(variableDeclarationNode)) {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.letElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.letElement);
}
else {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.variableElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.variableElement);
}
case 135 /* Constructor */:
return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement);
@@ -30675,7 +30873,8 @@ var ts;
ArgumentListKind[ArgumentListKind["CallArguments"] = 1] = "CallArguments";
ArgumentListKind[ArgumentListKind["TaggedTemplateArguments"] = 2] = "TaggedTemplateArguments";
})(ArgumentListKind || (ArgumentListKind = {}));
- function getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken) {
+ function getSignatureHelpItems(program, sourceFile, position, cancellationToken) {
+ var typeChecker = program.getTypeChecker();
// Decide whether to show signature help
var startingToken = ts.findTokenOnLeftOfPosition(sourceFile, position);
if (!startingToken) {
@@ -30690,12 +30889,54 @@ var ts;
}
var call = argumentInfo.invocation;
var candidates = [];
- var resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates);
+ var resolvedSignature = typeChecker.getResolvedSignature(call, candidates);
cancellationToken.throwIfCancellationRequested();
if (!candidates.length) {
+ // We didn't have any sig help items produced by the TS compiler. If this is a JS
+ // file, then see if we can figure out anything better.
+ if (ts.isJavaScript(sourceFile.fileName)) {
+ return createJavaScriptSignatureHelpItems(argumentInfo);
+ }
return undefined;
}
return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo);
+ function createJavaScriptSignatureHelpItems(argumentInfo) {
+ if (argumentInfo.invocation.kind !== 157 /* CallExpression */) {
+ return undefined;
+ }
+ // See if we can find some symbol with the call expression name that has call signatures.
+ var callExpression = argumentInfo.invocation;
+ var expression = callExpression.expression;
+ var name = expression.kind === 65 /* Identifier */
+ ? expression
+ : expression.kind === 155 /* PropertyAccessExpression */
+ ? expression.name
+ : undefined;
+ if (!name || !name.text) {
+ return undefined;
+ }
+ var typeChecker = program.getTypeChecker();
+ for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
+ var sourceFile_1 = _a[_i];
+ var nameToDeclarations = sourceFile_1.getNamedDeclarations();
+ var declarations = ts.getProperty(nameToDeclarations, name.text);
+ if (declarations) {
+ for (var _b = 0; _b < declarations.length; _b++) {
+ var declaration = declarations[_b];
+ var symbol = declaration.symbol;
+ if (symbol) {
+ var type = typeChecker.getTypeOfSymbolAtLocation(symbol, declaration);
+ if (type) {
+ var callSignatures = type.getCallSignatures();
+ if (callSignatures && callSignatures.length) {
+ return createSignatureHelpItems(callSignatures, callSignatures[0], argumentInfo);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
/**
* Returns relevant information for the argument list and the current argument if we are
* in the argument of an invocation; returns undefined otherwise.
@@ -30949,8 +31190,8 @@ var ts;
var isTypeParameterList = argumentListInfo.kind === 0 /* TypeArguments */;
var invocation = argumentListInfo.invocation;
var callTarget = ts.getInvokedExpression(invocation);
- var callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget);
- var callTargetDisplayParts = callTargetSymbol && ts.symbolToDisplayParts(typeInfoResolver, callTargetSymbol, undefined, undefined);
+ var callTargetSymbol = typeChecker.getSymbolAtLocation(callTarget);
+ var callTargetDisplayParts = callTargetSymbol && ts.symbolToDisplayParts(typeChecker, callTargetSymbol, undefined, undefined);
var items = ts.map(candidates, function (candidateSignature) {
var signatureHelpParameters;
var prefixDisplayParts = [];
@@ -30964,13 +31205,13 @@ var ts;
signatureHelpParameters = typeParameters && typeParameters.length > 0 ? ts.map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray;
suffixDisplayParts.push(ts.punctuationPart(25 /* GreaterThanToken */));
var parameterParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation);
});
suffixDisplayParts.push.apply(suffixDisplayParts, parameterParts);
}
else {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation);
});
prefixDisplayParts.push.apply(prefixDisplayParts, typeParameterParts);
prefixDisplayParts.push(ts.punctuationPart(16 /* OpenParenToken */));
@@ -30979,7 +31220,7 @@ var ts;
suffixDisplayParts.push(ts.punctuationPart(17 /* CloseParenToken */));
}
var returnTypeParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation);
});
suffixDisplayParts.push.apply(suffixDisplayParts, returnTypeParts);
return {
@@ -31008,7 +31249,7 @@ var ts;
};
function createSignatureHelpParameterForParameter(parameter) {
var displayParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation);
});
var isOptional = ts.hasQuestionToken(parameter.valueDeclaration);
return {
@@ -31020,7 +31261,7 @@ var ts;
}
function createSignatureHelpParameterForTypeParameter(typeParameter) {
var displayParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation);
});
return {
name: typeParameter.symbol.name,
@@ -31468,9 +31709,9 @@ var ts;
ts.isInsideTemplateLiteral = isInsideTemplateLiteral;
function isAccessibilityModifier(kind) {
switch (kind) {
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
return true;
}
return false;
@@ -31662,6 +31903,10 @@ var ts;
});
}
ts.signatureToDisplayParts = signatureToDisplayParts;
+ function isJavaScript(fileName) {
+ return ts.fileExtensionIs(fileName, ".js");
+ }
+ ts.isJavaScript = isJavaScript;
})(ts || (ts = {}));
///
///
@@ -32183,7 +32428,7 @@ var ts;
this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(34 /* MinusToken */, 39 /* MinusMinusToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */));
this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 23 /* CommaToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */));
this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([98 /* VarKeyword */, 94 /* ThrowKeyword */, 88 /* NewKeyword */, 74 /* DeleteKeyword */, 90 /* ReturnKeyword */, 97 /* TypeOfKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
- this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([105 /* LetKeyword */, 70 /* ConstKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2 /* Space */));
+ this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([104 /* LetKeyword */, 70 /* ConstKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2 /* Space */));
this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8 /* Delete */));
this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(83 /* FunctionKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2 /* Space */));
this.NoSpaceBeforeOpenParenInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionDeclContext), 8 /* Delete */));
@@ -32206,8 +32451,8 @@ var ts;
// Use of module as a function call. e.g.: import m2 = module("m2");
this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([117 /* ModuleKeyword */, 118 /* RequireKeyword */]), 16 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */));
// Add a space around certain TypeScript keywords
- this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69 /* ClassKeyword */, 115 /* DeclareKeyword */, 77 /* EnumKeyword */, 78 /* ExportKeyword */, 79 /* ExtendsKeyword */, 116 /* GetKeyword */, 103 /* ImplementsKeyword */, 85 /* ImportKeyword */, 104 /* InterfaceKeyword */, 117 /* ModuleKeyword */, 107 /* PrivateKeyword */, 109 /* PublicKeyword */, 120 /* SetKeyword */, 110 /* StaticKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
- this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79 /* ExtendsKeyword */, 103 /* ImplementsKeyword */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
+ this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69 /* ClassKeyword */, 115 /* DeclareKeyword */, 77 /* EnumKeyword */, 78 /* ExportKeyword */, 79 /* ExtendsKeyword */, 116 /* GetKeyword */, 102 /* ImplementsKeyword */, 85 /* ImportKeyword */, 103 /* InterfaceKeyword */, 117 /* ModuleKeyword */, 106 /* PrivateKeyword */, 108 /* PublicKeyword */, 120 /* SetKeyword */, 109 /* StaticKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
+ this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79 /* ExtendsKeyword */, 102 /* ImplementsKeyword */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
// Treat string literals in module names as identifiers, and add a space between the literal and the opening Brace braces, e.g.: module "m2" {
this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(8 /* StringLiteral */, 14 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2 /* Space */));
// Lambda expressions
@@ -32226,7 +32471,7 @@ var ts;
// decorators
this.SpaceBeforeAt = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 52 /* AtToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
this.NoSpaceAfterAt = new formatting.Rule(formatting.RuleDescriptor.create3(52 /* AtToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */));
- this.SpaceAfterDecorator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([65 /* Identifier */, 78 /* ExportKeyword */, 73 /* DefaultKeyword */, 69 /* ClassKeyword */, 110 /* StaticKeyword */, 109 /* PublicKeyword */, 107 /* PrivateKeyword */, 108 /* ProtectedKeyword */, 116 /* GetKeyword */, 120 /* SetKeyword */, 18 /* OpenBracketToken */, 35 /* AsteriskToken */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsEndOfDecoratorContextOnSameLine), 2 /* Space */));
+ this.SpaceAfterDecorator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([65 /* Identifier */, 78 /* ExportKeyword */, 73 /* DefaultKeyword */, 69 /* ClassKeyword */, 109 /* StaticKeyword */, 108 /* PublicKeyword */, 106 /* PrivateKeyword */, 107 /* ProtectedKeyword */, 116 /* GetKeyword */, 120 /* SetKeyword */, 18 /* OpenBracketToken */, 35 /* AsteriskToken */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsEndOfDecoratorContextOnSameLine), 2 /* Space */));
// These rules are higher in priority than user-configurable rules.
this.HighPriorityCommonRules =
[
@@ -32316,9 +32561,9 @@ var ts;
}
Rules.prototype.getRuleName = function (rule) {
var o = this;
- for (var name_20 in o) {
- if (o[name_20] === rule) {
- return name_20;
+ for (var name_23 in o) {
+ if (o[name_23] === rule) {
+ return name_23;
}
}
throw new Error("Unknown rule");
@@ -33243,7 +33488,7 @@ var ts;
}
switch (node.kind) {
case 201 /* ClassDeclaration */: return 69 /* ClassKeyword */;
- case 202 /* InterfaceDeclaration */: return 104 /* InterfaceKeyword */;
+ case 202 /* InterfaceDeclaration */: return 103 /* InterfaceKeyword */;
case 200 /* FunctionDeclaration */: return 83 /* FunctionKeyword */;
case 204 /* EnumDeclaration */: return 204 /* EnumDeclaration */;
case 136 /* GetAccessor */: return 116 /* GetKeyword */;
@@ -34716,29 +34961,65 @@ var ts;
return this.namedDeclarations;
};
SourceFileObject.prototype.computeNamedDeclarations = function () {
- var namedDeclarations = [];
+ var result = {};
ts.forEachChild(this, visit);
- return namedDeclarations;
+ return result;
+ function addDeclaration(declaration) {
+ var name = getDeclarationName(declaration);
+ if (name) {
+ var declarations = getDeclarations(name);
+ declarations.push(declaration);
+ }
+ }
+ function getDeclarations(name) {
+ return ts.getProperty(result, name) || (result[name] = []);
+ }
+ function getDeclarationName(declaration) {
+ if (declaration.name) {
+ var result_2 = getTextOfIdentifierOrLiteral(declaration.name);
+ if (result_2 !== undefined) {
+ return result_2;
+ }
+ if (declaration.name.kind === 127 /* ComputedPropertyName */) {
+ var expr = declaration.name.expression;
+ if (expr.kind === 155 /* PropertyAccessExpression */) {
+ return expr.name.text;
+ }
+ return getTextOfIdentifierOrLiteral(expr);
+ }
+ }
+ return undefined;
+ }
+ function getTextOfIdentifierOrLiteral(node) {
+ if (node) {
+ if (node.kind === 65 /* Identifier */ ||
+ node.kind === 8 /* StringLiteral */ ||
+ node.kind === 7 /* NumericLiteral */) {
+ return node.text;
+ }
+ }
+ return undefined;
+ }
function visit(node) {
switch (node.kind) {
case 200 /* FunctionDeclaration */:
case 134 /* MethodDeclaration */:
case 133 /* MethodSignature */:
var functionDeclaration = node;
- if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) {
- var lastDeclaration = namedDeclarations.length > 0 ?
- namedDeclarations[namedDeclarations.length - 1] :
- undefined;
+ var declarationName = getDeclarationName(functionDeclaration);
+ if (declarationName) {
+ var declarations = getDeclarations(declarationName);
+ var lastDeclaration = ts.lastOrUndefined(declarations);
// Check whether this declaration belongs to an "overload group".
- if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) {
+ if (lastDeclaration && functionDeclaration.parent === lastDeclaration.parent && functionDeclaration.symbol === lastDeclaration.symbol) {
// Overwrite the last declaration if it was an overload
// and this one is an implementation.
if (functionDeclaration.body && !lastDeclaration.body) {
- namedDeclarations[namedDeclarations.length - 1] = functionDeclaration;
+ declarations[declarations.length - 1] = functionDeclaration;
}
}
else {
- namedDeclarations.push(functionDeclaration);
+ declarations.push(functionDeclaration);
}
ts.forEachChild(node, visit);
}
@@ -34757,9 +35038,7 @@ var ts;
case 136 /* GetAccessor */:
case 137 /* SetAccessor */:
case 145 /* TypeLiteral */:
- if (node.name) {
- namedDeclarations.push(node);
- }
+ addDeclaration(node);
// fall through
case 135 /* Constructor */:
case 180 /* VariableStatement */:
@@ -34789,7 +35068,7 @@ var ts;
case 226 /* EnumMember */:
case 132 /* PropertyDeclaration */:
case 131 /* PropertySignature */:
- namedDeclarations.push(node);
+ addDeclaration(node);
break;
case 215 /* ExportDeclaration */:
// Handle named exports case e.g.:
@@ -34804,14 +35083,14 @@ var ts;
// Handle default import case e.g.:
// import d from "mod";
if (importClause.name) {
- namedDeclarations.push(importClause);
+ addDeclaration(importClause);
}
// Handle named bindings in imports e.g.:
// import * as NS from "mod";
// import {a, b as B} from "mod";
if (importClause.namedBindings) {
if (importClause.namedBindings.kind === 211 /* NamespaceImport */) {
- namedDeclarations.push(importClause.namedBindings);
+ addDeclaration(importClause.namedBindings);
}
else {
ts.forEach(importClause.namedBindings.elements, visit);
@@ -35400,7 +35679,7 @@ var ts;
}
else if (token === 35 /* AsteriskToken */) {
token = scanner.scan();
- if (token === 102 /* AsKeyword */) {
+ if (token === 111 /* AsKeyword */) {
token = scanner.scan();
if (token === 65 /* Identifier */) {
token = scanner.scan();
@@ -35671,8 +35950,6 @@ var ts;
var syntaxTreeCache = new SyntaxTreeCache(host);
var ruleProvider;
var program;
- // this checker is used to answer all LS questions except errors
- var typeInfoResolver;
var useCaseSensitivefileNames = false;
var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken());
// Check if the localized messages json is set, otherwise query the host for it
@@ -35742,7 +36019,9 @@ var ts;
}
}
program = newProgram;
- typeInfoResolver = program.getTypeChecker();
+ // Make sure all the nodes in the program are both bound, and have their parent
+ // pointers set property.
+ program.getTypeChecker();
return;
function getOrCreateSourceFile(fileName) {
// The program is asking for this file, check first if the host can locate it.
@@ -35814,15 +36093,8 @@ var ts;
synchronizeHostData();
return program;
}
- /**
- * Clean up any semantic caches that are not needed.
- * The host can call this method if it wants to jettison unused memory.
- * We will just dump the typeChecker and recreate a new one. this should have the effect of destroying all the semantic caches.
- */
function cleanupSemanticCache() {
- if (program) {
- typeInfoResolver = program.getTypeChecker();
- }
+ // TODO: Should we jettison the program (or it's type checker) here?
}
function dispose() {
if (program) {
@@ -35836,9 +36108,6 @@ var ts;
synchronizeHostData();
return program.getSyntacticDiagnostics(getValidSourceFile(fileName));
}
- function isJavaScript(fileName) {
- return ts.fileExtensionIs(fileName, ".js");
- }
/**
* getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors
* If '-d' enabled, report both semantic and emitter errors
@@ -35849,7 +36118,7 @@ var ts;
// For JavaScript files, we don't want to report the normal typescript semantic errors.
// Instead, we just report errors for using TypeScript-only constructs from within a
// JavaScript file.
- if (isJavaScript(fileName)) {
+ if (ts.isJavaScript(fileName)) {
return getJavaScriptSemanticDiagnostics(targetSourceFile);
}
// Only perform the action per file regardless of '-out' flag as LanguageServiceHost is expected to call this function per file.
@@ -35886,7 +36155,7 @@ var ts;
break;
case 222 /* HeritageClause */:
var heritageClause = node;
- if (heritageClause.token === 103 /* ImplementsKeyword */) {
+ if (heritageClause.token === 102 /* ImplementsKeyword */) {
diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file));
return true;
}
@@ -35989,14 +36258,14 @@ var ts;
for (var _i = 0; _i < modifiers.length; _i++) {
var modifier = modifiers[_i];
switch (modifier.kind) {
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
case 115 /* DeclareKeyword */:
diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind)));
return true;
// These are all legal modifiers.
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
case 78 /* ExportKeyword */:
case 70 /* ConstKeyword */:
case 73 /* DefaultKeyword */:
@@ -36058,29 +36327,8 @@ var ts;
}
return ts.unescapeIdentifier(displayName);
}
- function createCompletionEntry(symbol, typeChecker, location) {
- // Try to get a valid display name for this symbol, if we could not find one, then ignore it.
- // We would like to only show things that can be added after a dot, so for instance numeric properties can
- // not be accessed with a dot (a.1 <- invalid)
- var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, true);
- if (!displayName) {
- return undefined;
- }
- // TODO(drosen): Right now we just permit *all* semantic meanings when calling
- // 'getSymbolKind' which is permissible given that it is backwards compatible; but
- // really we should consider passing the meaning for the node so that we don't report
- // that a suggestion for a value is an interface. We COULD also just do what
- // 'getSymbolModifiers' does, which is to use the first declaration.
- // Use a 'sortText' of 0' so that all symbol completion entries come before any other
- // entries (like JavaScript identifier entries).
- return {
- name: displayName,
- kind: getSymbolKind(symbol, typeChecker, location),
- kindModifiers: getSymbolModifiers(symbol),
- sortText: "0"
- };
- }
function getCompletionData(fileName, position) {
+ var typeChecker = program.getTypeChecker();
var syntacticStart = new Date().getTime();
var sourceFile = getValidSourceFile(fileName);
var start = new Date().getTime();
@@ -36149,26 +36397,26 @@ var ts;
isMemberCompletion = true;
isNewIdentifierLocation = false;
if (node.kind === 65 /* Identifier */ || node.kind === 126 /* QualifiedName */ || node.kind === 155 /* PropertyAccessExpression */) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
// This is an alias, follow what it aliases
if (symbol && symbol.flags & 8388608 /* Alias */) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
if (symbol && symbol.flags & 1952 /* HasExports */) {
// Extract module or enum members
- var exportedSymbols = typeInfoResolver.getExportsOfModule(symbol);
+ var exportedSymbols = typeChecker.getExportsOfModule(symbol);
ts.forEach(exportedSymbols, function (symbol) {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
}
}
- var type = typeInfoResolver.getTypeAtLocation(node);
+ var type = typeChecker.getTypeAtLocation(node);
if (type) {
// Filter private properties
ts.forEach(type.getApparentProperties(), function (symbol) {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
@@ -36180,11 +36428,11 @@ var ts;
// Object literal expression, look up possible property names from contextual type
isMemberCompletion = true;
isNewIdentifierLocation = true;
- var contextualType = typeInfoResolver.getContextualType(containingObjectLiteral);
+ var contextualType = typeChecker.getContextualType(containingObjectLiteral);
if (!contextualType) {
return false;
}
- var contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType);
+ var contextualTypeMembers = typeChecker.getPropertiesOfType(contextualType);
if (contextualTypeMembers && contextualTypeMembers.length > 0) {
// Add filtered items to the completion list
symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties);
@@ -36200,9 +36448,9 @@ var ts;
ts.Debug.assert(importDeclaration !== undefined);
var exports;
if (importDeclaration.moduleSpecifier) {
- var moduleSpecifierSymbol = typeInfoResolver.getSymbolAtLocation(importDeclaration.moduleSpecifier);
+ var moduleSpecifierSymbol = typeChecker.getSymbolAtLocation(importDeclaration.moduleSpecifier);
if (moduleSpecifierSymbol) {
- exports = typeInfoResolver.getExportsOfModule(moduleSpecifierSymbol);
+ exports = typeChecker.getExportsOfModule(moduleSpecifierSymbol);
}
}
//let exports = typeInfoResolver.getExportsOfImportDeclaration(importDeclaration);
@@ -36247,7 +36495,7 @@ var ts;
var scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile;
/// TODO filter meaning based on the current context
var symbolMeanings = 793056 /* Type */ | 107455 /* Value */ | 1536 /* Namespace */ | 8388608 /* Alias */;
- symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings);
+ symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings);
}
return true;
}
@@ -36310,9 +36558,9 @@ var ts;
return containingNodeKind === 171 /* TemplateExpression */; // `aa ${|
case 12 /* TemplateMiddle */:
return containingNodeKind === 176 /* TemplateSpan */; // `aa ${10} dd ${|
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
return containingNodeKind === 132 /* PropertyDeclaration */; // class A{ public |
}
// Previous token may have been a keyword that was converted to an identifier.
@@ -36402,6 +36650,7 @@ var ts;
containingNodeKind === 150 /* ObjectBindingPattern */; // function func({ x|
case 22 /* SemicolonToken */:
return containingNodeKind === 131 /* PropertySignature */ &&
+ previousToken.parent && previousToken.parent.parent &&
(previousToken.parent.parent.kind === 202 /* InterfaceDeclaration */ ||
previousToken.parent.parent.kind === 145 /* TypeLiteral */); // let x : { a; |
case 24 /* LessThanToken */:
@@ -36409,27 +36658,28 @@ var ts;
containingNodeKind === 200 /* FunctionDeclaration */ ||
containingNodeKind === 202 /* InterfaceDeclaration */ ||
isFunction(containingNodeKind);
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
return containingNodeKind === 132 /* PropertyDeclaration */;
case 21 /* DotDotDotToken */:
return containingNodeKind === 129 /* Parameter */ ||
containingNodeKind === 135 /* Constructor */ ||
- (previousToken.parent.parent.kind === 151 /* ArrayBindingPattern */); // var [ ...z|
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ (previousToken.parent && previousToken.parent.parent &&
+ previousToken.parent.parent.kind === 151 /* ArrayBindingPattern */); // var [ ...z|
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
return containingNodeKind === 129 /* Parameter */;
case 69 /* ClassKeyword */:
case 77 /* EnumKeyword */:
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
case 83 /* FunctionKeyword */:
case 98 /* VarKeyword */:
case 116 /* GetKeyword */:
case 120 /* SetKeyword */:
case 85 /* ImportKeyword */:
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
case 70 /* ConstKeyword */:
- case 111 /* YieldKeyword */:
+ case 110 /* YieldKeyword */:
return true;
}
// Previous token may have been a keyword that was converted to an identifier.
@@ -36506,7 +36756,7 @@ var ts;
}
var symbols = completionData.symbols, isMemberCompletion = completionData.isMemberCompletion, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, isRightOfDot = completionData.isRightOfDot;
var entries;
- if (isRightOfDot && isJavaScript(fileName)) {
+ if (isRightOfDot && ts.isJavaScript(fileName)) {
entries = getCompletionEntriesFromSymbols(symbols);
ts.addRange(entries, getJavaScriptCompletionEntries());
}
@@ -36528,10 +36778,10 @@ var ts;
for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
var sourceFile = _a[_i];
var nameTable = getNameTable(sourceFile);
- for (var name_21 in nameTable) {
- if (!allNames[name_21]) {
- allNames[name_21] = name_21;
- var displayName = getCompletionEntryDisplayName(name_21, target, true);
+ for (var name_24 in nameTable) {
+ if (!allNames[name_24]) {
+ allNames[name_24] = name_24;
+ var displayName = getCompletionEntryDisplayName(name_24, target, true);
if (displayName) {
var entry = {
name: displayName,
@@ -36546,6 +36796,28 @@ var ts;
}
return entries;
}
+ function createCompletionEntry(symbol, location) {
+ // Try to get a valid display name for this symbol, if we could not find one, then ignore it.
+ // We would like to only show things that can be added after a dot, so for instance numeric properties can
+ // not be accessed with a dot (a.1 <- invalid)
+ var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, true);
+ if (!displayName) {
+ return undefined;
+ }
+ // TODO(drosen): Right now we just permit *all* semantic meanings when calling
+ // 'getSymbolKind' which is permissible given that it is backwards compatible; but
+ // really we should consider passing the meaning for the node so that we don't report
+ // that a suggestion for a value is an interface. We COULD also just do what
+ // 'getSymbolModifiers' does, which is to use the first declaration.
+ // Use a 'sortText' of 0' so that all symbol completion entries come before any other
+ // entries (like JavaScript identifier entries).
+ return {
+ name: displayName,
+ kind: getSymbolKind(symbol, location),
+ kindModifiers: getSymbolModifiers(symbol),
+ sortText: "0"
+ };
+ }
function getCompletionEntriesFromSymbols(symbols) {
var start = new Date().getTime();
var entries = [];
@@ -36553,7 +36825,7 @@ var ts;
var nameToSymbol = {};
for (var _i = 0; _i < symbols.length; _i++) {
var symbol = symbols[_i];
- var entry = createCompletionEntry(symbol, typeInfoResolver, location);
+ var entry = createCompletionEntry(symbol, location);
if (entry) {
var id = ts.escapeIdentifier(entry.name);
if (!ts.lookUp(nameToSymbol, id)) {
@@ -36580,7 +36852,7 @@ var ts;
// completion entry.
var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayNameForSymbol(s, target, false) === entryName ? s : undefined; });
if (symbol) {
- var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, typeInfoResolver, location_2, 7 /* All */);
+ var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, location_2, 7 /* All */);
return {
name: entryName,
kind: displayPartsDocumentationsAndSymbolKind.symbolKind,
@@ -36604,7 +36876,7 @@ var ts;
return undefined;
}
// TODO(drosen): use contextual SemanticMeaning.
- function getSymbolKind(symbol, typeResolver, location) {
+ function getSymbolKind(symbol, location) {
var flags = symbol.getFlags();
if (flags & 32 /* Class */)
return ScriptElementKind.classElement;
@@ -36616,7 +36888,7 @@ var ts;
return ScriptElementKind.interfaceElement;
if (flags & 262144 /* TypeParameter */)
return ScriptElementKind.typeParameterElement;
- var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location);
+ var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location);
if (result === ScriptElementKind.unknown) {
if (flags & 262144 /* TypeParameter */)
return ScriptElementKind.typeParameterElement;
@@ -36629,11 +36901,12 @@ var ts;
}
return result;
}
- function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location) {
- if (typeResolver.isUndefinedSymbol(symbol)) {
+ function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location) {
+ var typeChecker = program.getTypeChecker();
+ if (typeChecker.isUndefinedSymbol(symbol)) {
return ScriptElementKind.variableElement;
}
- if (typeResolver.isArgumentsSymbol(symbol)) {
+ if (typeChecker.isArgumentsSymbol(symbol)) {
return ScriptElementKind.localVariableElement;
}
if (flags & 3 /* Variable */) {
@@ -36661,7 +36934,7 @@ var ts;
if (flags & 4 /* Property */) {
if (flags & 268435456 /* UnionProperty */) {
// If union property is result of union of non method (property/accessors/variables), it is labeled as property
- var unionPropertyKind = ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) {
+ var unionPropertyKind = ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) {
var rootSymbolFlags = rootSymbol.getFlags();
if (rootSymbolFlags & (98308 /* PropertyOrAccessor */ | 3 /* Variable */)) {
return ScriptElementKind.memberVariableElement;
@@ -36671,7 +36944,7 @@ var ts;
if (!unionPropertyKind) {
// If this was union of all methods,
//make sure it has call signatures before we can label it as method
- var typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location);
+ var typeOfUnionProperty = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (typeOfUnionProperty.getCallSignatures().length) {
return ScriptElementKind.memberFunctionElement;
}
@@ -36704,14 +36977,14 @@ var ts;
? ts.getNodeModifiers(symbol.declarations[0])
: ScriptElementKindModifier.none;
}
- function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, typeResolver, location,
- // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
- semanticMeaning) {
+ // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
+ function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, location, semanticMeaning) {
if (semanticMeaning === void 0) { semanticMeaning = getMeaningFromLocation(location); }
+ var typeChecker = program.getTypeChecker();
var displayParts = [];
var documentation;
var symbolFlags = symbol.flags;
- var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location);
+ var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location);
var hasAddedSymbolInfo;
var type;
// Class at constructor site need to be shown as constructor apart from property,method, vars
@@ -36721,7 +36994,7 @@ var ts;
symbolKind = ScriptElementKind.memberVariableElement;
}
var signature;
- type = typeResolver.getTypeOfSymbolAtLocation(symbol, location);
+ type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (type) {
if (location.parent && location.parent.kind === 155 /* PropertyAccessExpression */) {
var right = location.parent.name;
@@ -36740,7 +37013,7 @@ var ts;
}
if (callExpression) {
var candidateSignatures = [];
- signature = typeResolver.getResolvedSignature(callExpression, candidateSignatures);
+ signature = typeChecker.getResolvedSignature(callExpression, candidateSignatures);
if (!signature && candidateSignatures.length) {
// Use the first candidate:
signature = candidateSignatures[0];
@@ -36785,7 +37058,7 @@ var ts;
displayParts.push(ts.spacePart());
}
if (!(type.flags & 32768 /* Anonymous */)) {
- displayParts.push.apply(displayParts, ts.symbolToDisplayParts(typeResolver, type.symbol, enclosingDeclaration, undefined, 1 /* WriteTypeParametersOrArguments */));
+ displayParts.push.apply(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, undefined, 1 /* WriteTypeParametersOrArguments */));
}
addSignatureDisplayParts(signature, allSignatures, 8 /* WriteArrowStyleSignature */);
break;
@@ -36801,8 +37074,8 @@ var ts;
// get the signature from the declaration and write it
var functionDeclaration = location.parent;
var allSignatures = functionDeclaration.kind === 135 /* Constructor */ ? type.getConstructSignatures() : type.getCallSignatures();
- if (!typeResolver.isImplementationOfOverload(functionDeclaration)) {
- signature = typeResolver.getSignatureFromDeclaration(functionDeclaration);
+ if (!typeChecker.isImplementationOfOverload(functionDeclaration)) {
+ signature = typeChecker.getSignatureFromDeclaration(functionDeclaration);
}
else {
signature = allSignatures[0];
@@ -36830,7 +37103,7 @@ var ts;
}
if ((symbolFlags & 64 /* Interface */) && (semanticMeaning & 2 /* Type */)) {
addNewLineIfDisplayPartsExist();
- displayParts.push(ts.keywordPart(104 /* InterfaceKeyword */));
+ displayParts.push(ts.keywordPart(103 /* InterfaceKeyword */));
displayParts.push(ts.spacePart());
addFullSymbolName(symbol);
writeTypeParametersOfSymbol(symbol, sourceFile);
@@ -36843,7 +37116,7 @@ var ts;
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53 /* EqualsToken */));
displayParts.push(ts.spacePart());
- displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
+ displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeChecker, typeChecker.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
}
if (symbolFlags & 384 /* Enum */) {
addNewLineIfDisplayPartsExist();
@@ -36879,7 +37152,7 @@ var ts;
else {
// Method/function type parameter
var signatureDeclaration = ts.getDeclarationOfKind(symbol, 128 /* TypeParameter */).parent;
- var signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration);
+ var signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration);
if (signatureDeclaration.kind === 139 /* ConstructSignature */) {
displayParts.push(ts.keywordPart(88 /* NewKeyword */));
displayParts.push(ts.spacePart());
@@ -36887,14 +37160,14 @@ var ts;
else if (signatureDeclaration.kind !== 138 /* CallSignature */ && signatureDeclaration.name) {
addFullSymbolName(signatureDeclaration.symbol);
}
- displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */));
+ displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */));
}
}
if (symbolFlags & 8 /* EnumMember */) {
addPrefixForAnyFunctionOrVar(symbol, "enum member");
var declaration = symbol.declarations[0];
if (declaration.kind === 226 /* EnumMember */) {
- var constantValue = typeResolver.getConstantValue(declaration);
+ var constantValue = typeChecker.getConstantValue(declaration);
if (constantValue !== undefined) {
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53 /* EqualsToken */));
@@ -36921,7 +37194,7 @@ var ts;
displayParts.push(ts.punctuationPart(17 /* CloseParenToken */));
}
else {
- var internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
+ var internalAliasSymbol = typeChecker.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
if (internalAliasSymbol) {
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53 /* EqualsToken */));
@@ -36946,12 +37219,12 @@ var ts;
// If the type is type parameter, format it specially
if (type.symbol && type.symbol.flags & 262144 /* TypeParameter */) {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
else {
- displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, type, enclosingDeclaration));
+ displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeChecker, type, enclosingDeclaration));
}
}
else if (symbolFlags & 16 /* Function */ ||
@@ -36966,7 +37239,7 @@ var ts;
}
}
else {
- symbolKind = getSymbolKind(symbol, typeResolver, location);
+ symbolKind = getSymbolKind(symbol, location);
}
}
if (!documentation) {
@@ -36979,7 +37252,7 @@ var ts;
}
}
function addFullSymbolName(symbol, enclosingDeclaration) {
- var fullSymbolDisplayParts = ts.symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, undefined, 1 /* WriteTypeParametersOrArguments */ | 2 /* UseOnlyExternalAliasing */);
+ var fullSymbolDisplayParts = ts.symbolToDisplayParts(typeChecker, symbol, enclosingDeclaration || sourceFile, undefined, 1 /* WriteTypeParametersOrArguments */ | 2 /* UseOnlyExternalAliasing */);
displayParts.push.apply(displayParts, fullSymbolDisplayParts);
}
function addPrefixForAnyFunctionOrVar(symbol, symbolKind) {
@@ -37007,7 +37280,7 @@ var ts;
}
}
function addSignatureDisplayParts(signature, allSignatures, flags) {
- displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | 32 /* WriteTypeArgumentsOfSignature */));
+ displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeChecker, signature, enclosingDeclaration, flags | 32 /* WriteTypeArgumentsOfSignature */));
if (allSignatures.length > 1) {
displayParts.push(ts.spacePart());
displayParts.push(ts.punctuationPart(16 /* OpenParenToken */));
@@ -37021,7 +37294,7 @@ var ts;
}
function writeTypeParametersOfSymbol(symbol, enclosingDeclaration) {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
@@ -37033,7 +37306,11 @@ var ts;
if (!node) {
return undefined;
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ if (isLabelName(node)) {
+ return undefined;
+ }
+ var typeChecker = program.getTypeChecker();
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (!symbol) {
// Try getting just type at this position and show
switch (node.kind) {
@@ -37043,20 +37320,20 @@ var ts;
case 93 /* ThisKeyword */:
case 91 /* SuperKeyword */:
// For the identifiers/this/super etc get the type at position
- var type = typeInfoResolver.getTypeAtLocation(node);
+ var type = typeChecker.getTypeAtLocation(node);
if (type) {
return {
kind: ScriptElementKind.unknown,
kindModifiers: ScriptElementKindModifier.none,
textSpan: ts.createTextSpan(node.getStart(), node.getWidth()),
- displayParts: ts.typeToDisplayParts(typeInfoResolver, type, getContainerNode(node)),
+ displayParts: ts.typeToDisplayParts(typeChecker, type, getContainerNode(node)),
documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined
};
}
}
return undefined;
}
- var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node);
+ var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), node);
return {
kind: displayPartsDocumentationsAndKind.symbolKind,
kindModifiers: getSymbolModifiers(symbol),
@@ -37105,7 +37382,8 @@ var ts;
}
return undefined;
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var typeChecker = program.getTypeChecker();
+ var symbol = typeChecker.getSymbolAtLocation(node);
// Could not find a symbol e.g. node is string or number keyword,
// or the symbol was an internal symbol and does not have a declaration e.g. undefined symbol
if (!symbol) {
@@ -37118,7 +37396,7 @@ var ts;
if (symbol.flags & 8388608 /* Alias */) {
var declaration = symbol.declarations[0];
if (node.kind === 65 /* Identifier */ && node.parent === declaration) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
}
// Because name in short-hand property assignment has two different meanings: property name and property value,
@@ -37127,22 +37405,22 @@ var ts;
// is performed at the location of property access, we would like to go to definition of the property in the short-hand
// assignment. This case and others are handled by the following code.
if (node.parent.kind === 225 /* ShorthandPropertyAssignment */) {
- var shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
+ var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
if (!shorthandSymbol) {
return [];
}
var shorthandDeclarations = shorthandSymbol.getDeclarations();
- var shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node);
- var shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol);
- var shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node);
+ var shorthandSymbolKind = getSymbolKind(shorthandSymbol, node);
+ var shorthandSymbolName = typeChecker.symbolToString(shorthandSymbol);
+ var shorthandContainerName = typeChecker.symbolToString(symbol.parent, node);
return ts.map(shorthandDeclarations, function (declaration) { return createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName); });
}
var result = [];
var declarations = symbol.getDeclarations();
- var symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol
- var symbolKind = getSymbolKind(symbol, typeInfoResolver, node);
+ var symbolName = typeChecker.symbolToString(symbol); // Do not get scoped name, just the name of the symbol
+ var symbolKind = getSymbolKind(symbol, node);
var containerSymbol = symbol.parent;
- var containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : "";
+ var containerName = containerSymbol ? typeChecker.symbolToString(containerSymbol, node) : "";
if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) &&
!tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) {
// Just add all the declarations.
@@ -37197,7 +37475,7 @@ var ts;
var sourceFile = getCanonicalFileName(ts.normalizeSlashes(fileName));
// Get occurrences only supports reporting occurrences for the file queried. So
// filter down to that list.
- results = ts.filter(results, function (r) { return r.fileName === fileName; });
+ results = ts.filter(results, function (r) { return getCanonicalFileName(ts.normalizeSlashes(r.fileName)) === sourceFile; });
}
return results;
}
@@ -37460,7 +37738,7 @@ var ts;
return undefined;
}
}
- else if (modifier === 110 /* StaticKeyword */) {
+ else if (modifier === 109 /* StaticKeyword */) {
if (container.kind !== 201 /* ClassDeclaration */) {
return undefined;
}
@@ -37509,13 +37787,13 @@ var ts;
return ts.map(keywords, getHighlightSpanForNode);
function getFlagFromModifier(modifier) {
switch (modifier) {
- case 109 /* PublicKeyword */:
+ case 108 /* PublicKeyword */:
return 16 /* Public */;
- case 107 /* PrivateKeyword */:
+ case 106 /* PrivateKeyword */:
return 32 /* Private */;
- case 108 /* ProtectedKeyword */:
+ case 107 /* ProtectedKeyword */:
return 64 /* Protected */;
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
return 128 /* Static */;
case 78 /* ExportKeyword */:
return 1 /* Export */;
@@ -37776,6 +38054,7 @@ var ts;
return getReferencedSymbolsForNodes(node, program.getSourceFiles(), findInStrings, findInComments);
}
function getReferencedSymbolsForNodes(node, sourceFiles, findInStrings, findInComments) {
+ var typeChecker = program.getTypeChecker();
// Labels
if (isLabelName(node)) {
if (isJumpStatementTarget(node)) {
@@ -37795,7 +38074,7 @@ var ts;
if (node.kind === 91 /* SuperKeyword */) {
return getReferencesForSuperKeyword(node);
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
// Could not find a symbol e.g. unknown identifier
if (!symbol) {
// Can't have references to something that we have no symbol for.
@@ -37834,7 +38113,7 @@ var ts;
}
return result;
function getDefinition(symbol) {
- var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node);
+ var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), node);
var name = ts.map(info.displayParts, function (p) { return p.text; }).join("");
var declarations = symbol.declarations;
if (!declarations || declarations.length === 0) {
@@ -37877,7 +38156,7 @@ var ts;
if (isImportOrExportSpecifierName(location)) {
return location.getText();
}
- name = typeInfoResolver.symbolToString(symbol);
+ name = typeChecker.symbolToString(symbol);
return stripQuotes(name);
}
function getInternedName(symbol, location, declarations) {
@@ -38065,10 +38344,10 @@ var ts;
if (!(getMeaningFromLocation(referenceLocation) & searchMeaning)) {
return;
}
- var referenceSymbol = typeInfoResolver.getSymbolAtLocation(referenceLocation);
+ var referenceSymbol = typeChecker.getSymbolAtLocation(referenceLocation);
if (referenceSymbol) {
var referenceSymbolDeclaration = referenceSymbol.valueDeclaration;
- var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
+ var shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
var relatedSymbol = getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation);
if (relatedSymbol) {
var referencedSymbol = getReferencedSymbol(relatedSymbol);
@@ -38257,14 +38536,14 @@ var ts;
var result = [symbol];
// If the symbol is an alias, add what it alaises to the list
if (isImportOrExportSpecifierImportSymbol(symbol)) {
- result.push(typeInfoResolver.getAliasedSymbol(symbol));
+ result.push(typeChecker.getAliasedSymbol(symbol));
}
// If the location is in a context sensitive location (i.e. in an object literal) try
// to get a contextual type for it, and add the property symbol from the contextual
// type to the search set
if (isNameOfPropertyAssignment(location)) {
ts.forEach(getPropertySymbolsFromContextualType(location), function (contextualSymbol) {
- result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol));
+ result.push.apply(result, typeChecker.getRootSymbols(contextualSymbol));
});
/* Because in short-hand property assignment, location has two meaning : property name and as value of the property
* When we do findAllReference at the position of the short-hand property assignment, we would want to have references to position of
@@ -38277,14 +38556,14 @@ var ts;
* so that when matching with potential reference symbol, both symbols from property declaration and variable declaration
* will be included correctly.
*/
- var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent);
+ var shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(location.parent);
if (shorthandValueSymbol) {
result.push(shorthandValueSymbol);
}
}
// If this is a union property, add all the symbols from all its source symbols in all unioned types.
// If the symbol is an instantiation from a another symbol (e.g. widened symbol) , add the root the list
- ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) {
+ ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) {
if (rootSymbol !== symbol) {
result.push(rootSymbol);
}
@@ -38310,9 +38589,9 @@ var ts;
return;
function getPropertySymbolFromTypeReference(typeReference) {
if (typeReference) {
- var type = typeInfoResolver.getTypeAtLocation(typeReference);
+ var type = typeChecker.getTypeAtLocation(typeReference);
if (type) {
- var propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName);
+ var propertySymbol = typeChecker.getPropertyOfType(type, propertyName);
if (propertySymbol) {
result.push(propertySymbol);
}
@@ -38329,7 +38608,7 @@ var ts;
// If the reference symbol is an alias, check if what it is aliasing is one of the search
// symbols.
if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) {
- var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol);
+ var aliasedSymbol = typeChecker.getAliasedSymbol(referenceSymbol);
if (searchSymbols.indexOf(aliasedSymbol) >= 0) {
return aliasedSymbol;
}
@@ -38339,12 +38618,12 @@ var ts;
// compare to our searchSymbol
if (isNameOfPropertyAssignment(referenceLocation)) {
return ts.forEach(getPropertySymbolsFromContextualType(referenceLocation), function (contextualSymbol) {
- return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
+ return ts.forEach(typeChecker.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
});
}
// Unwrap symbols to get to the root (e.g. transient symbols as a result of widening)
// Or a union property, use its underlying unioned symbols
- return ts.forEach(typeInfoResolver.getRootSymbols(referenceSymbol), function (rootSymbol) {
+ return ts.forEach(typeChecker.getRootSymbols(referenceSymbol), function (rootSymbol) {
// if it is in the list, then we are done
if (searchSymbols.indexOf(rootSymbol) >= 0) {
return rootSymbol;
@@ -38352,9 +38631,9 @@ var ts;
// Finally, try all properties with the same name in any type the containing type extended or implemented, and
// see if any is in the list
if (rootSymbol.parent && rootSymbol.parent.flags & (32 /* Class */ | 64 /* Interface */)) {
- var result_2 = [];
- getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_2);
- return ts.forEach(result_2, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
+ var result_3 = [];
+ getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_3);
+ return ts.forEach(result_3, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
}
return undefined;
});
@@ -38362,29 +38641,29 @@ var ts;
function getPropertySymbolsFromContextualType(node) {
if (isNameOfPropertyAssignment(node)) {
var objectLiteral = node.parent.parent;
- var contextualType = typeInfoResolver.getContextualType(objectLiteral);
- var name_22 = node.text;
+ var contextualType = typeChecker.getContextualType(objectLiteral);
+ var name_25 = node.text;
if (contextualType) {
if (contextualType.flags & 16384 /* Union */) {
// This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types)
// if not, search the constituent types for the property
- var unionProperty = contextualType.getProperty(name_22);
+ var unionProperty = contextualType.getProperty(name_25);
if (unionProperty) {
return [unionProperty];
}
else {
- var result_3 = [];
+ var result_4 = [];
ts.forEach(contextualType.types, function (t) {
- var symbol = t.getProperty(name_22);
+ var symbol = t.getProperty(name_25);
if (symbol) {
- result_3.push(symbol);
+ result_4.push(symbol);
}
});
- return result_3;
+ return result_4;
}
}
else {
- var symbol_1 = contextualType.getProperty(name_22);
+ var symbol_1 = contextualType.getProperty(name_25);
if (symbol_1) {
return [symbol_1];
}
@@ -38549,7 +38828,7 @@ var ts;
}
if (!isLastClause && root.parent.kind === 177 /* HeritageClauseElement */ && root.parent.parent.kind === 222 /* HeritageClause */) {
var decl = root.parent.parent.parent;
- return (decl.kind === 201 /* ClassDeclaration */ && root.parent.parent.token === 103 /* ImplementsKeyword */) ||
+ return (decl.kind === 201 /* ClassDeclaration */ && root.parent.parent.token === 102 /* ImplementsKeyword */) ||
(decl.kind === 202 /* InterfaceDeclaration */ && root.parent.parent.token === 79 /* ExtendsKeyword */);
}
return false;
@@ -38610,7 +38889,7 @@ var ts;
function getSignatureHelpItems(fileName, position) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
- return ts.SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken);
+ return ts.SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken);
}
/// Syntactic features
function getSourceFile(fileName) {
@@ -38677,6 +38956,7 @@ var ts;
function getSemanticClassifications(fileName, span) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
+ var typeChecker = program.getTypeChecker();
var result = [];
processNode(sourceFile);
return result;
@@ -38722,7 +39002,7 @@ var ts;
// Only walk into nodes that intersect the requested span.
if (node && ts.textSpanIntersectsWith(span, node.getStart(), node.getWidth())) {
if (node.kind === 65 /* Identifier */ && node.getWidth() > 0) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (symbol) {
var type = classifySymbol(symbol, getMeaningFromLocation(node));
if (type) {
@@ -39134,10 +39414,11 @@ var ts;
function getRenameInfo(fileName, position) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
+ var typeChecker = program.getTypeChecker();
var node = ts.getTouchingWord(sourceFile, position);
// Can only rename an identifier.
if (node && node.kind === 65 /* Identifier */) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
// Only allow a symbol to be renamed if it actually has at least one declaration.
if (symbol) {
var declarations = symbol.getDeclarations();
@@ -39147,19 +39428,19 @@ var ts;
if (defaultLibFileName) {
for (var _i = 0; _i < declarations.length; _i++) {
var current = declarations[_i];
- var sourceFile_1 = current.getSourceFile();
- if (sourceFile_1 && getCanonicalFileName(ts.normalizePath(sourceFile_1.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) {
+ var sourceFile_2 = current.getSourceFile();
+ if (sourceFile_2 && getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) {
return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library.key));
}
}
}
- var kind = getSymbolKind(symbol, typeInfoResolver, node);
+ var kind = getSymbolKind(symbol, node);
if (kind) {
return {
canRename: true,
localizedErrorMessage: undefined,
displayName: symbol.name,
- fullDisplayName: typeInfoResolver.getFullyQualifiedName(symbol),
+ fullDisplayName: typeChecker.getFullyQualifiedName(symbol),
kind: kind,
kindModifiers: getSymbolModifiers(symbol),
triggerSpan: ts.createTextSpan(node.getStart(), node.getWidth())
@@ -39304,7 +39585,7 @@ var ts;
if (keyword2 === 116 /* GetKeyword */ ||
keyword2 === 120 /* SetKeyword */ ||
keyword2 === 114 /* ConstructorKeyword */ ||
- keyword2 === 110 /* StaticKeyword */) {
+ keyword2 === 109 /* StaticKeyword */) {
// Allow things like "public get", "public constructor" and "public static".
// These are all legal.
return true;
diff --git a/bin/typescriptServices.d.ts b/bin/typescriptServices.d.ts
index d988810fd3b..8903e33391b 100644
--- a/bin/typescriptServices.d.ts
+++ b/bin/typescriptServices.d.ts
@@ -124,16 +124,16 @@ declare module ts {
VoidKeyword = 99,
WhileKeyword = 100,
WithKeyword = 101,
- AsKeyword = 102,
- ImplementsKeyword = 103,
- InterfaceKeyword = 104,
- LetKeyword = 105,
- PackageKeyword = 106,
- PrivateKeyword = 107,
- ProtectedKeyword = 108,
- PublicKeyword = 109,
- StaticKeyword = 110,
- YieldKeyword = 111,
+ ImplementsKeyword = 102,
+ InterfaceKeyword = 103,
+ LetKeyword = 104,
+ PackageKeyword = 105,
+ PrivateKeyword = 106,
+ ProtectedKeyword = 107,
+ PublicKeyword = 108,
+ StaticKeyword = 109,
+ YieldKeyword = 110,
+ AsKeyword = 111,
AnyKeyword = 112,
BooleanKeyword = 113,
ConstructorKeyword = 114,
@@ -258,8 +258,8 @@ declare module ts {
LastReservedWord = 101,
FirstKeyword = 66,
LastKeyword = 125,
- FirstFutureReservedWord = 103,
- LastFutureReservedWord = 111,
+ FirstFutureReservedWord = 102,
+ LastFutureReservedWord = 110,
FirstTypeNode = 141,
LastTypeNode = 149,
FirstPunctuation = 14,
@@ -310,6 +310,7 @@ declare module ts {
}
interface Identifier extends PrimaryExpression {
text: string;
+ originalKeywordKind?: SyntaxKind;
}
interface QualifiedName extends Node {
left: EntityName;
@@ -1181,6 +1182,34 @@ declare module ts {
function isIdentifierStart(ch: number, languageVersion: ScriptTarget): boolean;
function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean;
}
+declare module ts {
+ function getDefaultLibFileName(options: CompilerOptions): string;
+ function textSpanEnd(span: TextSpan): number;
+ function textSpanIsEmpty(span: TextSpan): boolean;
+ function textSpanContainsPosition(span: TextSpan, position: number): boolean;
+ function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean;
+ function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean;
+ function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan;
+ function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean;
+ function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean;
+ function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean;
+ function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan;
+ function createTextSpan(start: number, length: number): TextSpan;
+ function createTextSpanFromBounds(start: number, end: number): TextSpan;
+ function textChangeRangeNewSpan(range: TextChangeRange): TextSpan;
+ function textChangeRangeIsUnchanged(range: TextChangeRange): boolean;
+ function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange;
+ let unchangedTextChangeRange: TextChangeRange;
+ /**
+ * Called to merge all the changes that occurred across several versions of a script snapshot
+ * into a single change. i.e. if a user keeps making successive edits to a script we will
+ * have a text change from V1 to V2, V2 to V3, ..., Vn.
+ *
+ * This function will then merge those changes into a single change range valid between V1 and
+ * Vn.
+ */
+ function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange;
+}
declare module ts {
function getNodeConstructor(kind: SyntaxKind): new () => Node;
function createNode(kind: SyntaxKind): Node;
@@ -1260,7 +1289,6 @@ declare module ts {
getDocumentationComment(): SymbolDisplayPart[];
}
interface SourceFile {
- getNamedDeclarations(): Declaration[];
getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
getLineStarts(): number[];
getPositionOfLineAndCharacter(line: number, character: number): number;
diff --git a/bin/typescriptServices.js b/bin/typescriptServices.js
index 1c749f0d94a..57271ad41ac 100644
--- a/bin/typescriptServices.js
+++ b/bin/typescriptServices.js
@@ -128,17 +128,17 @@ var ts;
SyntaxKind[SyntaxKind["WhileKeyword"] = 100] = "WhileKeyword";
SyntaxKind[SyntaxKind["WithKeyword"] = 101] = "WithKeyword";
// Strict mode reserved words
- SyntaxKind[SyntaxKind["AsKeyword"] = 102] = "AsKeyword";
- SyntaxKind[SyntaxKind["ImplementsKeyword"] = 103] = "ImplementsKeyword";
- SyntaxKind[SyntaxKind["InterfaceKeyword"] = 104] = "InterfaceKeyword";
- SyntaxKind[SyntaxKind["LetKeyword"] = 105] = "LetKeyword";
- SyntaxKind[SyntaxKind["PackageKeyword"] = 106] = "PackageKeyword";
- SyntaxKind[SyntaxKind["PrivateKeyword"] = 107] = "PrivateKeyword";
- SyntaxKind[SyntaxKind["ProtectedKeyword"] = 108] = "ProtectedKeyword";
- SyntaxKind[SyntaxKind["PublicKeyword"] = 109] = "PublicKeyword";
- SyntaxKind[SyntaxKind["StaticKeyword"] = 110] = "StaticKeyword";
- SyntaxKind[SyntaxKind["YieldKeyword"] = 111] = "YieldKeyword";
+ SyntaxKind[SyntaxKind["ImplementsKeyword"] = 102] = "ImplementsKeyword";
+ SyntaxKind[SyntaxKind["InterfaceKeyword"] = 103] = "InterfaceKeyword";
+ SyntaxKind[SyntaxKind["LetKeyword"] = 104] = "LetKeyword";
+ SyntaxKind[SyntaxKind["PackageKeyword"] = 105] = "PackageKeyword";
+ SyntaxKind[SyntaxKind["PrivateKeyword"] = 106] = "PrivateKeyword";
+ SyntaxKind[SyntaxKind["ProtectedKeyword"] = 107] = "ProtectedKeyword";
+ SyntaxKind[SyntaxKind["PublicKeyword"] = 108] = "PublicKeyword";
+ SyntaxKind[SyntaxKind["StaticKeyword"] = 109] = "StaticKeyword";
+ SyntaxKind[SyntaxKind["YieldKeyword"] = 110] = "YieldKeyword";
// Contextual keywords
+ SyntaxKind[SyntaxKind["AsKeyword"] = 111] = "AsKeyword";
SyntaxKind[SyntaxKind["AnyKeyword"] = 112] = "AnyKeyword";
SyntaxKind[SyntaxKind["BooleanKeyword"] = 113] = "BooleanKeyword";
SyntaxKind[SyntaxKind["ConstructorKeyword"] = 114] = "ConstructorKeyword";
@@ -280,8 +280,8 @@ var ts;
SyntaxKind[SyntaxKind["LastReservedWord"] = 101] = "LastReservedWord";
SyntaxKind[SyntaxKind["FirstKeyword"] = 66] = "FirstKeyword";
SyntaxKind[SyntaxKind["LastKeyword"] = 125] = "LastKeyword";
- SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 103] = "FirstFutureReservedWord";
- SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 111] = "LastFutureReservedWord";
+ SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 102] = "FirstFutureReservedWord";
+ SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 110] = "LastFutureReservedWord";
SyntaxKind[SyntaxKind["FirstTypeNode"] = 141] = "FirstTypeNode";
SyntaxKind[SyntaxKind["LastTypeNode"] = 149] = "LastTypeNode";
SyntaxKind[SyntaxKind["FirstPunctuation"] = 14] = "FirstPunctuation";
@@ -1308,10 +1308,6 @@ var ts;
"\u2029": "\\u2029",
"\u0085": "\\u0085" // nextLine
};
- function getDefaultLibFileName(options) {
- return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts";
- }
- ts.getDefaultLibFileName = getDefaultLibFileName;
function Symbol(flags, name) {
this.flags = flags;
this.name = name;
@@ -1809,6 +1805,12 @@ var ts;
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." },
+ Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." },
Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." },
Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." },
Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." },
@@ -2176,7 +2178,7 @@ var ts;
(function (ts) {
var textToToken = {
"any": 112 /* AnyKeyword */,
- "as": 102 /* AsKeyword */,
+ "as": 111 /* AsKeyword */,
"boolean": 113 /* BooleanKeyword */,
"break": 66 /* BreakKeyword */,
"case": 67 /* CaseKeyword */,
@@ -2201,24 +2203,24 @@ var ts;
"function": 83 /* FunctionKeyword */,
"get": 116 /* GetKeyword */,
"if": 84 /* IfKeyword */,
- "implements": 103 /* ImplementsKeyword */,
+ "implements": 102 /* ImplementsKeyword */,
"import": 85 /* ImportKeyword */,
"in": 86 /* InKeyword */,
"instanceof": 87 /* InstanceOfKeyword */,
- "interface": 104 /* InterfaceKeyword */,
- "let": 105 /* LetKeyword */,
+ "interface": 103 /* InterfaceKeyword */,
+ "let": 104 /* LetKeyword */,
"module": 117 /* ModuleKeyword */,
"new": 88 /* NewKeyword */,
"null": 89 /* NullKeyword */,
"number": 119 /* NumberKeyword */,
- "package": 106 /* PackageKeyword */,
- "private": 107 /* PrivateKeyword */,
- "protected": 108 /* ProtectedKeyword */,
- "public": 109 /* PublicKeyword */,
+ "package": 105 /* PackageKeyword */,
+ "private": 106 /* PrivateKeyword */,
+ "protected": 107 /* ProtectedKeyword */,
+ "public": 108 /* PublicKeyword */,
"require": 118 /* RequireKeyword */,
"return": 90 /* ReturnKeyword */,
"set": 120 /* SetKeyword */,
- "static": 110 /* StaticKeyword */,
+ "static": 109 /* StaticKeyword */,
"string": 121 /* StringKeyword */,
"super": 91 /* SuperKeyword */,
"switch": 92 /* SwitchKeyword */,
@@ -2233,7 +2235,7 @@ var ts;
"void": 99 /* VoidKeyword */,
"while": 100 /* WhileKeyword */,
"with": 101 /* WithKeyword */,
- "yield": 111 /* YieldKeyword */,
+ "yield": 110 /* YieldKeyword */,
"of": 125 /* OfKeyword */,
"{": 14 /* OpenBraceToken */,
"}": 15 /* CloseBraceToken */,
@@ -4331,13 +4333,12 @@ var ts;
};
}
ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain;
- /* @internal */
function getSpanOfTokenAtPosition(sourceFile, pos) {
var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text);
scanner.setTextPos(pos);
scanner.scan();
var start = scanner.getTokenPos();
- return createTextSpanFromBounds(start, scanner.getTextPos());
+ return ts.createTextSpanFromBounds(start, scanner.getTextPos());
}
ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition;
function getErrorSpanForNode(sourceFile, node) {
@@ -4347,7 +4348,7 @@ var ts;
var pos_1 = ts.skipTrivia(sourceFile.text, 0, false);
if (pos_1 === sourceFile.text.length) {
// file is empty - return span for the beginning of the file
- return createTextSpan(0, 0);
+ return ts.createTextSpan(0, 0);
}
return getSpanOfTokenAtPosition(sourceFile, pos_1);
// This list is a work in progress. Add missing node kinds to improve their error
@@ -4373,7 +4374,7 @@ var ts;
var pos = nodeIsMissing(errorNode)
? errorNode.pos
: ts.skipTrivia(sourceFile.text, errorNode.pos);
- return createTextSpanFromBounds(pos, errorNode.end);
+ return ts.createTextSpanFromBounds(pos, errorNode.end);
}
ts.getErrorSpanForNode = getErrorSpanForNode;
function isExternalModule(file) {
@@ -4482,7 +4483,6 @@ var ts;
}
}
ts.forEachReturnStatement = forEachReturnStatement;
- /* @internal */
function isVariableLike(node) {
if (node) {
switch (node.kind) {
@@ -5027,7 +5027,7 @@ var ts;
}
ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement;
function getClassImplementsHeritageClauseElements(node) {
- var heritageClause = getHeritageClause(node.heritageClauses, 103 /* ImplementsKeyword */);
+ var heritageClause = getHeritageClause(node.heritageClauses, 102 /* ImplementsKeyword */);
return heritageClause ? heritageClause.types : undefined;
}
ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements;
@@ -5157,10 +5157,10 @@ var ts;
ts.isESSymbolIdentifier = isESSymbolIdentifier;
function isModifier(token) {
switch (token) {
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
- case 110 /* StaticKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
case 78 /* ExportKeyword */:
case 115 /* DeclareKeyword */:
case 70 /* ConstKeyword */:
@@ -5170,205 +5170,6 @@ var ts;
return false;
}
ts.isModifier = isModifier;
- function textSpanEnd(span) {
- return span.start + span.length;
- }
- ts.textSpanEnd = textSpanEnd;
- function textSpanIsEmpty(span) {
- return span.length === 0;
- }
- ts.textSpanIsEmpty = textSpanIsEmpty;
- function textSpanContainsPosition(span, position) {
- return position >= span.start && position < textSpanEnd(span);
- }
- ts.textSpanContainsPosition = textSpanContainsPosition;
- // Returns true if 'span' contains 'other'.
- function textSpanContainsTextSpan(span, other) {
- return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
- }
- ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
- function textSpanOverlapsWith(span, other) {
- var overlapStart = Math.max(span.start, other.start);
- var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
- return overlapStart < overlapEnd;
- }
- ts.textSpanOverlapsWith = textSpanOverlapsWith;
- function textSpanOverlap(span1, span2) {
- var overlapStart = Math.max(span1.start, span2.start);
- var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (overlapStart < overlapEnd) {
- return createTextSpanFromBounds(overlapStart, overlapEnd);
- }
- return undefined;
- }
- ts.textSpanOverlap = textSpanOverlap;
- function textSpanIntersectsWithTextSpan(span, other) {
- return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
- }
- ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
- function textSpanIntersectsWith(span, start, length) {
- var end = start + length;
- return start <= textSpanEnd(span) && end >= span.start;
- }
- ts.textSpanIntersectsWith = textSpanIntersectsWith;
- function textSpanIntersectsWithPosition(span, position) {
- return position <= textSpanEnd(span) && position >= span.start;
- }
- ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
- function textSpanIntersection(span1, span2) {
- var intersectStart = Math.max(span1.start, span2.start);
- var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (intersectStart <= intersectEnd) {
- return createTextSpanFromBounds(intersectStart, intersectEnd);
- }
- return undefined;
- }
- ts.textSpanIntersection = textSpanIntersection;
- function createTextSpan(start, length) {
- if (start < 0) {
- throw new Error("start < 0");
- }
- if (length < 0) {
- throw new Error("length < 0");
- }
- return { start: start, length: length };
- }
- ts.createTextSpan = createTextSpan;
- function createTextSpanFromBounds(start, end) {
- return createTextSpan(start, end - start);
- }
- ts.createTextSpanFromBounds = createTextSpanFromBounds;
- function textChangeRangeNewSpan(range) {
- return createTextSpan(range.span.start, range.newLength);
- }
- ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
- function textChangeRangeIsUnchanged(range) {
- return textSpanIsEmpty(range.span) && range.newLength === 0;
- }
- ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
- function createTextChangeRange(span, newLength) {
- if (newLength < 0) {
- throw new Error("newLength < 0");
- }
- return { span: span, newLength: newLength };
- }
- ts.createTextChangeRange = createTextChangeRange;
- ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
- /**
- * Called to merge all the changes that occurred across several versions of a script snapshot
- * into a single change. i.e. if a user keeps making successive edits to a script we will
- * have a text change from V1 to V2, V2 to V3, ..., Vn.
- *
- * This function will then merge those changes into a single change range valid between V1 and
- * Vn.
- */
- function collapseTextChangeRangesAcrossMultipleVersions(changes) {
- if (changes.length === 0) {
- return ts.unchangedTextChangeRange;
- }
- if (changes.length === 1) {
- return changes[0];
- }
- // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd }
- // as it makes things much easier to reason about.
- var change0 = changes[0];
- var oldStartN = change0.span.start;
- var oldEndN = textSpanEnd(change0.span);
- var newEndN = oldStartN + change0.newLength;
- for (var i = 1; i < changes.length; i++) {
- var nextChange = changes[i];
- // Consider the following case:
- // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting
- // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }.
- // i.e. the span starting at 30 with length 30 is increased to length 40.
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // -------------------------------------------------------------------------------------------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // -------------------------------------------------------------------------------------------------------
- // | \
- // | \
- // T2 | \
- // | \
- // | \
- // -------------------------------------------------------------------------------------------------------
- //
- // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial
- // it's just the min of the old and new starts. i.e.:
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // ------------------------------------------------------------*------------------------------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // ----------------------------------------$-------------------$------------------------------------------
- // . | \
- // . | \
- // T2 . | \
- // . | \
- // . | \
- // ----------------------------------------------------------------------*--------------------------------
- //
- // (Note the dots represent the newly inferrred start.
- // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the
- // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see
- // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that
- // means:
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // --------------------------------------------------------------------------------*----------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // ------------------------------------------------------------$------------------------------------------
- // . | \
- // . | \
- // T2 . | \
- // . | \
- // . | \
- // ----------------------------------------------------------------------*--------------------------------
- //
- // In other words (in this case), we're recognizing that the second edit happened after where the first edit
- // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started
- // that's the same as if we started at char 80 instead of 60.
- //
- // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter
- // than pusing the first edit forward to match the second, we'll push the second edit forward to match the
- // first.
- //
- // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange
- // semantics: { { start: 10, length: 70 }, newLength: 60 }
- //
- // The math then works out as follows.
- // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the
- // final result like so:
- //
- // {
- // oldStart3: Min(oldStart1, oldStart2),
- // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
- // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
- // }
- var oldStart1 = oldStartN;
- var oldEnd1 = oldEndN;
- var newEnd1 = newEndN;
- var oldStart2 = nextChange.span.start;
- var oldEnd2 = textSpanEnd(nextChange.span);
- var newEnd2 = oldStart2 + nextChange.newLength;
- oldStartN = Math.min(oldStart1, oldStart2);
- oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
- newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
- }
- return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
- }
- ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
function nodeStartsNewLexicalEnvironment(n) {
return isFunctionLike(n) || n.kind === 205 /* ModuleDeclaration */ || n.kind === 227 /* SourceFile */;
}
@@ -5385,7 +5186,6 @@ var ts;
return node;
}
ts.createSynthesizedNode = createSynthesizedNode;
- /* @internal */
function createDiagnosticCollection() {
var nonFileDiagnostics = [];
var fileDiagnostics = {};
@@ -5807,6 +5607,212 @@ var ts;
}
ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault;
})(ts || (ts = {}));
+var ts;
+(function (ts) {
+ function getDefaultLibFileName(options) {
+ return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts";
+ }
+ ts.getDefaultLibFileName = getDefaultLibFileName;
+ function textSpanEnd(span) {
+ return span.start + span.length;
+ }
+ ts.textSpanEnd = textSpanEnd;
+ function textSpanIsEmpty(span) {
+ return span.length === 0;
+ }
+ ts.textSpanIsEmpty = textSpanIsEmpty;
+ function textSpanContainsPosition(span, position) {
+ return position >= span.start && position < textSpanEnd(span);
+ }
+ ts.textSpanContainsPosition = textSpanContainsPosition;
+ // Returns true if 'span' contains 'other'.
+ function textSpanContainsTextSpan(span, other) {
+ return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
+ }
+ ts.textSpanContainsTextSpan = textSpanContainsTextSpan;
+ function textSpanOverlapsWith(span, other) {
+ var overlapStart = Math.max(span.start, other.start);
+ var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
+ return overlapStart < overlapEnd;
+ }
+ ts.textSpanOverlapsWith = textSpanOverlapsWith;
+ function textSpanOverlap(span1, span2) {
+ var overlapStart = Math.max(span1.start, span2.start);
+ var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (overlapStart < overlapEnd) {
+ return createTextSpanFromBounds(overlapStart, overlapEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanOverlap = textSpanOverlap;
+ function textSpanIntersectsWithTextSpan(span, other) {
+ return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start;
+ }
+ ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan;
+ function textSpanIntersectsWith(span, start, length) {
+ var end = start + length;
+ return start <= textSpanEnd(span) && end >= span.start;
+ }
+ ts.textSpanIntersectsWith = textSpanIntersectsWith;
+ function textSpanIntersectsWithPosition(span, position) {
+ return position <= textSpanEnd(span) && position >= span.start;
+ }
+ ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition;
+ function textSpanIntersection(span1, span2) {
+ var intersectStart = Math.max(span1.start, span2.start);
+ var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (intersectStart <= intersectEnd) {
+ return createTextSpanFromBounds(intersectStart, intersectEnd);
+ }
+ return undefined;
+ }
+ ts.textSpanIntersection = textSpanIntersection;
+ function createTextSpan(start, length) {
+ if (start < 0) {
+ throw new Error("start < 0");
+ }
+ if (length < 0) {
+ throw new Error("length < 0");
+ }
+ return { start: start, length: length };
+ }
+ ts.createTextSpan = createTextSpan;
+ function createTextSpanFromBounds(start, end) {
+ return createTextSpan(start, end - start);
+ }
+ ts.createTextSpanFromBounds = createTextSpanFromBounds;
+ function textChangeRangeNewSpan(range) {
+ return createTextSpan(range.span.start, range.newLength);
+ }
+ ts.textChangeRangeNewSpan = textChangeRangeNewSpan;
+ function textChangeRangeIsUnchanged(range) {
+ return textSpanIsEmpty(range.span) && range.newLength === 0;
+ }
+ ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged;
+ function createTextChangeRange(span, newLength) {
+ if (newLength < 0) {
+ throw new Error("newLength < 0");
+ }
+ return { span: span, newLength: newLength };
+ }
+ ts.createTextChangeRange = createTextChangeRange;
+ ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
+ /**
+ * Called to merge all the changes that occurred across several versions of a script snapshot
+ * into a single change. i.e. if a user keeps making successive edits to a script we will
+ * have a text change from V1 to V2, V2 to V3, ..., Vn.
+ *
+ * This function will then merge those changes into a single change range valid between V1 and
+ * Vn.
+ */
+ function collapseTextChangeRangesAcrossMultipleVersions(changes) {
+ if (changes.length === 0) {
+ return ts.unchangedTextChangeRange;
+ }
+ if (changes.length === 1) {
+ return changes[0];
+ }
+ // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd }
+ // as it makes things much easier to reason about.
+ var change0 = changes[0];
+ var oldStartN = change0.span.start;
+ var oldEndN = textSpanEnd(change0.span);
+ var newEndN = oldStartN + change0.newLength;
+ for (var i = 1; i < changes.length; i++) {
+ var nextChange = changes[i];
+ // Consider the following case:
+ // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting
+ // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }.
+ // i.e. the span starting at 30 with length 30 is increased to length 40.
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // -------------------------------------------------------------------------------------------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // -------------------------------------------------------------------------------------------------------
+ // | \
+ // | \
+ // T2 | \
+ // | \
+ // | \
+ // -------------------------------------------------------------------------------------------------------
+ //
+ // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial
+ // it's just the min of the old and new starts. i.e.:
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // ------------------------------------------------------------*------------------------------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // ----------------------------------------$-------------------$------------------------------------------
+ // . | \
+ // . | \
+ // T2 . | \
+ // . | \
+ // . | \
+ // ----------------------------------------------------------------------*--------------------------------
+ //
+ // (Note the dots represent the newly inferrred start.
+ // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the
+ // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see
+ // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that
+ // means:
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // --------------------------------------------------------------------------------*----------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // ------------------------------------------------------------$------------------------------------------
+ // . | \
+ // . | \
+ // T2 . | \
+ // . | \
+ // . | \
+ // ----------------------------------------------------------------------*--------------------------------
+ //
+ // In other words (in this case), we're recognizing that the second edit happened after where the first edit
+ // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started
+ // that's the same as if we started at char 80 instead of 60.
+ //
+ // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter
+ // than pusing the first edit forward to match the second, we'll push the second edit forward to match the
+ // first.
+ //
+ // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange
+ // semantics: { { start: 10, length: 70 }, newLength: 60 }
+ //
+ // The math then works out as follows.
+ // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the
+ // final result like so:
+ //
+ // {
+ // oldStart3: Min(oldStart1, oldStart2),
+ // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
+ // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
+ // }
+ var oldStart1 = oldStartN;
+ var oldEnd1 = oldEndN;
+ var newEnd1 = newEndN;
+ var oldStart2 = nextChange.span.start;
+ var oldEnd2 = textSpanEnd(nextChange.span);
+ var newEnd2 = oldStart2 + nextChange.newLength;
+ oldStartN = Math.min(oldStart1, oldStart2);
+ oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
+ newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
+ }
+ return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN);
+ }
+ ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions;
+})(ts || (ts = {}));
///
///
var ts;
@@ -6183,10 +6189,10 @@ var ts;
;
function modifierToFlag(token) {
switch (token) {
- case 110 /* StaticKeyword */: return 128 /* Static */;
- case 109 /* PublicKeyword */: return 16 /* Public */;
- case 108 /* ProtectedKeyword */: return 64 /* Protected */;
- case 107 /* PrivateKeyword */: return 32 /* Private */;
+ case 109 /* StaticKeyword */: return 128 /* Static */;
+ case 108 /* PublicKeyword */: return 16 /* Public */;
+ case 107 /* ProtectedKeyword */: return 64 /* Protected */;
+ case 106 /* PrivateKeyword */: return 32 /* Private */;
case 78 /* ExportKeyword */: return 1 /* Export */;
case 115 /* DeclareKeyword */: return 2 /* Ambient */;
case 70 /* ConstKeyword */: return 8192 /* Const */;
@@ -6995,16 +7001,17 @@ var ts;
function tryParse(callback) {
return speculationHelper(callback, false);
}
+ // Ignore strict mode flag because we will report an error in type checker instead.
function isIdentifier() {
if (token === 65 /* Identifier */) {
return true;
}
// If we have a 'yield' keyword, and we're in the [yield] context, then 'yield' is
// considered a keyword and is not an identifier.
- if (token === 111 /* YieldKeyword */ && inYieldContext()) {
+ if (token === 110 /* YieldKeyword */ && inYieldContext()) {
return false;
}
- return inStrictModeContext() ? token > 111 /* LastFutureReservedWord */ : token > 101 /* LastReservedWord */;
+ return token > 101 /* LastReservedWord */;
}
function parseExpected(kind, diagnosticMessage) {
if (token === kind) {
@@ -7108,6 +7115,10 @@ var ts;
identifierCount++;
if (isIdentifier) {
var node = createNode(65 /* Identifier */);
+ // Store original token kind if it is not just an Identifier so we can report appropriate error later in type checker
+ if (token !== 65 /* Identifier */) {
+ node.originalKeywordKind = token;
+ }
node.text = internIdentifier(scanner.getTokenValue());
nextToken();
return finishNode(node);
@@ -7275,7 +7286,7 @@ var ts;
// extends {} extends
// extends {} implements
var next = nextToken();
- return next === 23 /* CommaToken */ || next === 14 /* OpenBraceToken */ || next === 79 /* ExtendsKeyword */ || next === 103 /* ImplementsKeyword */;
+ return next === 23 /* CommaToken */ || next === 14 /* OpenBraceToken */ || next === 79 /* ExtendsKeyword */ || next === 102 /* ImplementsKeyword */;
}
return true;
}
@@ -7284,7 +7295,7 @@ var ts;
return isIdentifier();
}
function isHeritageClauseExtendsOrImplementsKeyword() {
- if (token === 103 /* ImplementsKeyword */ ||
+ if (token === 102 /* ImplementsKeyword */ ||
token === 79 /* ExtendsKeyword */) {
return lookAhead(nextTokenIsStartOfExpression);
}
@@ -7314,12 +7325,12 @@ var ts;
case 4 /* SwitchClauseStatements */:
return token === 15 /* CloseBraceToken */ || token === 67 /* CaseKeyword */ || token === 73 /* DefaultKeyword */;
case 8 /* HeritageClauseElement */:
- return token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */;
+ return token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */;
case 9 /* VariableDeclarations */:
return isVariableDeclaratorListTerminator();
case 16 /* TypeParameters */:
// Tokens other than '>' are here for better error recovery
- return token === 25 /* GreaterThanToken */ || token === 16 /* OpenParenToken */ || token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */;
+ return token === 25 /* GreaterThanToken */ || token === 16 /* OpenParenToken */ || token === 14 /* OpenBraceToken */ || token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */;
case 12 /* ArgumentExpressions */:
// Tokens other than ')' are here for better error recovery
return token === 17 /* CloseParenToken */ || token === 22 /* SemicolonToken */;
@@ -8356,7 +8367,7 @@ var ts;
case 38 /* PlusPlusToken */:
case 39 /* MinusMinusToken */:
case 24 /* LessThanToken */:
- case 111 /* YieldKeyword */:
+ case 110 /* YieldKeyword */:
// Yield always starts an expression. Either it is an identifier (in which case
// it is definitely an expression). Or it's a keyword (either because we're in
// a generator, or in strict mode (or both)) and it started a yield expression.
@@ -8471,7 +8482,7 @@ var ts;
return parseConditionalExpressionRest(expr);
}
function isYieldExpression() {
- if (token === 111 /* YieldKeyword */) {
+ if (token === 110 /* YieldKeyword */) {
// If we have a 'yield' keyword, and htis is a context where yield expressions are
// allowed, then definitely parse out a yield expression.
if (inYieldContext()) {
@@ -9312,7 +9323,7 @@ var ts;
parseExpected(16 /* OpenParenToken */);
var initializer = undefined;
if (token !== 22 /* SemicolonToken */) {
- if (token === 98 /* VarKeyword */ || token === 105 /* LetKeyword */ || token === 70 /* ConstKeyword */) {
+ if (token === 98 /* VarKeyword */ || token === 104 /* LetKeyword */ || token === 70 /* ConstKeyword */) {
initializer = parseVariableDeclarationList(true);
}
else {
@@ -9496,7 +9507,7 @@ var ts;
return !inErrorRecovery;
case 14 /* OpenBraceToken */:
case 98 /* VarKeyword */:
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
case 83 /* FunctionKeyword */:
case 69 /* ClassKeyword */:
case 84 /* IfKeyword */:
@@ -9522,7 +9533,7 @@ var ts;
// In ES 6 'enum' is a future reserved keyword, so it should not be used as identifier
var isConstEnum = lookAhead(nextTokenIsEnumKeyword);
return !isConstEnum;
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
case 117 /* ModuleKeyword */:
case 77 /* EnumKeyword */:
case 123 /* TypeKeyword */:
@@ -9531,10 +9542,10 @@ var ts;
if (isDeclarationStart()) {
return false;
}
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
- case 110 /* StaticKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
// When followed by an identifier or keyword, these do not start a statement but
// might instead be following type members
if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) {
@@ -9593,7 +9604,7 @@ var ts;
return parseTryStatement();
case 72 /* DebuggerKeyword */:
return parseDebuggerStatement();
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
// If let follows identifier on the same line, it is declaration parse it as variable statement
if (isLetDeclaration()) {
return parseVariableStatement(scanner.getStartPos(), undefined, undefined);
@@ -9628,7 +9639,7 @@ var ts;
return undefined;
}
return parseVariableStatement(start, decorators, modifiers);
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
if (!isLetDeclaration()) {
return undefined;
}
@@ -9715,7 +9726,7 @@ var ts;
switch (token) {
case 98 /* VarKeyword */:
break;
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
node.flags |= 4096 /* Let */;
break;
case 70 /* ConstKeyword */:
@@ -9823,6 +9834,17 @@ var ts;
node.body = parseFunctionBlockOrSemicolon(false);
return finishNode(node);
}
+ function isClassMemberModifier(idToken) {
+ switch (idToken) {
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
+ return true;
+ default:
+ return false;
+ }
+ }
function isClassMemberStart() {
var idToken;
if (token === 52 /* AtToken */) {
@@ -9831,6 +9853,15 @@ var ts;
// Eat up all modifiers, but hold on to the last one in case it is actually an identifier.
while (ts.isModifier(token)) {
idToken = token;
+ // If the idToken is a class modifier (protected, private, public, and static), it is
+ // certain that we are starting to parse class member. This allows better error recovery
+ // Example:
+ // public foo() ... // true
+ // public @dec blah ... // true; we will then report an error later
+ // export public ... // true; we will then report an error later
+ if (isClassMemberModifier(idToken)) {
+ return true;
+ }
nextToken();
}
if (token === 35 /* AsteriskToken */) {
@@ -10001,7 +10032,7 @@ var ts;
return parseList(19 /* HeritageClauses */, false, parseHeritageClause);
}
function parseHeritageClause() {
- if (token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */) {
+ if (token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */) {
var node = createNode(222 /* HeritageClause */);
node.token = token;
nextToken();
@@ -10019,7 +10050,7 @@ var ts;
return finishNode(node);
}
function isHeritageClause() {
- return token === 79 /* ExtendsKeyword */ || token === 103 /* ImplementsKeyword */;
+ return token === 79 /* ExtendsKeyword */ || token === 102 /* ImplementsKeyword */;
}
function parseClassMembers() {
return parseList(6 /* ClassMembers */, false, parseClassElement);
@@ -10028,7 +10059,7 @@ var ts;
var node = createNode(202 /* InterfaceDeclaration */, fullStart);
node.decorators = decorators;
setModifiers(node, modifiers);
- parseExpected(104 /* InterfaceKeyword */);
+ parseExpected(103 /* InterfaceKeyword */);
node.name = parseIdentifier();
node.typeParameters = parseTypeParameters();
node.heritageClauses = parseHeritageClauses(false);
@@ -10207,7 +10238,7 @@ var ts;
// * as ImportedBinding
var namespaceImport = createNode(211 /* NamespaceImport */);
parseExpected(35 /* AsteriskToken */);
- parseExpected(102 /* AsKeyword */);
+ parseExpected(111 /* AsKeyword */);
namespaceImport.name = parseIdentifier();
return finishNode(namespaceImport);
}
@@ -10241,9 +10272,9 @@ var ts;
var checkIdentifierStart = scanner.getTokenPos();
var checkIdentifierEnd = scanner.getTextPos();
var identifierName = parseIdentifierName();
- if (token === 102 /* AsKeyword */) {
+ if (token === 111 /* AsKeyword */) {
node.propertyName = identifierName;
- parseExpected(102 /* AsKeyword */);
+ parseExpected(111 /* AsKeyword */);
checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier();
checkIdentifierStart = scanner.getTokenPos();
checkIdentifierEnd = scanner.getTextPos();
@@ -10300,10 +10331,10 @@ var ts;
case 70 /* ConstKeyword */:
case 83 /* FunctionKeyword */:
return true;
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
return isLetDeclaration();
case 69 /* ClassKeyword */:
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
case 77 /* EnumKeyword */:
case 123 /* TypeKeyword */:
// Not true keywords so ensure an identifier follows
@@ -10318,10 +10349,10 @@ var ts;
// Check for export assignment or modifier on source element
return lookAhead(nextTokenCanFollowExportKeyword);
case 115 /* DeclareKeyword */:
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
- case 110 /* StaticKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 109 /* StaticKeyword */:
// Check for modifier on source element
return lookAhead(nextTokenIsDeclarationStart);
case 52 /* AtToken */:
@@ -10356,7 +10387,7 @@ var ts;
return isDeclarationStart(true);
}
function nextTokenIsAsKeyword() {
- return nextToken() === 102 /* AsKeyword */;
+ return nextToken() === 111 /* AsKeyword */;
}
function parseDeclaration() {
var fullStart = getNodePos();
@@ -10373,14 +10404,14 @@ var ts;
}
switch (token) {
case 98 /* VarKeyword */:
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
case 70 /* ConstKeyword */:
return parseVariableStatement(fullStart, decorators, modifiers);
case 83 /* FunctionKeyword */:
return parseFunctionDeclaration(fullStart, decorators, modifiers);
case 69 /* ClassKeyword */:
return parseClassDeclaration(fullStart, decorators, modifiers);
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
return parseInterfaceDeclaration(fullStart, decorators, modifiers);
case 123 /* TypeKeyword */:
return parseTypeAliasDeclaration(fullStart, decorators, modifiers);
@@ -13201,15 +13232,16 @@ var ts;
return result;
}
function getPropertiesOfType(type) {
- if (type.flags & 16384 /* Union */) {
- return getPropertiesOfUnionType(type);
- }
- return getPropertiesOfObjectType(getApparentType(type));
+ type = getApparentType(type);
+ return type.flags & 16384 /* Union */ ? getPropertiesOfUnionType(type) : getPropertiesOfObjectType(type);
}
// For a type parameter, return the base constraint of the type parameter. For the string, number,
// boolean, and symbol primitive types, return the corresponding object types. Otherwise return the
// type itself. Note that the apparent type of a union type is the union type itself.
function getApparentType(type) {
+ if (type.flags & 16384 /* Union */) {
+ type = getReducedTypeOfUnionType(type);
+ }
if (type.flags & 512 /* TypeParameter */) {
do {
type = getConstraintOfTypeParameter(type);
@@ -13281,28 +13313,27 @@ var ts;
// necessary, maps primitive types and type parameters are to their apparent types, and augments with properties from
// Object and Function as appropriate.
function getPropertyOfType(type, name) {
+ type = getApparentType(type);
+ if (type.flags & 48128 /* ObjectType */) {
+ var resolved = resolveObjectOrUnionTypeMembers(type);
+ if (ts.hasProperty(resolved.members, name)) {
+ var symbol = resolved.members[name];
+ if (symbolIsValue(symbol)) {
+ return symbol;
+ }
+ }
+ if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
+ var symbol = getPropertyOfObjectType(globalFunctionType, name);
+ if (symbol) {
+ return symbol;
+ }
+ }
+ return getPropertyOfObjectType(globalObjectType, name);
+ }
if (type.flags & 16384 /* Union */) {
return getPropertyOfUnionType(type, name);
}
- if (!(type.flags & 48128 /* ObjectType */)) {
- type = getApparentType(type);
- if (!(type.flags & 48128 /* ObjectType */)) {
- return undefined;
- }
- }
- var resolved = resolveObjectOrUnionTypeMembers(type);
- if (ts.hasProperty(resolved.members, name)) {
- var symbol = resolved.members[name];
- if (symbolIsValue(symbol)) {
- return symbol;
- }
- }
- if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
- var symbol = getPropertyOfObjectType(globalFunctionType, name);
- if (symbol)
- return symbol;
- }
- return getPropertyOfObjectType(globalObjectType, name);
+ return undefined;
}
function getSignaturesOfObjectOrUnionType(type, kind) {
if (type.flags & (48128 /* ObjectType */ | 16384 /* Union */)) {
@@ -13825,6 +13856,10 @@ var ts;
}
}
}
+ // The noSubtypeReduction flag is there because it isn't possible to always do subtype reduction. The flag
+ // is true when creating a union type from a type node and when instantiating a union type. In both of those
+ // cases subtype reduction has to be deferred to properly support recursive union types. For example, a
+ // type alias of the form "type Item = string | (() => Item)" cannot be reduced during its declaration.
function getUnionType(types, noSubtypeReduction) {
if (types.length === 0) {
return emptyObjectType;
@@ -13849,9 +13884,17 @@ var ts;
if (!type) {
type = unionTypes[id] = createObjectType(16384 /* Union */ | getWideningFlagsOfTypes(sortedTypes));
type.types = sortedTypes;
+ type.reducedType = noSubtypeReduction ? undefined : type;
}
return type;
}
+ function getReducedTypeOfUnionType(type) {
+ // If union type was created without subtype reduction, perform the deferred reduction now
+ if (!type.reducedType) {
+ type.reducedType = getUnionType(type.types, false);
+ }
+ return type.reducedType;
+ }
function getTypeFromUnionTypeNode(node) {
var links = getNodeLinks(node);
if (!links.resolvedType) {
@@ -17230,7 +17273,7 @@ var ts;
function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) {
ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node));
// Grammar checking
- var hasGrammarError = checkGrammarFunctionLikeDeclaration(node);
+ var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node);
if (!hasGrammarError && node.kind === 162 /* FunctionExpression */) {
checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node);
}
@@ -17272,7 +17315,7 @@ var ts;
}
function checkFunctionExpressionOrObjectLiteralMethodBody(node) {
ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node));
- if (node.type) {
+ if (node.type && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
if (node.body) {
@@ -17834,6 +17877,7 @@ var ts;
return type;
}
function checkExpression(node, contextualMapper) {
+ checkGrammarIdentifierInStrictMode(node);
return checkExpressionOrQualifiedName(node, contextualMapper);
}
// Checks an expression and returns its type. The contextualMapper parameter serves two purposes: When
@@ -17941,6 +17985,7 @@ var ts;
}
// DECLARATION AND STATEMENT TYPE CHECKING
function checkTypeParameter(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
// Grammar Checking
if (node.expression) {
grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected);
@@ -18172,9 +18217,11 @@ var ts;
checkDecorators(node);
}
function checkTypeReferenceNode(node) {
+ checkGrammarTypeReferenceInStrictMode(node.typeName);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkHeritageClauseElement(node) {
+ checkGrammarHeritageClauseElementInStrictMode(node.expression);
return checkTypeReferenceOrHeritageClauseElement(node);
}
function checkTypeReferenceOrHeritageClauseElement(node) {
@@ -18648,6 +18695,7 @@ var ts;
}
}
function checkFunctionLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSignatureDeclaration(node);
// Do not use hasDynamicName here, because that returns false for well known symbols.
@@ -18678,7 +18726,7 @@ var ts;
}
}
checkSourceElement(node.body);
- if (node.type && !isAccessor(node.kind)) {
+ if (node.type && !isAccessor(node.kind) && !node.asteriskToken) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type));
}
// Report an implicit any error if there is no body, no explicit return type, and node is not a private method
@@ -18891,6 +18939,7 @@ var ts;
}
// Check variable, parameter, or property declaration
function checkVariableLikeDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
checkDecorators(node);
checkSourceElement(node.type);
// For a computed property, just check the initializer and exit
@@ -19120,7 +19169,10 @@ var ts;
return checkElementTypeOfArrayOrString(inputType, errorNode);
}
if (isArrayLikeType(inputType)) {
- return getIndexTypeOfType(inputType, 1 /* Number */);
+ var indexType = getIndexTypeOfType(inputType, 1 /* Number */);
+ if (indexType) {
+ return indexType;
+ }
}
error(errorNode, ts.Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType));
return unknownType;
@@ -19521,6 +19573,7 @@ var ts;
return unknownType;
}
function checkClassDeclaration(node) {
+ checkGrammarDeclarationNameInStrictMode(node);
// Grammar checking
if (node.parent.kind !== 206 /* ModuleBlock */ && node.parent.kind !== 227 /* SourceFile */) {
grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration);
@@ -19721,7 +19774,7 @@ var ts;
}
function checkInterfaceDeclaration(node) {
// Grammar checking
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node);
checkTypeParameters(node.typeParameters);
if (produceDiagnostics) {
checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0);
@@ -19921,7 +19974,7 @@ var ts;
return;
}
// Grammar checking
- checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node);
checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
@@ -19983,7 +20036,7 @@ var ts;
function checkModuleDeclaration(node) {
if (produceDiagnostics) {
// Grammar checking
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
+ if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) {
if (!ts.isInAmbientContext(node) && node.name.kind === 8 /* StringLiteral */) {
grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names);
}
@@ -20078,7 +20131,7 @@ var ts;
checkAliasSymbol(node);
}
function checkImportDeclaration(node) {
- if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) {
+ if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) {
grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers);
}
if (checkExternalImportOrExportDeclaration(node)) {
@@ -20099,7 +20152,7 @@ var ts;
}
}
function checkImportEqualsDeclaration(node) {
- checkGrammarDecorators(node) || checkGrammarModifiers(node);
+ checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node);
if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) {
checkImportBinding(node);
if (node.flags & 1 /* Export */) {
@@ -20418,6 +20471,8 @@ var ts;
// Grammar checking
checkGrammarSourceFile(node);
emitExtends = false;
+ emitDecorate = false;
+ emitParam = false;
potentialThisCollisions.length = 0;
ts.forEach(node.statements, checkSourceElement);
checkFunctionExpressionBodies(node);
@@ -21346,6 +21401,137 @@ var ts;
anyArrayType = createArrayType(anyType);
}
// GRAMMAR CHECKING
+ function isReservedwordInStrictMode(node) {
+ // Check that originalKeywordKind is less than LastFurtureReservedWord to see if an Identifier is a strict-mode reserved word
+ return (node.parserContextFlags & 1 /* StrictMode */) &&
+ (node.originalKeywordKind >= 102 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 110 /* LastFutureReservedWord */);
+ }
+ function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) {
+ // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.)
+ // if so, we would like to give more explicit invalid usage error.
+ if (ts.getAncestor(identifier, 201 /* ClassDeclaration */) || ts.getAncestor(identifier, 174 /* ClassExpression */)) {
+ return grammarErrorOnNode(identifier, message, arg0);
+ }
+ return false;
+ }
+ function checkGrammarImportDeclarationNameInStrictMode(node) {
+ // Check if the import declaration used strict-mode reserved word in its names bindings
+ if (node.importClause) {
+ var impotClause = node.importClause;
+ if (impotClause.namedBindings) {
+ var nameBindings = impotClause.namedBindings;
+ if (nameBindings.kind === 211 /* NamespaceImport */) {
+ var name_11 = nameBindings.name;
+ if (name_11.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_11);
+ return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ else if (nameBindings.kind === 212 /* NamedImports */) {
+ var reportError = false;
+ for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) {
+ var element = _a[_i];
+ var name_12 = element.name;
+ if (name_12.originalKeywordKind) {
+ var nameText = ts.declarationNameToString(name_12);
+ reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return reportError;
+ }
+ }
+ }
+ return false;
+ }
+ function checkGrammarDeclarationNameInStrictMode(node) {
+ var name = node.name;
+ if (name && name.kind === 65 /* Identifier */ && isReservedwordInStrictMode(name)) {
+ var nameText = ts.declarationNameToString(name);
+ switch (node.kind) {
+ case 129 /* Parameter */:
+ case 198 /* VariableDeclaration */:
+ case 200 /* FunctionDeclaration */:
+ case 128 /* TypeParameter */:
+ case 152 /* BindingElement */:
+ case 202 /* InterfaceDeclaration */:
+ case 203 /* TypeAliasDeclaration */:
+ case 204 /* EnumDeclaration */:
+ return checkGrammarIdentifierInStrictMode(name);
+ case 201 /* ClassDeclaration */:
+ // Report an error if the class declaration uses strict-mode reserved word.
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText);
+ case 205 /* ModuleDeclaration */:
+ // Report an error if the module declaration uses strict-mode reserved word.
+ // TODO(yuisu): fix this when having external module in strict mode
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ case 208 /* ImportEqualsDeclaration */:
+ // TODO(yuisu): fix this when having external module in strict mode
+ return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ }
+ }
+ return false;
+ }
+ function checkGrammarTypeReferenceInStrictMode(typeName) {
+ // Check if the type reference is using strict mode keyword
+ // Example:
+ // class C {
+ // foo(x: public){} // Error.
+ // }
+ if (typeName.kind === 65 /* Identifier */) {
+ checkGrammarTypeNameInStrictMode(typeName);
+ }
+ else if (typeName.kind === 126 /* QualifiedName */) {
+ // Walk from right to left and report a possible error at each Identifier in QualifiedName
+ // Example:
+ // x1: public.private.package // error at public and private
+ checkGrammarTypeNameInStrictMode(typeName.right);
+ checkGrammarTypeReferenceInStrictMode(typeName.left);
+ }
+ }
+ // This function will report an error for every identifier in property access expression
+ // whether it violates strict mode reserved words.
+ // Example:
+ // public // error at public
+ // public.private.package // error at public
+ // B.private.B // no error
+ function checkGrammarHeritageClauseElementInStrictMode(expression) {
+ // Example:
+ // class C extends public // error at public
+ if (expression && expression.kind === 65 /* Identifier */) {
+ return checkGrammarIdentifierInStrictMode(expression);
+ }
+ else if (expression && expression.kind === 155 /* PropertyAccessExpression */) {
+ // Walk from left to right in PropertyAccessExpression until we are at the left most expression
+ // in PropertyAccessExpression. According to grammar production of MemberExpression,
+ // the left component expression is a PrimaryExpression (i.e. Identifier) while the other
+ // component after dots can be IdentifierName.
+ checkGrammarHeritageClauseElementInStrictMode(expression.expression);
+ }
+ }
+ // The function takes an identifier itself or an expression which has SyntaxKind.Identifier.
+ function checkGrammarIdentifierInStrictMode(node, nameText) {
+ if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) {
+ if (!nameText) {
+ nameText = ts.declarationNameToString(node);
+ }
+ // TODO (yuisu): Fix when module is a strict mode
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
+ // The function takes an identifier when uses as a typeName in TypeReferenceNode
+ function checkGrammarTypeNameInStrictMode(node) {
+ if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) {
+ var nameText = ts.declarationNameToString(node);
+ // TODO (yuisu): Fix when module is a strict mode
+ var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) ||
+ grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText);
+ return errorReport;
+ }
+ return false;
+ }
function checkGrammarDecorators(node) {
if (!node.decorators) {
return false;
@@ -21398,14 +21584,14 @@ var ts;
for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) {
var modifier = _a[_i];
switch (modifier.kind) {
- case 109 /* PublicKeyword */:
- case 108 /* ProtectedKeyword */:
- case 107 /* PrivateKeyword */:
+ case 108 /* PublicKeyword */:
+ case 107 /* ProtectedKeyword */:
+ case 106 /* PrivateKeyword */:
var text = void 0;
- if (modifier.kind === 109 /* PublicKeyword */) {
+ if (modifier.kind === 108 /* PublicKeyword */) {
text = "public";
}
- else if (modifier.kind === 108 /* ProtectedKeyword */) {
+ else if (modifier.kind === 107 /* ProtectedKeyword */) {
text = "protected";
lastProtected = modifier;
}
@@ -21424,7 +21610,7 @@ var ts;
}
flags |= ts.modifierToFlag(modifier.kind);
break;
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
if (flags & 128 /* Static */) {
return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static");
}
@@ -21656,7 +21842,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103 /* ImplementsKeyword */);
+ ts.Debug.assert(heritageClause.token === 102 /* ImplementsKeyword */);
if (seenImplementsClause) {
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen);
}
@@ -21679,7 +21865,7 @@ var ts;
seenExtendsClause = true;
}
else {
- ts.Debug.assert(heritageClause.token === 103 /* ImplementsKeyword */);
+ ts.Debug.assert(heritageClause.token === 102 /* ImplementsKeyword */);
return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause);
}
// Grammar checking heritageClause inside class declaration
@@ -21721,11 +21907,11 @@ var ts;
var inStrictMode = (node.parserContextFlags & 1 /* StrictMode */) !== 0;
for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {
var prop = _a[_i];
- var name_11 = prop.name;
+ var name_13 = prop.name;
if (prop.kind === 175 /* OmittedExpression */ ||
- name_11.kind === 127 /* ComputedPropertyName */) {
+ name_13.kind === 127 /* ComputedPropertyName */) {
// If the name is not a ComputedPropertyName, the grammar checking will skip it
- checkGrammarComputedPropertyName(name_11);
+ checkGrammarComputedPropertyName(name_13);
continue;
}
// ECMA-262 11.1.5 Object Initialiser
@@ -21740,8 +21926,8 @@ var ts;
if (prop.kind === 224 /* PropertyAssignment */ || prop.kind === 225 /* ShorthandPropertyAssignment */) {
// Grammar checking for computedPropertName and shorthandPropertyAssignment
checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional);
- if (name_11.kind === 7 /* NumericLiteral */) {
- checkGrammarNumbericLiteral(name_11);
+ if (name_13.kind === 7 /* NumericLiteral */) {
+ checkGrammarNumbericLiteral(name_13);
}
currentKind = Property;
}
@@ -21757,26 +21943,26 @@ var ts;
else {
ts.Debug.fail("Unexpected syntax kind:" + prop.kind);
}
- if (!ts.hasProperty(seen, name_11.text)) {
- seen[name_11.text] = currentKind;
+ if (!ts.hasProperty(seen, name_13.text)) {
+ seen[name_13.text] = currentKind;
}
else {
- var existingKind = seen[name_11.text];
+ var existingKind = seen[name_13.text];
if (currentKind === Property && existingKind === Property) {
if (inStrictMode) {
- grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
+ grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode);
}
}
else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) {
if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) {
- seen[name_11.text] = currentKind | existingKind;
+ seen[name_13.text] = currentKind | existingKind;
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);
}
}
else {
- return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
+ return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);
}
}
}
@@ -22124,15 +22310,14 @@ var ts;
var identifier = name;
if (contextNode && (contextNode.parserContextFlags & 1 /* StrictMode */) && ts.isEvalOrArgumentsIdentifier(identifier)) {
var nameText = ts.declarationNameToString(identifier);
- // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.)
- // if so, we would like to give more explicit invalid usage error.
- // This will be particularly helpful in the case of "arguments" as such case is very common mistake.
- if (ts.getAncestor(name, 201 /* ClassDeclaration */) || ts.getAncestor(name, 174 /* ClassExpression */)) {
- return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
- }
- else {
+ // We check first if the name is inside class declaration or class expression; if so give explicit message
+ // otherwise report generic error message.
+ // reportGrammarErrorInClassDeclaration only return true if grammar error is successfully reported and false otherwise
+ var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText);
+ if (!reportErrorInClassDeclaration) {
return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText);
}
+ return reportErrorInClassDeclaration;
}
}
}
@@ -22631,9 +22816,9 @@ var ts;
}
var count = 0;
while (true) {
- var name_12 = baseName + "_" + (++count);
- if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) {
- return name_12;
+ var name_14 = baseName + "_" + (++count);
+ if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) {
+ return name_14;
}
}
}
@@ -23835,9 +24020,9 @@ var ts;
tempFlags++;
// Skip over 'i' and 'n'
if (count !== 8 && count !== 13) {
- var name_13 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26);
- if (isUniqueName(name_13)) {
- return name_13;
+ var name_15 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26);
+ if (isUniqueName(name_15)) {
+ return name_15;
}
}
}
@@ -23870,9 +24055,9 @@ var ts;
}
function generateNameForModuleOrEnum(node) {
if (node.name.kind === 65 /* Identifier */) {
- var name_14 = node.name.text;
+ var name_16 = node.name.text;
// Use module/enum name itself if it is unique, otherwise make a unique variation
- assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14));
+ assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16));
}
}
function generateNameForImportOrExportDeclaration(node) {
@@ -24085,8 +24270,8 @@ var ts;
// Child scopes are always shown with a dot (even if they have no name),
// unless it is a computed property. Then it is shown with brackets,
// but the brackets are included in the name.
- var name_15 = node.name;
- if (!name_15 || name_15.kind !== 127 /* ComputedPropertyName */) {
+ var name_17 = node.name;
+ if (!name_17 || name_17.kind !== 127 /* ComputedPropertyName */) {
scopeName = "." + scopeName;
}
scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName;
@@ -24115,10 +24300,10 @@ var ts;
node.kind === 204 /* EnumDeclaration */) {
// Declaration and has associated name use it
if (node.name) {
- var name_16 = node.name;
+ var name_18 = node.name;
// For computed property names, the text will include the brackets
- scopeName = name_16.kind === 127 /* ComputedPropertyName */
- ? ts.getTextOfNode(name_16)
+ scopeName = name_18.kind === 127 /* ComputedPropertyName */
+ ? ts.getTextOfNode(name_18)
: node.name.text;
}
recordScopeNameStart(scopeName);
@@ -24592,6 +24777,7 @@ var ts;
default:
return -1 /* LessThan */;
}
+ case 172 /* YieldExpression */:
case 170 /* ConditionalExpression */:
return -1 /* LessThan */;
default:
@@ -24779,6 +24965,16 @@ var ts;
write("...");
emit(node.expression);
}
+ function emitYieldExpression(node) {
+ write(ts.tokenToString(110 /* YieldKeyword */));
+ if (node.asteriskToken) {
+ write("*");
+ }
+ if (node.expression) {
+ write(" ");
+ emit(node.expression);
+ }
+ }
function needsParenthesisForPropertyAccessOrInvocation(node) {
switch (node.kind) {
case 65 /* Identifier */:
@@ -25037,6 +25233,9 @@ var ts;
write("]");
}
function emitMethod(node) {
+ if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) {
+ write("*");
+ }
emit(node.name, false);
if (languageVersion < 2 /* ES6 */) {
write(": function ");
@@ -25458,7 +25657,7 @@ var ts;
var tokenKind = 98 /* VarKeyword */;
if (decl && languageVersion >= 2 /* ES6 */) {
if (ts.isLet(decl)) {
- tokenKind = 105 /* LetKeyword */;
+ tokenKind = 104 /* LetKeyword */;
}
else if (ts.isConst(decl)) {
tokenKind = 70 /* ConstKeyword */;
@@ -25471,7 +25670,7 @@ var ts;
switch (tokenKind) {
case 98 /* VarKeyword */:
return write("var ");
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
return write("let ");
case 70 /* ConstKeyword */:
return write("const ");
@@ -26140,12 +26339,12 @@ var ts;
function emitParameter(node) {
if (languageVersion < 2 /* ES6 */) {
if (ts.isBindingPattern(node.name)) {
- var name_17 = createTempVariable(0 /* Auto */);
+ var name_19 = createTempVariable(0 /* Auto */);
if (!tempParameters) {
tempParameters = [];
}
- tempParameters.push(name_17);
- emit(name_17);
+ tempParameters.push(name_19);
+ emit(name_19);
}
else {
emit(node.name);
@@ -26269,7 +26468,11 @@ var ts;
write("default ");
}
}
- write("function ");
+ write("function");
+ if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) {
+ write("*");
+ }
+ write(" ");
}
if (shouldEmitFunctionName(node)) {
emitDeclarationName(node);
@@ -26616,6 +26819,9 @@ var ts;
else if (member.kind === 137 /* SetAccessor */) {
write("set ");
}
+ if (member.asteriskToken) {
+ write("*");
+ }
emit(member.name);
emitSignatureAndBody(member);
emitEnd(member);
@@ -27761,8 +27967,8 @@ var ts;
// export { x, y }
for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) {
var specifier = _d[_c];
- var name_18 = (specifier.propertyName || specifier.name).text;
- (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier);
+ var name_20 = (specifier.propertyName || specifier.name).text;
+ (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier);
}
}
break;
@@ -28094,6 +28300,8 @@ var ts;
return emitConditionalExpression(node);
case 173 /* SpreadElementExpression */:
return emitSpreadElementExpression(node);
+ case 172 /* YieldExpression */:
+ return emitYieldExpression(node);
case 175 /* OmittedExpression */:
return;
case 179 /* Block */:
@@ -29334,32 +29542,34 @@ var ts;
// Search the declarations in all files and output matched NavigateToItem into array of NavigateToItem[]
ts.forEach(program.getSourceFiles(), function (sourceFile) {
cancellationToken.throwIfCancellationRequested();
- var declarations = sourceFile.getNamedDeclarations();
- for (var _i = 0; _i < declarations.length; _i++) {
- var declaration = declarations[_i];
- var name = getDeclarationName(declaration);
- if (name !== undefined) {
+ var nameToDeclarations = sourceFile.getNamedDeclarations();
+ for (var name_21 in nameToDeclarations) {
+ var declarations = ts.getProperty(nameToDeclarations, name_21);
+ if (declarations) {
// First do a quick check to see if the name of the declaration matches the
// last portion of the (possibly) dotted name they're searching for.
- var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name);
+ var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_21);
if (!matches) {
continue;
}
- // It was a match! If the pattern has dots in it, then also see if the
- // declaration container matches as well.
- if (patternMatcher.patternContainsDots) {
- var containers = getContainers(declaration);
- if (!containers) {
- return undefined;
- }
- matches = patternMatcher.getMatches(containers, name);
- if (!matches) {
- continue;
+ for (var _i = 0; _i < declarations.length; _i++) {
+ var declaration = declarations[_i];
+ // It was a match! If the pattern has dots in it, then also see if the
+ // declaration container matches as well.
+ if (patternMatcher.patternContainsDots) {
+ var containers = getContainers(declaration);
+ if (!containers) {
+ return undefined;
+ }
+ matches = patternMatcher.getMatches(containers, name_21);
+ if (!matches) {
+ continue;
+ }
}
+ var fileName = sourceFile.fileName;
+ var matchKind = bestMatchKind(matches);
+ rawItems.push({ name: name_21, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
- var fileName = sourceFile.fileName;
- var matchKind = bestMatchKind(matches);
- rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
}
});
@@ -29380,25 +29590,13 @@ var ts;
}
return true;
}
- function getDeclarationName(declaration) {
- var result = getTextOfIdentifierOrLiteral(declaration.name);
- if (result !== undefined) {
- return result;
- }
- if (declaration.name.kind === 127 /* ComputedPropertyName */) {
- var expr = declaration.name.expression;
- if (expr.kind === 155 /* PropertyAccessExpression */) {
- return expr.name.text;
- }
- return getTextOfIdentifierOrLiteral(expr);
- }
- return undefined;
- }
function getTextOfIdentifierOrLiteral(node) {
- if (node.kind === 65 /* Identifier */ ||
- node.kind === 8 /* StringLiteral */ ||
- node.kind === 7 /* NumericLiteral */) {
- return node.text;
+ if (node) {
+ if (node.kind === 65 /* Identifier */ ||
+ node.kind === 8 /* StringLiteral */ ||
+ node.kind === 7 /* NumericLiteral */) {
+ return node.text;
+ }
}
return undefined;
}
@@ -29753,9 +29951,9 @@ var ts;
case 198 /* VariableDeclaration */:
case 152 /* BindingElement */:
var variableDeclarationNode;
- var name_19;
+ var name_22;
if (node.kind === 152 /* BindingElement */) {
- name_19 = node.name;
+ name_22 = node.name;
variableDeclarationNode = node;
// binding elements are added only for variable declarations
// bubble up to the containing variable declaration
@@ -29767,16 +29965,16 @@ var ts;
else {
ts.Debug.assert(!ts.isBindingPattern(node.name));
variableDeclarationNode = node;
- name_19 = node.name;
+ name_22 = node.name;
}
if (ts.isConst(variableDeclarationNode)) {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.constElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.constElement);
}
else if (ts.isLet(variableDeclarationNode)) {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.letElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.letElement);
}
else {
- return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.variableElement);
+ return createItem(node, getTextOfNode(name_22), ts.ScriptElementKind.variableElement);
}
case 135 /* Constructor */:
return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement);
@@ -30675,7 +30873,8 @@ var ts;
ArgumentListKind[ArgumentListKind["CallArguments"] = 1] = "CallArguments";
ArgumentListKind[ArgumentListKind["TaggedTemplateArguments"] = 2] = "TaggedTemplateArguments";
})(ArgumentListKind || (ArgumentListKind = {}));
- function getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken) {
+ function getSignatureHelpItems(program, sourceFile, position, cancellationToken) {
+ var typeChecker = program.getTypeChecker();
// Decide whether to show signature help
var startingToken = ts.findTokenOnLeftOfPosition(sourceFile, position);
if (!startingToken) {
@@ -30690,12 +30889,54 @@ var ts;
}
var call = argumentInfo.invocation;
var candidates = [];
- var resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates);
+ var resolvedSignature = typeChecker.getResolvedSignature(call, candidates);
cancellationToken.throwIfCancellationRequested();
if (!candidates.length) {
+ // We didn't have any sig help items produced by the TS compiler. If this is a JS
+ // file, then see if we can figure out anything better.
+ if (ts.isJavaScript(sourceFile.fileName)) {
+ return createJavaScriptSignatureHelpItems(argumentInfo);
+ }
return undefined;
}
return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo);
+ function createJavaScriptSignatureHelpItems(argumentInfo) {
+ if (argumentInfo.invocation.kind !== 157 /* CallExpression */) {
+ return undefined;
+ }
+ // See if we can find some symbol with the call expression name that has call signatures.
+ var callExpression = argumentInfo.invocation;
+ var expression = callExpression.expression;
+ var name = expression.kind === 65 /* Identifier */
+ ? expression
+ : expression.kind === 155 /* PropertyAccessExpression */
+ ? expression.name
+ : undefined;
+ if (!name || !name.text) {
+ return undefined;
+ }
+ var typeChecker = program.getTypeChecker();
+ for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
+ var sourceFile_1 = _a[_i];
+ var nameToDeclarations = sourceFile_1.getNamedDeclarations();
+ var declarations = ts.getProperty(nameToDeclarations, name.text);
+ if (declarations) {
+ for (var _b = 0; _b < declarations.length; _b++) {
+ var declaration = declarations[_b];
+ var symbol = declaration.symbol;
+ if (symbol) {
+ var type = typeChecker.getTypeOfSymbolAtLocation(symbol, declaration);
+ if (type) {
+ var callSignatures = type.getCallSignatures();
+ if (callSignatures && callSignatures.length) {
+ return createSignatureHelpItems(callSignatures, callSignatures[0], argumentInfo);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
/**
* Returns relevant information for the argument list and the current argument if we are
* in the argument of an invocation; returns undefined otherwise.
@@ -30949,8 +31190,8 @@ var ts;
var isTypeParameterList = argumentListInfo.kind === 0 /* TypeArguments */;
var invocation = argumentListInfo.invocation;
var callTarget = ts.getInvokedExpression(invocation);
- var callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget);
- var callTargetDisplayParts = callTargetSymbol && ts.symbolToDisplayParts(typeInfoResolver, callTargetSymbol, undefined, undefined);
+ var callTargetSymbol = typeChecker.getSymbolAtLocation(callTarget);
+ var callTargetDisplayParts = callTargetSymbol && ts.symbolToDisplayParts(typeChecker, callTargetSymbol, undefined, undefined);
var items = ts.map(candidates, function (candidateSignature) {
var signatureHelpParameters;
var prefixDisplayParts = [];
@@ -30964,13 +31205,13 @@ var ts;
signatureHelpParameters = typeParameters && typeParameters.length > 0 ? ts.map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray;
suffixDisplayParts.push(ts.punctuationPart(25 /* GreaterThanToken */));
var parameterParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation);
});
suffixDisplayParts.push.apply(suffixDisplayParts, parameterParts);
}
else {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation);
});
prefixDisplayParts.push.apply(prefixDisplayParts, typeParameterParts);
prefixDisplayParts.push(ts.punctuationPart(16 /* OpenParenToken */));
@@ -30979,7 +31220,7 @@ var ts;
suffixDisplayParts.push(ts.punctuationPart(17 /* CloseParenToken */));
}
var returnTypeParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation);
});
suffixDisplayParts.push.apply(suffixDisplayParts, returnTypeParts);
return {
@@ -31008,7 +31249,7 @@ var ts;
};
function createSignatureHelpParameterForParameter(parameter) {
var displayParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation);
});
var isOptional = ts.hasQuestionToken(parameter.valueDeclaration);
return {
@@ -31020,7 +31261,7 @@ var ts;
}
function createSignatureHelpParameterForTypeParameter(typeParameter) {
var displayParts = ts.mapToDisplayParts(function (writer) {
- return typeInfoResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation);
+ return typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation);
});
return {
name: typeParameter.symbol.name,
@@ -31468,9 +31709,9 @@ var ts;
ts.isInsideTemplateLiteral = isInsideTemplateLiteral;
function isAccessibilityModifier(kind) {
switch (kind) {
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
return true;
}
return false;
@@ -31662,6 +31903,10 @@ var ts;
});
}
ts.signatureToDisplayParts = signatureToDisplayParts;
+ function isJavaScript(fileName) {
+ return ts.fileExtensionIs(fileName, ".js");
+ }
+ ts.isJavaScript = isJavaScript;
})(ts || (ts = {}));
///
///
@@ -32183,7 +32428,7 @@ var ts;
this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(34 /* MinusToken */, 39 /* MinusMinusToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */));
this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 23 /* CommaToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */));
this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([98 /* VarKeyword */, 94 /* ThrowKeyword */, 88 /* NewKeyword */, 74 /* DeleteKeyword */, 90 /* ReturnKeyword */, 97 /* TypeOfKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
- this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([105 /* LetKeyword */, 70 /* ConstKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2 /* Space */));
+ this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([104 /* LetKeyword */, 70 /* ConstKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2 /* Space */));
this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8 /* Delete */));
this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(83 /* FunctionKeyword */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2 /* Space */));
this.NoSpaceBeforeOpenParenInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionDeclContext), 8 /* Delete */));
@@ -32206,8 +32451,8 @@ var ts;
// Use of module as a function call. e.g.: import m2 = module("m2");
this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([117 /* ModuleKeyword */, 118 /* RequireKeyword */]), 16 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */));
// Add a space around certain TypeScript keywords
- this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69 /* ClassKeyword */, 115 /* DeclareKeyword */, 77 /* EnumKeyword */, 78 /* ExportKeyword */, 79 /* ExtendsKeyword */, 116 /* GetKeyword */, 103 /* ImplementsKeyword */, 85 /* ImportKeyword */, 104 /* InterfaceKeyword */, 117 /* ModuleKeyword */, 107 /* PrivateKeyword */, 109 /* PublicKeyword */, 120 /* SetKeyword */, 110 /* StaticKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
- this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79 /* ExtendsKeyword */, 103 /* ImplementsKeyword */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
+ this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69 /* ClassKeyword */, 115 /* DeclareKeyword */, 77 /* EnumKeyword */, 78 /* ExportKeyword */, 79 /* ExtendsKeyword */, 116 /* GetKeyword */, 102 /* ImplementsKeyword */, 85 /* ImportKeyword */, 103 /* InterfaceKeyword */, 117 /* ModuleKeyword */, 106 /* PrivateKeyword */, 108 /* PublicKeyword */, 120 /* SetKeyword */, 109 /* StaticKeyword */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
+ this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79 /* ExtendsKeyword */, 102 /* ImplementsKeyword */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
// Treat string literals in module names as identifiers, and add a space between the literal and the opening Brace braces, e.g.: module "m2" {
this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(8 /* StringLiteral */, 14 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2 /* Space */));
// Lambda expressions
@@ -32226,7 +32471,7 @@ var ts;
// decorators
this.SpaceBeforeAt = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 52 /* AtToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */));
this.NoSpaceAfterAt = new formatting.Rule(formatting.RuleDescriptor.create3(52 /* AtToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */));
- this.SpaceAfterDecorator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([65 /* Identifier */, 78 /* ExportKeyword */, 73 /* DefaultKeyword */, 69 /* ClassKeyword */, 110 /* StaticKeyword */, 109 /* PublicKeyword */, 107 /* PrivateKeyword */, 108 /* ProtectedKeyword */, 116 /* GetKeyword */, 120 /* SetKeyword */, 18 /* OpenBracketToken */, 35 /* AsteriskToken */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsEndOfDecoratorContextOnSameLine), 2 /* Space */));
+ this.SpaceAfterDecorator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([65 /* Identifier */, 78 /* ExportKeyword */, 73 /* DefaultKeyword */, 69 /* ClassKeyword */, 109 /* StaticKeyword */, 108 /* PublicKeyword */, 106 /* PrivateKeyword */, 107 /* ProtectedKeyword */, 116 /* GetKeyword */, 120 /* SetKeyword */, 18 /* OpenBracketToken */, 35 /* AsteriskToken */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsEndOfDecoratorContextOnSameLine), 2 /* Space */));
// These rules are higher in priority than user-configurable rules.
this.HighPriorityCommonRules =
[
@@ -32316,9 +32561,9 @@ var ts;
}
Rules.prototype.getRuleName = function (rule) {
var o = this;
- for (var name_20 in o) {
- if (o[name_20] === rule) {
- return name_20;
+ for (var name_23 in o) {
+ if (o[name_23] === rule) {
+ return name_23;
}
}
throw new Error("Unknown rule");
@@ -33243,7 +33488,7 @@ var ts;
}
switch (node.kind) {
case 201 /* ClassDeclaration */: return 69 /* ClassKeyword */;
- case 202 /* InterfaceDeclaration */: return 104 /* InterfaceKeyword */;
+ case 202 /* InterfaceDeclaration */: return 103 /* InterfaceKeyword */;
case 200 /* FunctionDeclaration */: return 83 /* FunctionKeyword */;
case 204 /* EnumDeclaration */: return 204 /* EnumDeclaration */;
case 136 /* GetAccessor */: return 116 /* GetKeyword */;
@@ -34716,29 +34961,65 @@ var ts;
return this.namedDeclarations;
};
SourceFileObject.prototype.computeNamedDeclarations = function () {
- var namedDeclarations = [];
+ var result = {};
ts.forEachChild(this, visit);
- return namedDeclarations;
+ return result;
+ function addDeclaration(declaration) {
+ var name = getDeclarationName(declaration);
+ if (name) {
+ var declarations = getDeclarations(name);
+ declarations.push(declaration);
+ }
+ }
+ function getDeclarations(name) {
+ return ts.getProperty(result, name) || (result[name] = []);
+ }
+ function getDeclarationName(declaration) {
+ if (declaration.name) {
+ var result_2 = getTextOfIdentifierOrLiteral(declaration.name);
+ if (result_2 !== undefined) {
+ return result_2;
+ }
+ if (declaration.name.kind === 127 /* ComputedPropertyName */) {
+ var expr = declaration.name.expression;
+ if (expr.kind === 155 /* PropertyAccessExpression */) {
+ return expr.name.text;
+ }
+ return getTextOfIdentifierOrLiteral(expr);
+ }
+ }
+ return undefined;
+ }
+ function getTextOfIdentifierOrLiteral(node) {
+ if (node) {
+ if (node.kind === 65 /* Identifier */ ||
+ node.kind === 8 /* StringLiteral */ ||
+ node.kind === 7 /* NumericLiteral */) {
+ return node.text;
+ }
+ }
+ return undefined;
+ }
function visit(node) {
switch (node.kind) {
case 200 /* FunctionDeclaration */:
case 134 /* MethodDeclaration */:
case 133 /* MethodSignature */:
var functionDeclaration = node;
- if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) {
- var lastDeclaration = namedDeclarations.length > 0 ?
- namedDeclarations[namedDeclarations.length - 1] :
- undefined;
+ var declarationName = getDeclarationName(functionDeclaration);
+ if (declarationName) {
+ var declarations = getDeclarations(declarationName);
+ var lastDeclaration = ts.lastOrUndefined(declarations);
// Check whether this declaration belongs to an "overload group".
- if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) {
+ if (lastDeclaration && functionDeclaration.parent === lastDeclaration.parent && functionDeclaration.symbol === lastDeclaration.symbol) {
// Overwrite the last declaration if it was an overload
// and this one is an implementation.
if (functionDeclaration.body && !lastDeclaration.body) {
- namedDeclarations[namedDeclarations.length - 1] = functionDeclaration;
+ declarations[declarations.length - 1] = functionDeclaration;
}
}
else {
- namedDeclarations.push(functionDeclaration);
+ declarations.push(functionDeclaration);
}
ts.forEachChild(node, visit);
}
@@ -34757,9 +35038,7 @@ var ts;
case 136 /* GetAccessor */:
case 137 /* SetAccessor */:
case 145 /* TypeLiteral */:
- if (node.name) {
- namedDeclarations.push(node);
- }
+ addDeclaration(node);
// fall through
case 135 /* Constructor */:
case 180 /* VariableStatement */:
@@ -34789,7 +35068,7 @@ var ts;
case 226 /* EnumMember */:
case 132 /* PropertyDeclaration */:
case 131 /* PropertySignature */:
- namedDeclarations.push(node);
+ addDeclaration(node);
break;
case 215 /* ExportDeclaration */:
// Handle named exports case e.g.:
@@ -34804,14 +35083,14 @@ var ts;
// Handle default import case e.g.:
// import d from "mod";
if (importClause.name) {
- namedDeclarations.push(importClause);
+ addDeclaration(importClause);
}
// Handle named bindings in imports e.g.:
// import * as NS from "mod";
// import {a, b as B} from "mod";
if (importClause.namedBindings) {
if (importClause.namedBindings.kind === 211 /* NamespaceImport */) {
- namedDeclarations.push(importClause.namedBindings);
+ addDeclaration(importClause.namedBindings);
}
else {
ts.forEach(importClause.namedBindings.elements, visit);
@@ -35400,7 +35679,7 @@ var ts;
}
else if (token === 35 /* AsteriskToken */) {
token = scanner.scan();
- if (token === 102 /* AsKeyword */) {
+ if (token === 111 /* AsKeyword */) {
token = scanner.scan();
if (token === 65 /* Identifier */) {
token = scanner.scan();
@@ -35671,8 +35950,6 @@ var ts;
var syntaxTreeCache = new SyntaxTreeCache(host);
var ruleProvider;
var program;
- // this checker is used to answer all LS questions except errors
- var typeInfoResolver;
var useCaseSensitivefileNames = false;
var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken());
// Check if the localized messages json is set, otherwise query the host for it
@@ -35742,7 +36019,9 @@ var ts;
}
}
program = newProgram;
- typeInfoResolver = program.getTypeChecker();
+ // Make sure all the nodes in the program are both bound, and have their parent
+ // pointers set property.
+ program.getTypeChecker();
return;
function getOrCreateSourceFile(fileName) {
// The program is asking for this file, check first if the host can locate it.
@@ -35814,15 +36093,8 @@ var ts;
synchronizeHostData();
return program;
}
- /**
- * Clean up any semantic caches that are not needed.
- * The host can call this method if it wants to jettison unused memory.
- * We will just dump the typeChecker and recreate a new one. this should have the effect of destroying all the semantic caches.
- */
function cleanupSemanticCache() {
- if (program) {
- typeInfoResolver = program.getTypeChecker();
- }
+ // TODO: Should we jettison the program (or it's type checker) here?
}
function dispose() {
if (program) {
@@ -35836,9 +36108,6 @@ var ts;
synchronizeHostData();
return program.getSyntacticDiagnostics(getValidSourceFile(fileName));
}
- function isJavaScript(fileName) {
- return ts.fileExtensionIs(fileName, ".js");
- }
/**
* getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors
* If '-d' enabled, report both semantic and emitter errors
@@ -35849,7 +36118,7 @@ var ts;
// For JavaScript files, we don't want to report the normal typescript semantic errors.
// Instead, we just report errors for using TypeScript-only constructs from within a
// JavaScript file.
- if (isJavaScript(fileName)) {
+ if (ts.isJavaScript(fileName)) {
return getJavaScriptSemanticDiagnostics(targetSourceFile);
}
// Only perform the action per file regardless of '-out' flag as LanguageServiceHost is expected to call this function per file.
@@ -35886,7 +36155,7 @@ var ts;
break;
case 222 /* HeritageClause */:
var heritageClause = node;
- if (heritageClause.token === 103 /* ImplementsKeyword */) {
+ if (heritageClause.token === 102 /* ImplementsKeyword */) {
diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file));
return true;
}
@@ -35989,14 +36258,14 @@ var ts;
for (var _i = 0; _i < modifiers.length; _i++) {
var modifier = modifiers[_i];
switch (modifier.kind) {
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
case 115 /* DeclareKeyword */:
diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind)));
return true;
// These are all legal modifiers.
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
case 78 /* ExportKeyword */:
case 70 /* ConstKeyword */:
case 73 /* DefaultKeyword */:
@@ -36058,29 +36327,8 @@ var ts;
}
return ts.unescapeIdentifier(displayName);
}
- function createCompletionEntry(symbol, typeChecker, location) {
- // Try to get a valid display name for this symbol, if we could not find one, then ignore it.
- // We would like to only show things that can be added after a dot, so for instance numeric properties can
- // not be accessed with a dot (a.1 <- invalid)
- var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, true);
- if (!displayName) {
- return undefined;
- }
- // TODO(drosen): Right now we just permit *all* semantic meanings when calling
- // 'getSymbolKind' which is permissible given that it is backwards compatible; but
- // really we should consider passing the meaning for the node so that we don't report
- // that a suggestion for a value is an interface. We COULD also just do what
- // 'getSymbolModifiers' does, which is to use the first declaration.
- // Use a 'sortText' of 0' so that all symbol completion entries come before any other
- // entries (like JavaScript identifier entries).
- return {
- name: displayName,
- kind: getSymbolKind(symbol, typeChecker, location),
- kindModifiers: getSymbolModifiers(symbol),
- sortText: "0"
- };
- }
function getCompletionData(fileName, position) {
+ var typeChecker = program.getTypeChecker();
var syntacticStart = new Date().getTime();
var sourceFile = getValidSourceFile(fileName);
var start = new Date().getTime();
@@ -36149,26 +36397,26 @@ var ts;
isMemberCompletion = true;
isNewIdentifierLocation = false;
if (node.kind === 65 /* Identifier */ || node.kind === 126 /* QualifiedName */ || node.kind === 155 /* PropertyAccessExpression */) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
// This is an alias, follow what it aliases
if (symbol && symbol.flags & 8388608 /* Alias */) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
if (symbol && symbol.flags & 1952 /* HasExports */) {
// Extract module or enum members
- var exportedSymbols = typeInfoResolver.getExportsOfModule(symbol);
+ var exportedSymbols = typeChecker.getExportsOfModule(symbol);
ts.forEach(exportedSymbols, function (symbol) {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
}
}
- var type = typeInfoResolver.getTypeAtLocation(node);
+ var type = typeChecker.getTypeAtLocation(node);
if (type) {
// Filter private properties
ts.forEach(type.getApparentProperties(), function (symbol) {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
@@ -36180,11 +36428,11 @@ var ts;
// Object literal expression, look up possible property names from contextual type
isMemberCompletion = true;
isNewIdentifierLocation = true;
- var contextualType = typeInfoResolver.getContextualType(containingObjectLiteral);
+ var contextualType = typeChecker.getContextualType(containingObjectLiteral);
if (!contextualType) {
return false;
}
- var contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType);
+ var contextualTypeMembers = typeChecker.getPropertiesOfType(contextualType);
if (contextualTypeMembers && contextualTypeMembers.length > 0) {
// Add filtered items to the completion list
symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties);
@@ -36200,9 +36448,9 @@ var ts;
ts.Debug.assert(importDeclaration !== undefined);
var exports;
if (importDeclaration.moduleSpecifier) {
- var moduleSpecifierSymbol = typeInfoResolver.getSymbolAtLocation(importDeclaration.moduleSpecifier);
+ var moduleSpecifierSymbol = typeChecker.getSymbolAtLocation(importDeclaration.moduleSpecifier);
if (moduleSpecifierSymbol) {
- exports = typeInfoResolver.getExportsOfModule(moduleSpecifierSymbol);
+ exports = typeChecker.getExportsOfModule(moduleSpecifierSymbol);
}
}
//let exports = typeInfoResolver.getExportsOfImportDeclaration(importDeclaration);
@@ -36247,7 +36495,7 @@ var ts;
var scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile;
/// TODO filter meaning based on the current context
var symbolMeanings = 793056 /* Type */ | 107455 /* Value */ | 1536 /* Namespace */ | 8388608 /* Alias */;
- symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings);
+ symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings);
}
return true;
}
@@ -36310,9 +36558,9 @@ var ts;
return containingNodeKind === 171 /* TemplateExpression */; // `aa ${|
case 12 /* TemplateMiddle */:
return containingNodeKind === 176 /* TemplateSpan */; // `aa ${10} dd ${|
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
return containingNodeKind === 132 /* PropertyDeclaration */; // class A{ public |
}
// Previous token may have been a keyword that was converted to an identifier.
@@ -36402,6 +36650,7 @@ var ts;
containingNodeKind === 150 /* ObjectBindingPattern */; // function func({ x|
case 22 /* SemicolonToken */:
return containingNodeKind === 131 /* PropertySignature */ &&
+ previousToken.parent && previousToken.parent.parent &&
(previousToken.parent.parent.kind === 202 /* InterfaceDeclaration */ ||
previousToken.parent.parent.kind === 145 /* TypeLiteral */); // let x : { a; |
case 24 /* LessThanToken */:
@@ -36409,27 +36658,28 @@ var ts;
containingNodeKind === 200 /* FunctionDeclaration */ ||
containingNodeKind === 202 /* InterfaceDeclaration */ ||
isFunction(containingNodeKind);
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
return containingNodeKind === 132 /* PropertyDeclaration */;
case 21 /* DotDotDotToken */:
return containingNodeKind === 129 /* Parameter */ ||
containingNodeKind === 135 /* Constructor */ ||
- (previousToken.parent.parent.kind === 151 /* ArrayBindingPattern */); // var [ ...z|
- case 109 /* PublicKeyword */:
- case 107 /* PrivateKeyword */:
- case 108 /* ProtectedKeyword */:
+ (previousToken.parent && previousToken.parent.parent &&
+ previousToken.parent.parent.kind === 151 /* ArrayBindingPattern */); // var [ ...z|
+ case 108 /* PublicKeyword */:
+ case 106 /* PrivateKeyword */:
+ case 107 /* ProtectedKeyword */:
return containingNodeKind === 129 /* Parameter */;
case 69 /* ClassKeyword */:
case 77 /* EnumKeyword */:
- case 104 /* InterfaceKeyword */:
+ case 103 /* InterfaceKeyword */:
case 83 /* FunctionKeyword */:
case 98 /* VarKeyword */:
case 116 /* GetKeyword */:
case 120 /* SetKeyword */:
case 85 /* ImportKeyword */:
- case 105 /* LetKeyword */:
+ case 104 /* LetKeyword */:
case 70 /* ConstKeyword */:
- case 111 /* YieldKeyword */:
+ case 110 /* YieldKeyword */:
return true;
}
// Previous token may have been a keyword that was converted to an identifier.
@@ -36506,7 +36756,7 @@ var ts;
}
var symbols = completionData.symbols, isMemberCompletion = completionData.isMemberCompletion, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, isRightOfDot = completionData.isRightOfDot;
var entries;
- if (isRightOfDot && isJavaScript(fileName)) {
+ if (isRightOfDot && ts.isJavaScript(fileName)) {
entries = getCompletionEntriesFromSymbols(symbols);
ts.addRange(entries, getJavaScriptCompletionEntries());
}
@@ -36528,10 +36778,10 @@ var ts;
for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
var sourceFile = _a[_i];
var nameTable = getNameTable(sourceFile);
- for (var name_21 in nameTable) {
- if (!allNames[name_21]) {
- allNames[name_21] = name_21;
- var displayName = getCompletionEntryDisplayName(name_21, target, true);
+ for (var name_24 in nameTable) {
+ if (!allNames[name_24]) {
+ allNames[name_24] = name_24;
+ var displayName = getCompletionEntryDisplayName(name_24, target, true);
if (displayName) {
var entry = {
name: displayName,
@@ -36546,6 +36796,28 @@ var ts;
}
return entries;
}
+ function createCompletionEntry(symbol, location) {
+ // Try to get a valid display name for this symbol, if we could not find one, then ignore it.
+ // We would like to only show things that can be added after a dot, so for instance numeric properties can
+ // not be accessed with a dot (a.1 <- invalid)
+ var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, true);
+ if (!displayName) {
+ return undefined;
+ }
+ // TODO(drosen): Right now we just permit *all* semantic meanings when calling
+ // 'getSymbolKind' which is permissible given that it is backwards compatible; but
+ // really we should consider passing the meaning for the node so that we don't report
+ // that a suggestion for a value is an interface. We COULD also just do what
+ // 'getSymbolModifiers' does, which is to use the first declaration.
+ // Use a 'sortText' of 0' so that all symbol completion entries come before any other
+ // entries (like JavaScript identifier entries).
+ return {
+ name: displayName,
+ kind: getSymbolKind(symbol, location),
+ kindModifiers: getSymbolModifiers(symbol),
+ sortText: "0"
+ };
+ }
function getCompletionEntriesFromSymbols(symbols) {
var start = new Date().getTime();
var entries = [];
@@ -36553,7 +36825,7 @@ var ts;
var nameToSymbol = {};
for (var _i = 0; _i < symbols.length; _i++) {
var symbol = symbols[_i];
- var entry = createCompletionEntry(symbol, typeInfoResolver, location);
+ var entry = createCompletionEntry(symbol, location);
if (entry) {
var id = ts.escapeIdentifier(entry.name);
if (!ts.lookUp(nameToSymbol, id)) {
@@ -36580,7 +36852,7 @@ var ts;
// completion entry.
var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayNameForSymbol(s, target, false) === entryName ? s : undefined; });
if (symbol) {
- var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, typeInfoResolver, location_2, 7 /* All */);
+ var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, location_2, 7 /* All */);
return {
name: entryName,
kind: displayPartsDocumentationsAndSymbolKind.symbolKind,
@@ -36604,7 +36876,7 @@ var ts;
return undefined;
}
// TODO(drosen): use contextual SemanticMeaning.
- function getSymbolKind(symbol, typeResolver, location) {
+ function getSymbolKind(symbol, location) {
var flags = symbol.getFlags();
if (flags & 32 /* Class */)
return ScriptElementKind.classElement;
@@ -36616,7 +36888,7 @@ var ts;
return ScriptElementKind.interfaceElement;
if (flags & 262144 /* TypeParameter */)
return ScriptElementKind.typeParameterElement;
- var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location);
+ var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location);
if (result === ScriptElementKind.unknown) {
if (flags & 262144 /* TypeParameter */)
return ScriptElementKind.typeParameterElement;
@@ -36629,11 +36901,12 @@ var ts;
}
return result;
}
- function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location) {
- if (typeResolver.isUndefinedSymbol(symbol)) {
+ function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location) {
+ var typeChecker = program.getTypeChecker();
+ if (typeChecker.isUndefinedSymbol(symbol)) {
return ScriptElementKind.variableElement;
}
- if (typeResolver.isArgumentsSymbol(symbol)) {
+ if (typeChecker.isArgumentsSymbol(symbol)) {
return ScriptElementKind.localVariableElement;
}
if (flags & 3 /* Variable */) {
@@ -36661,7 +36934,7 @@ var ts;
if (flags & 4 /* Property */) {
if (flags & 268435456 /* UnionProperty */) {
// If union property is result of union of non method (property/accessors/variables), it is labeled as property
- var unionPropertyKind = ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) {
+ var unionPropertyKind = ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) {
var rootSymbolFlags = rootSymbol.getFlags();
if (rootSymbolFlags & (98308 /* PropertyOrAccessor */ | 3 /* Variable */)) {
return ScriptElementKind.memberVariableElement;
@@ -36671,7 +36944,7 @@ var ts;
if (!unionPropertyKind) {
// If this was union of all methods,
//make sure it has call signatures before we can label it as method
- var typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location);
+ var typeOfUnionProperty = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (typeOfUnionProperty.getCallSignatures().length) {
return ScriptElementKind.memberFunctionElement;
}
@@ -36704,14 +36977,14 @@ var ts;
? ts.getNodeModifiers(symbol.declarations[0])
: ScriptElementKindModifier.none;
}
- function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, typeResolver, location,
- // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
- semanticMeaning) {
+ // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
+ function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, location, semanticMeaning) {
if (semanticMeaning === void 0) { semanticMeaning = getMeaningFromLocation(location); }
+ var typeChecker = program.getTypeChecker();
var displayParts = [];
var documentation;
var symbolFlags = symbol.flags;
- var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location);
+ var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location);
var hasAddedSymbolInfo;
var type;
// Class at constructor site need to be shown as constructor apart from property,method, vars
@@ -36721,7 +36994,7 @@ var ts;
symbolKind = ScriptElementKind.memberVariableElement;
}
var signature;
- type = typeResolver.getTypeOfSymbolAtLocation(symbol, location);
+ type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (type) {
if (location.parent && location.parent.kind === 155 /* PropertyAccessExpression */) {
var right = location.parent.name;
@@ -36740,7 +37013,7 @@ var ts;
}
if (callExpression) {
var candidateSignatures = [];
- signature = typeResolver.getResolvedSignature(callExpression, candidateSignatures);
+ signature = typeChecker.getResolvedSignature(callExpression, candidateSignatures);
if (!signature && candidateSignatures.length) {
// Use the first candidate:
signature = candidateSignatures[0];
@@ -36785,7 +37058,7 @@ var ts;
displayParts.push(ts.spacePart());
}
if (!(type.flags & 32768 /* Anonymous */)) {
- displayParts.push.apply(displayParts, ts.symbolToDisplayParts(typeResolver, type.symbol, enclosingDeclaration, undefined, 1 /* WriteTypeParametersOrArguments */));
+ displayParts.push.apply(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, undefined, 1 /* WriteTypeParametersOrArguments */));
}
addSignatureDisplayParts(signature, allSignatures, 8 /* WriteArrowStyleSignature */);
break;
@@ -36801,8 +37074,8 @@ var ts;
// get the signature from the declaration and write it
var functionDeclaration = location.parent;
var allSignatures = functionDeclaration.kind === 135 /* Constructor */ ? type.getConstructSignatures() : type.getCallSignatures();
- if (!typeResolver.isImplementationOfOverload(functionDeclaration)) {
- signature = typeResolver.getSignatureFromDeclaration(functionDeclaration);
+ if (!typeChecker.isImplementationOfOverload(functionDeclaration)) {
+ signature = typeChecker.getSignatureFromDeclaration(functionDeclaration);
}
else {
signature = allSignatures[0];
@@ -36830,7 +37103,7 @@ var ts;
}
if ((symbolFlags & 64 /* Interface */) && (semanticMeaning & 2 /* Type */)) {
addNewLineIfDisplayPartsExist();
- displayParts.push(ts.keywordPart(104 /* InterfaceKeyword */));
+ displayParts.push(ts.keywordPart(103 /* InterfaceKeyword */));
displayParts.push(ts.spacePart());
addFullSymbolName(symbol);
writeTypeParametersOfSymbol(symbol, sourceFile);
@@ -36843,7 +37116,7 @@ var ts;
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53 /* EqualsToken */));
displayParts.push(ts.spacePart());
- displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
+ displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeChecker, typeChecker.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
}
if (symbolFlags & 384 /* Enum */) {
addNewLineIfDisplayPartsExist();
@@ -36879,7 +37152,7 @@ var ts;
else {
// Method/function type parameter
var signatureDeclaration = ts.getDeclarationOfKind(symbol, 128 /* TypeParameter */).parent;
- var signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration);
+ var signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration);
if (signatureDeclaration.kind === 139 /* ConstructSignature */) {
displayParts.push(ts.keywordPart(88 /* NewKeyword */));
displayParts.push(ts.spacePart());
@@ -36887,14 +37160,14 @@ var ts;
else if (signatureDeclaration.kind !== 138 /* CallSignature */ && signatureDeclaration.name) {
addFullSymbolName(signatureDeclaration.symbol);
}
- displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */));
+ displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */));
}
}
if (symbolFlags & 8 /* EnumMember */) {
addPrefixForAnyFunctionOrVar(symbol, "enum member");
var declaration = symbol.declarations[0];
if (declaration.kind === 226 /* EnumMember */) {
- var constantValue = typeResolver.getConstantValue(declaration);
+ var constantValue = typeChecker.getConstantValue(declaration);
if (constantValue !== undefined) {
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53 /* EqualsToken */));
@@ -36921,7 +37194,7 @@ var ts;
displayParts.push(ts.punctuationPart(17 /* CloseParenToken */));
}
else {
- var internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
+ var internalAliasSymbol = typeChecker.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
if (internalAliasSymbol) {
displayParts.push(ts.spacePart());
displayParts.push(ts.operatorPart(53 /* EqualsToken */));
@@ -36946,12 +37219,12 @@ var ts;
// If the type is type parameter, format it specially
if (type.symbol && type.symbol.flags & 262144 /* TypeParameter */) {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
else {
- displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, type, enclosingDeclaration));
+ displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeChecker, type, enclosingDeclaration));
}
}
else if (symbolFlags & 16 /* Function */ ||
@@ -36966,7 +37239,7 @@ var ts;
}
}
else {
- symbolKind = getSymbolKind(symbol, typeResolver, location);
+ symbolKind = getSymbolKind(symbol, location);
}
}
if (!documentation) {
@@ -36979,7 +37252,7 @@ var ts;
}
}
function addFullSymbolName(symbol, enclosingDeclaration) {
- var fullSymbolDisplayParts = ts.symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, undefined, 1 /* WriteTypeParametersOrArguments */ | 2 /* UseOnlyExternalAliasing */);
+ var fullSymbolDisplayParts = ts.symbolToDisplayParts(typeChecker, symbol, enclosingDeclaration || sourceFile, undefined, 1 /* WriteTypeParametersOrArguments */ | 2 /* UseOnlyExternalAliasing */);
displayParts.push.apply(displayParts, fullSymbolDisplayParts);
}
function addPrefixForAnyFunctionOrVar(symbol, symbolKind) {
@@ -37007,7 +37280,7 @@ var ts;
}
}
function addSignatureDisplayParts(signature, allSignatures, flags) {
- displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | 32 /* WriteTypeArgumentsOfSignature */));
+ displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeChecker, signature, enclosingDeclaration, flags | 32 /* WriteTypeArgumentsOfSignature */));
if (allSignatures.length > 1) {
displayParts.push(ts.spacePart());
displayParts.push(ts.punctuationPart(16 /* OpenParenToken */));
@@ -37021,7 +37294,7 @@ var ts;
}
function writeTypeParametersOfSymbol(symbol, enclosingDeclaration) {
var typeParameterParts = ts.mapToDisplayParts(function (writer) {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
@@ -37033,7 +37306,11 @@ var ts;
if (!node) {
return undefined;
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ if (isLabelName(node)) {
+ return undefined;
+ }
+ var typeChecker = program.getTypeChecker();
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (!symbol) {
// Try getting just type at this position and show
switch (node.kind) {
@@ -37043,20 +37320,20 @@ var ts;
case 93 /* ThisKeyword */:
case 91 /* SuperKeyword */:
// For the identifiers/this/super etc get the type at position
- var type = typeInfoResolver.getTypeAtLocation(node);
+ var type = typeChecker.getTypeAtLocation(node);
if (type) {
return {
kind: ScriptElementKind.unknown,
kindModifiers: ScriptElementKindModifier.none,
textSpan: ts.createTextSpan(node.getStart(), node.getWidth()),
- displayParts: ts.typeToDisplayParts(typeInfoResolver, type, getContainerNode(node)),
+ displayParts: ts.typeToDisplayParts(typeChecker, type, getContainerNode(node)),
documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined
};
}
}
return undefined;
}
- var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node);
+ var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), node);
return {
kind: displayPartsDocumentationsAndKind.symbolKind,
kindModifiers: getSymbolModifiers(symbol),
@@ -37105,7 +37382,8 @@ var ts;
}
return undefined;
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var typeChecker = program.getTypeChecker();
+ var symbol = typeChecker.getSymbolAtLocation(node);
// Could not find a symbol e.g. node is string or number keyword,
// or the symbol was an internal symbol and does not have a declaration e.g. undefined symbol
if (!symbol) {
@@ -37118,7 +37396,7 @@ var ts;
if (symbol.flags & 8388608 /* Alias */) {
var declaration = symbol.declarations[0];
if (node.kind === 65 /* Identifier */ && node.parent === declaration) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
}
// Because name in short-hand property assignment has two different meanings: property name and property value,
@@ -37127,22 +37405,22 @@ var ts;
// is performed at the location of property access, we would like to go to definition of the property in the short-hand
// assignment. This case and others are handled by the following code.
if (node.parent.kind === 225 /* ShorthandPropertyAssignment */) {
- var shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
+ var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
if (!shorthandSymbol) {
return [];
}
var shorthandDeclarations = shorthandSymbol.getDeclarations();
- var shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node);
- var shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol);
- var shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node);
+ var shorthandSymbolKind = getSymbolKind(shorthandSymbol, node);
+ var shorthandSymbolName = typeChecker.symbolToString(shorthandSymbol);
+ var shorthandContainerName = typeChecker.symbolToString(symbol.parent, node);
return ts.map(shorthandDeclarations, function (declaration) { return createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName); });
}
var result = [];
var declarations = symbol.getDeclarations();
- var symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol
- var symbolKind = getSymbolKind(symbol, typeInfoResolver, node);
+ var symbolName = typeChecker.symbolToString(symbol); // Do not get scoped name, just the name of the symbol
+ var symbolKind = getSymbolKind(symbol, node);
var containerSymbol = symbol.parent;
- var containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : "";
+ var containerName = containerSymbol ? typeChecker.symbolToString(containerSymbol, node) : "";
if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) &&
!tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) {
// Just add all the declarations.
@@ -37197,7 +37475,7 @@ var ts;
var sourceFile = getCanonicalFileName(ts.normalizeSlashes(fileName));
// Get occurrences only supports reporting occurrences for the file queried. So
// filter down to that list.
- results = ts.filter(results, function (r) { return r.fileName === fileName; });
+ results = ts.filter(results, function (r) { return getCanonicalFileName(ts.normalizeSlashes(r.fileName)) === sourceFile; });
}
return results;
}
@@ -37460,7 +37738,7 @@ var ts;
return undefined;
}
}
- else if (modifier === 110 /* StaticKeyword */) {
+ else if (modifier === 109 /* StaticKeyword */) {
if (container.kind !== 201 /* ClassDeclaration */) {
return undefined;
}
@@ -37509,13 +37787,13 @@ var ts;
return ts.map(keywords, getHighlightSpanForNode);
function getFlagFromModifier(modifier) {
switch (modifier) {
- case 109 /* PublicKeyword */:
+ case 108 /* PublicKeyword */:
return 16 /* Public */;
- case 107 /* PrivateKeyword */:
+ case 106 /* PrivateKeyword */:
return 32 /* Private */;
- case 108 /* ProtectedKeyword */:
+ case 107 /* ProtectedKeyword */:
return 64 /* Protected */;
- case 110 /* StaticKeyword */:
+ case 109 /* StaticKeyword */:
return 128 /* Static */;
case 78 /* ExportKeyword */:
return 1 /* Export */;
@@ -37776,6 +38054,7 @@ var ts;
return getReferencedSymbolsForNodes(node, program.getSourceFiles(), findInStrings, findInComments);
}
function getReferencedSymbolsForNodes(node, sourceFiles, findInStrings, findInComments) {
+ var typeChecker = program.getTypeChecker();
// Labels
if (isLabelName(node)) {
if (isJumpStatementTarget(node)) {
@@ -37795,7 +38074,7 @@ var ts;
if (node.kind === 91 /* SuperKeyword */) {
return getReferencesForSuperKeyword(node);
}
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
// Could not find a symbol e.g. unknown identifier
if (!symbol) {
// Can't have references to something that we have no symbol for.
@@ -37834,7 +38113,7 @@ var ts;
}
return result;
function getDefinition(symbol) {
- var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node);
+ var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), node);
var name = ts.map(info.displayParts, function (p) { return p.text; }).join("");
var declarations = symbol.declarations;
if (!declarations || declarations.length === 0) {
@@ -37877,7 +38156,7 @@ var ts;
if (isImportOrExportSpecifierName(location)) {
return location.getText();
}
- name = typeInfoResolver.symbolToString(symbol);
+ name = typeChecker.symbolToString(symbol);
return stripQuotes(name);
}
function getInternedName(symbol, location, declarations) {
@@ -38065,10 +38344,10 @@ var ts;
if (!(getMeaningFromLocation(referenceLocation) & searchMeaning)) {
return;
}
- var referenceSymbol = typeInfoResolver.getSymbolAtLocation(referenceLocation);
+ var referenceSymbol = typeChecker.getSymbolAtLocation(referenceLocation);
if (referenceSymbol) {
var referenceSymbolDeclaration = referenceSymbol.valueDeclaration;
- var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
+ var shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
var relatedSymbol = getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation);
if (relatedSymbol) {
var referencedSymbol = getReferencedSymbol(relatedSymbol);
@@ -38257,14 +38536,14 @@ var ts;
var result = [symbol];
// If the symbol is an alias, add what it alaises to the list
if (isImportOrExportSpecifierImportSymbol(symbol)) {
- result.push(typeInfoResolver.getAliasedSymbol(symbol));
+ result.push(typeChecker.getAliasedSymbol(symbol));
}
// If the location is in a context sensitive location (i.e. in an object literal) try
// to get a contextual type for it, and add the property symbol from the contextual
// type to the search set
if (isNameOfPropertyAssignment(location)) {
ts.forEach(getPropertySymbolsFromContextualType(location), function (contextualSymbol) {
- result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol));
+ result.push.apply(result, typeChecker.getRootSymbols(contextualSymbol));
});
/* Because in short-hand property assignment, location has two meaning : property name and as value of the property
* When we do findAllReference at the position of the short-hand property assignment, we would want to have references to position of
@@ -38277,14 +38556,14 @@ var ts;
* so that when matching with potential reference symbol, both symbols from property declaration and variable declaration
* will be included correctly.
*/
- var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent);
+ var shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(location.parent);
if (shorthandValueSymbol) {
result.push(shorthandValueSymbol);
}
}
// If this is a union property, add all the symbols from all its source symbols in all unioned types.
// If the symbol is an instantiation from a another symbol (e.g. widened symbol) , add the root the list
- ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) {
+ ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) {
if (rootSymbol !== symbol) {
result.push(rootSymbol);
}
@@ -38310,9 +38589,9 @@ var ts;
return;
function getPropertySymbolFromTypeReference(typeReference) {
if (typeReference) {
- var type = typeInfoResolver.getTypeAtLocation(typeReference);
+ var type = typeChecker.getTypeAtLocation(typeReference);
if (type) {
- var propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName);
+ var propertySymbol = typeChecker.getPropertyOfType(type, propertyName);
if (propertySymbol) {
result.push(propertySymbol);
}
@@ -38329,7 +38608,7 @@ var ts;
// If the reference symbol is an alias, check if what it is aliasing is one of the search
// symbols.
if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) {
- var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol);
+ var aliasedSymbol = typeChecker.getAliasedSymbol(referenceSymbol);
if (searchSymbols.indexOf(aliasedSymbol) >= 0) {
return aliasedSymbol;
}
@@ -38339,12 +38618,12 @@ var ts;
// compare to our searchSymbol
if (isNameOfPropertyAssignment(referenceLocation)) {
return ts.forEach(getPropertySymbolsFromContextualType(referenceLocation), function (contextualSymbol) {
- return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
+ return ts.forEach(typeChecker.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
});
}
// Unwrap symbols to get to the root (e.g. transient symbols as a result of widening)
// Or a union property, use its underlying unioned symbols
- return ts.forEach(typeInfoResolver.getRootSymbols(referenceSymbol), function (rootSymbol) {
+ return ts.forEach(typeChecker.getRootSymbols(referenceSymbol), function (rootSymbol) {
// if it is in the list, then we are done
if (searchSymbols.indexOf(rootSymbol) >= 0) {
return rootSymbol;
@@ -38352,9 +38631,9 @@ var ts;
// Finally, try all properties with the same name in any type the containing type extended or implemented, and
// see if any is in the list
if (rootSymbol.parent && rootSymbol.parent.flags & (32 /* Class */ | 64 /* Interface */)) {
- var result_2 = [];
- getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_2);
- return ts.forEach(result_2, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
+ var result_3 = [];
+ getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_3);
+ return ts.forEach(result_3, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; });
}
return undefined;
});
@@ -38362,29 +38641,29 @@ var ts;
function getPropertySymbolsFromContextualType(node) {
if (isNameOfPropertyAssignment(node)) {
var objectLiteral = node.parent.parent;
- var contextualType = typeInfoResolver.getContextualType(objectLiteral);
- var name_22 = node.text;
+ var contextualType = typeChecker.getContextualType(objectLiteral);
+ var name_25 = node.text;
if (contextualType) {
if (contextualType.flags & 16384 /* Union */) {
// This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types)
// if not, search the constituent types for the property
- var unionProperty = contextualType.getProperty(name_22);
+ var unionProperty = contextualType.getProperty(name_25);
if (unionProperty) {
return [unionProperty];
}
else {
- var result_3 = [];
+ var result_4 = [];
ts.forEach(contextualType.types, function (t) {
- var symbol = t.getProperty(name_22);
+ var symbol = t.getProperty(name_25);
if (symbol) {
- result_3.push(symbol);
+ result_4.push(symbol);
}
});
- return result_3;
+ return result_4;
}
}
else {
- var symbol_1 = contextualType.getProperty(name_22);
+ var symbol_1 = contextualType.getProperty(name_25);
if (symbol_1) {
return [symbol_1];
}
@@ -38549,7 +38828,7 @@ var ts;
}
if (!isLastClause && root.parent.kind === 177 /* HeritageClauseElement */ && root.parent.parent.kind === 222 /* HeritageClause */) {
var decl = root.parent.parent.parent;
- return (decl.kind === 201 /* ClassDeclaration */ && root.parent.parent.token === 103 /* ImplementsKeyword */) ||
+ return (decl.kind === 201 /* ClassDeclaration */ && root.parent.parent.token === 102 /* ImplementsKeyword */) ||
(decl.kind === 202 /* InterfaceDeclaration */ && root.parent.parent.token === 79 /* ExtendsKeyword */);
}
return false;
@@ -38610,7 +38889,7 @@ var ts;
function getSignatureHelpItems(fileName, position) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
- return ts.SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken);
+ return ts.SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken);
}
/// Syntactic features
function getSourceFile(fileName) {
@@ -38677,6 +38956,7 @@ var ts;
function getSemanticClassifications(fileName, span) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
+ var typeChecker = program.getTypeChecker();
var result = [];
processNode(sourceFile);
return result;
@@ -38722,7 +39002,7 @@ var ts;
// Only walk into nodes that intersect the requested span.
if (node && ts.textSpanIntersectsWith(span, node.getStart(), node.getWidth())) {
if (node.kind === 65 /* Identifier */ && node.getWidth() > 0) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
if (symbol) {
var type = classifySymbol(symbol, getMeaningFromLocation(node));
if (type) {
@@ -39134,10 +39414,11 @@ var ts;
function getRenameInfo(fileName, position) {
synchronizeHostData();
var sourceFile = getValidSourceFile(fileName);
+ var typeChecker = program.getTypeChecker();
var node = ts.getTouchingWord(sourceFile, position);
// Can only rename an identifier.
if (node && node.kind === 65 /* Identifier */) {
- var symbol = typeInfoResolver.getSymbolAtLocation(node);
+ var symbol = typeChecker.getSymbolAtLocation(node);
// Only allow a symbol to be renamed if it actually has at least one declaration.
if (symbol) {
var declarations = symbol.getDeclarations();
@@ -39147,19 +39428,19 @@ var ts;
if (defaultLibFileName) {
for (var _i = 0; _i < declarations.length; _i++) {
var current = declarations[_i];
- var sourceFile_1 = current.getSourceFile();
- if (sourceFile_1 && getCanonicalFileName(ts.normalizePath(sourceFile_1.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) {
+ var sourceFile_2 = current.getSourceFile();
+ if (sourceFile_2 && getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) {
return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library.key));
}
}
}
- var kind = getSymbolKind(symbol, typeInfoResolver, node);
+ var kind = getSymbolKind(symbol, node);
if (kind) {
return {
canRename: true,
localizedErrorMessage: undefined,
displayName: symbol.name,
- fullDisplayName: typeInfoResolver.getFullyQualifiedName(symbol),
+ fullDisplayName: typeChecker.getFullyQualifiedName(symbol),
kind: kind,
kindModifiers: getSymbolModifiers(symbol),
triggerSpan: ts.createTextSpan(node.getStart(), node.getWidth())
@@ -39304,7 +39585,7 @@ var ts;
if (keyword2 === 116 /* GetKeyword */ ||
keyword2 === 120 /* SetKeyword */ ||
keyword2 === 114 /* ConstructorKeyword */ ||
- keyword2 === 110 /* StaticKeyword */) {
+ keyword2 === 109 /* StaticKeyword */) {
// Allow things like "public get", "public constructor" and "public static".
// These are all legal.
return true;
diff --git a/scripts/processDiagnosticMessages.ts b/scripts/processDiagnosticMessages.ts
index b97e4a2ea54..9cfde5b2964 100644
--- a/scripts/processDiagnosticMessages.ts
+++ b/scripts/processDiagnosticMessages.ts
@@ -54,6 +54,7 @@ function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, nameMap:
var result =
'// \r\n' +
'/// \r\n' +
+ '/* @internal */\r\n' +
'module ts {\r\n' +
' export var Diagnostics = {\r\n';
var names = Utilities.getObjectKeys(messageTable);
diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts
index 2490c32fedc..e9430a058f8 100644
--- a/src/compiler/checker.ts
+++ b/src/compiler/checker.ts
@@ -2904,16 +2904,17 @@ module ts {
}
function getPropertiesOfType(type: Type): Symbol[] {
- if (type.flags & TypeFlags.Union) {
- return getPropertiesOfUnionType(type);
- }
- return getPropertiesOfObjectType(getApparentType(type));
+ type = getApparentType(type);
+ return type.flags & TypeFlags.Union ? getPropertiesOfUnionType(type) : getPropertiesOfObjectType(type);
}
// For a type parameter, return the base constraint of the type parameter. For the string, number,
// boolean, and symbol primitive types, return the corresponding object types. Otherwise return the
// type itself. Note that the apparent type of a union type is the union type itself.
function getApparentType(type: Type): Type {
+ if (type.flags & TypeFlags.Union) {
+ type = getReducedTypeOfUnionType(type);
+ }
if (type.flags & TypeFlags.TypeParameter) {
do {
type = getConstraintOfTypeParameter(type);
@@ -2986,27 +2987,27 @@ module ts {
// necessary, maps primitive types and type parameters are to their apparent types, and augments with properties from
// Object and Function as appropriate.
function getPropertyOfType(type: Type, name: string): Symbol {
+ type = getApparentType(type);
+ if (type.flags & TypeFlags.ObjectType) {
+ let resolved = resolveObjectOrUnionTypeMembers(type);
+ if (hasProperty(resolved.members, name)) {
+ let symbol = resolved.members[name];
+ if (symbolIsValue(symbol)) {
+ return symbol;
+ }
+ }
+ if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
+ let symbol = getPropertyOfObjectType(globalFunctionType, name);
+ if (symbol) {
+ return symbol;
+ }
+ }
+ return getPropertyOfObjectType(globalObjectType, name);
+ }
if (type.flags & TypeFlags.Union) {
return getPropertyOfUnionType(type, name);
}
- if (!(type.flags & TypeFlags.ObjectType)) {
- type = getApparentType(type);
- if (!(type.flags & TypeFlags.ObjectType)) {
- return undefined;
- }
- }
- let resolved = resolveObjectOrUnionTypeMembers(type);
- if (hasProperty(resolved.members, name)) {
- let symbol = resolved.members[name];
- if (symbolIsValue(symbol)) {
- return symbol;
- }
- }
- if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) {
- let symbol = getPropertyOfObjectType(globalFunctionType, name);
- if (symbol) return symbol;
- }
- return getPropertyOfObjectType(globalObjectType, name);
+ return undefined;
}
function getSignaturesOfObjectOrUnionType(type: Type, kind: SignatureKind): Signature[] {
@@ -3581,6 +3582,10 @@ module ts {
}
}
+ // The noSubtypeReduction flag is there because it isn't possible to always do subtype reduction. The flag
+ // is true when creating a union type from a type node and when instantiating a union type. In both of those
+ // cases subtype reduction has to be deferred to properly support recursive union types. For example, a
+ // type alias of the form "type Item = string | (() => Item)" cannot be reduced during its declaration.
function getUnionType(types: Type[], noSubtypeReduction?: boolean): Type {
if (types.length === 0) {
return emptyObjectType;
@@ -3605,10 +3610,19 @@ module ts {
if (!type) {
type = unionTypes[id] = createObjectType(TypeFlags.Union | getWideningFlagsOfTypes(sortedTypes));
type.types = sortedTypes;
+ type.reducedType = noSubtypeReduction ? undefined : type;
}
return type;
}
+ function getReducedTypeOfUnionType(type: UnionType): Type {
+ // If union type was created without subtype reduction, perform the deferred reduction now
+ if (!type.reducedType) {
+ type.reducedType = getUnionType(type.types, /*noSubtypeReduction*/ false);
+ }
+ return type.reducedType;
+ }
+
function getTypeFromUnionTypeNode(node: UnionTypeNode): Type {
let links = getNodeLinks(node);
if (!links.resolvedType) {
@@ -9412,7 +9426,10 @@ module ts {
}
if (isArrayLikeType(inputType)) {
- return getIndexTypeOfType(inputType, IndexKind.Number);
+ let indexType = getIndexTypeOfType(inputType, IndexKind.Number);
+ if (indexType) {
+ return indexType;
+ }
}
error(errorNode, Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType));
diff --git a/src/compiler/core.ts b/src/compiler/core.ts
index 61fe2c7209a..80840068332 100644
--- a/src/compiler/core.ts
+++ b/src/compiler/core.ts
@@ -659,10 +659,6 @@ module ts {
"\u0085": "\\u0085" // nextLine
};
- export function getDefaultLibFileName(options: CompilerOptions): string {
- return options.target === ScriptTarget.ES6 ? "lib.es6.d.ts" : "lib.d.ts";
- }
-
export interface ObjectAllocator {
getNodeConstructor(kind: SyntaxKind): new () => Node;
getSymbolConstructor(): new (flags: SymbolFlags, name: string) => Symbol;
diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json
index ea40d118382..063a0d50ef5 100644
--- a/src/compiler/diagnosticMessages.json
+++ b/src/compiler/diagnosticMessages.json
@@ -2043,19 +2043,19 @@
},
"'import ... =' can only be used in a .ts file.": {
"category": "Error",
- "code": 8002
+ "code": 8002
},
"'export=' can only be used in a .ts file.": {
"category": "Error",
- "code": 8003
+ "code": 8003
},
"'type parameter declarations' can only be used in a .ts file.": {
"category": "Error",
- "code": 8004
+ "code": 8004
},
"'implements clauses' can only be used in a .ts file.": {
"category": "Error",
- "code": 8005
+ "code": 8005
},
"'interface declarations' can only be used in a .ts file.": {
"category": "Error",
diff --git a/src/compiler/types.ts b/src/compiler/types.ts
index 43c210331a5..a8e0544f4ea 100644
--- a/src/compiler/types.ts
+++ b/src/compiler/types.ts
@@ -121,7 +121,6 @@ module ts {
WhileKeyword,
WithKeyword,
// Strict mode reserved words
- AsKeyword,
ImplementsKeyword,
InterfaceKeyword,
LetKeyword,
@@ -132,6 +131,7 @@ module ts {
StaticKeyword,
YieldKeyword,
// Contextual keywords
+ AsKeyword,
AnyKeyword,
BooleanKeyword,
ConstructorKeyword,
@@ -1512,6 +1512,8 @@ module ts {
export interface UnionType extends Type {
types: Type[]; // Constituent types
/* @internal */
+ reducedType: Type; // Reduced union type (all subtypes removed)
+ /* @internal */
resolvedProperties: SymbolTable; // Cache of resolved properties
}
diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts
index b0c50fc7f66..8a34d2f315b 100644
--- a/src/compiler/utilities.ts
+++ b/src/compiler/utilities.ts
@@ -271,7 +271,6 @@ module ts {
};
}
- /* @internal */
export function getSpanOfTokenAtPosition(sourceFile: SourceFile, pos: number): TextSpan {
let scanner = createScanner(sourceFile.languageVersion, /*skipTrivia*/ true, sourceFile.text);
scanner.setTextPos(pos);
@@ -408,7 +407,6 @@ module ts {
export let fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/
-
// Warning: This has the same semantics as the forEach family of functions,
// in that traversal terminates in the event that 'visitor' supplies a truthy value.
export function forEachReturnStatement(body: Block, visitor: (stmt: ReturnStatement) => T): T {
@@ -439,7 +437,6 @@ module ts {
}
}
- /* @internal */
export function isVariableLike(node: Node): boolean {
if (node) {
switch (node.kind) {
@@ -1151,218 +1148,7 @@ module ts {
}
return false;
}
-
- export function textSpanEnd(span: TextSpan) {
- return span.start + span.length
- }
-
- export function textSpanIsEmpty(span: TextSpan) {
- return span.length === 0
- }
-
- export function textSpanContainsPosition(span: TextSpan, position: number) {
- return position >= span.start && position < textSpanEnd(span);
- }
-
- // Returns true if 'span' contains 'other'.
- export function textSpanContainsTextSpan(span: TextSpan, other: TextSpan) {
- return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
- }
-
- export function textSpanOverlapsWith(span: TextSpan, other: TextSpan) {
- let overlapStart = Math.max(span.start, other.start);
- let overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
- return overlapStart < overlapEnd;
- }
-
- export function textSpanOverlap(span1: TextSpan, span2: TextSpan) {
- let overlapStart = Math.max(span1.start, span2.start);
- let overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (overlapStart < overlapEnd) {
- return createTextSpanFromBounds(overlapStart, overlapEnd);
- }
- return undefined;
- }
-
- export function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan) {
- return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start
- }
-
- export function textSpanIntersectsWith(span: TextSpan, start: number, length: number) {
- let end = start + length;
- return start <= textSpanEnd(span) && end >= span.start;
- }
-
- export function textSpanIntersectsWithPosition(span: TextSpan, position: number) {
- return position <= textSpanEnd(span) && position >= span.start;
- }
-
- export function textSpanIntersection(span1: TextSpan, span2: TextSpan) {
- let intersectStart = Math.max(span1.start, span2.start);
- let intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
- if (intersectStart <= intersectEnd) {
- return createTextSpanFromBounds(intersectStart, intersectEnd);
- }
- return undefined;
- }
-
- export function createTextSpan(start: number, length: number): TextSpan {
- if (start < 0) {
- throw new Error("start < 0");
- }
- if (length < 0) {
- throw new Error("length < 0");
- }
-
- return { start, length };
- }
-
- export function createTextSpanFromBounds(start: number, end: number) {
- return createTextSpan(start, end - start);
- }
-
- export function textChangeRangeNewSpan(range: TextChangeRange) {
- return createTextSpan(range.span.start, range.newLength);
- }
-
- export function textChangeRangeIsUnchanged(range: TextChangeRange) {
- return textSpanIsEmpty(range.span) && range.newLength === 0;
- }
-
- export function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange {
- if (newLength < 0) {
- throw new Error("newLength < 0");
- }
-
- return { span, newLength };
- }
-
- export let unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
-
- /**
- * Called to merge all the changes that occurred across several versions of a script snapshot
- * into a single change. i.e. if a user keeps making successive edits to a script we will
- * have a text change from V1 to V2, V2 to V3, ..., Vn.
- *
- * This function will then merge those changes into a single change range valid between V1 and
- * Vn.
- */
- export function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange {
- if (changes.length === 0) {
- return unchangedTextChangeRange;
- }
-
- if (changes.length === 1) {
- return changes[0];
- }
-
- // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd }
- // as it makes things much easier to reason about.
- let change0 = changes[0];
-
- let oldStartN = change0.span.start;
- let oldEndN = textSpanEnd(change0.span);
- let newEndN = oldStartN + change0.newLength;
-
- for (let i = 1; i < changes.length; i++) {
- let nextChange = changes[i];
-
- // Consider the following case:
- // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting
- // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }.
- // i.e. the span starting at 30 with length 30 is increased to length 40.
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // -------------------------------------------------------------------------------------------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // -------------------------------------------------------------------------------------------------------
- // | \
- // | \
- // T2 | \
- // | \
- // | \
- // -------------------------------------------------------------------------------------------------------
- //
- // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial
- // it's just the min of the old and new starts. i.e.:
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // ------------------------------------------------------------*------------------------------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // ----------------------------------------$-------------------$------------------------------------------
- // . | \
- // . | \
- // T2 . | \
- // . | \
- // . | \
- // ----------------------------------------------------------------------*--------------------------------
- //
- // (Note the dots represent the newly inferrred start.
- // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the
- // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see
- // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that
- // means:
- //
- // 0 10 20 30 40 50 60 70 80 90 100
- // --------------------------------------------------------------------------------*----------------------
- // | /
- // | /----
- // T1 | /----
- // | /----
- // | /----
- // ------------------------------------------------------------$------------------------------------------
- // . | \
- // . | \
- // T2 . | \
- // . | \
- // . | \
- // ----------------------------------------------------------------------*--------------------------------
- //
- // In other words (in this case), we're recognizing that the second edit happened after where the first edit
- // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started
- // that's the same as if we started at char 80 instead of 60.
- //
- // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter
- // than pusing the first edit forward to match the second, we'll push the second edit forward to match the
- // first.
- //
- // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange
- // semantics: { { start: 10, length: 70 }, newLength: 60 }
- //
- // The math then works out as follows.
- // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the
- // final result like so:
- //
- // {
- // oldStart3: Min(oldStart1, oldStart2),
- // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
- // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
- // }
-
- let oldStart1 = oldStartN;
- let oldEnd1 = oldEndN;
- let newEnd1 = newEndN;
-
- let oldStart2 = nextChange.span.start;
- let oldEnd2 = textSpanEnd(nextChange.span);
- let newEnd2 = oldStart2 + nextChange.newLength;
-
- oldStartN = Math.min(oldStart1, oldStart2);
- oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
- newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
- }
-
- return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), /*newLength:*/ newEndN - oldStartN);
- }
-
+
export function nodeStartsNewLexicalEnvironment(n: Node): boolean {
return isFunctionLike(n) || n.kind === SyntaxKind.ModuleDeclaration || n.kind === SyntaxKind.SourceFile;
}
@@ -1379,7 +1165,6 @@ module ts {
return node;
}
- /* @internal */
export function createDiagnosticCollection(): DiagnosticCollection {
let nonFileDiagnostics: Diagnostic[] = [];
let fileDiagnostics: Map = {};
@@ -1854,3 +1639,220 @@ module ts {
return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & NodeFlags.Default) ? symbol.valueDeclaration.localSymbol : undefined;
}
}
+
+module ts {
+ export function getDefaultLibFileName(options: CompilerOptions): string {
+ return options.target === ScriptTarget.ES6 ? "lib.es6.d.ts" : "lib.d.ts";
+ }
+
+ export function textSpanEnd(span: TextSpan) {
+ return span.start + span.length
+ }
+
+ export function textSpanIsEmpty(span: TextSpan) {
+ return span.length === 0
+ }
+
+ export function textSpanContainsPosition(span: TextSpan, position: number) {
+ return position >= span.start && position < textSpanEnd(span);
+ }
+
+ // Returns true if 'span' contains 'other'.
+ export function textSpanContainsTextSpan(span: TextSpan, other: TextSpan) {
+ return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span);
+ }
+
+ export function textSpanOverlapsWith(span: TextSpan, other: TextSpan) {
+ let overlapStart = Math.max(span.start, other.start);
+ let overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other));
+ return overlapStart < overlapEnd;
+ }
+
+ export function textSpanOverlap(span1: TextSpan, span2: TextSpan) {
+ let overlapStart = Math.max(span1.start, span2.start);
+ let overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (overlapStart < overlapEnd) {
+ return createTextSpanFromBounds(overlapStart, overlapEnd);
+ }
+ return undefined;
+ }
+
+ export function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan) {
+ return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start
+ }
+
+ export function textSpanIntersectsWith(span: TextSpan, start: number, length: number) {
+ let end = start + length;
+ return start <= textSpanEnd(span) && end >= span.start;
+ }
+
+ export function textSpanIntersectsWithPosition(span: TextSpan, position: number) {
+ return position <= textSpanEnd(span) && position >= span.start;
+ }
+
+ export function textSpanIntersection(span1: TextSpan, span2: TextSpan) {
+ let intersectStart = Math.max(span1.start, span2.start);
+ let intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2));
+ if (intersectStart <= intersectEnd) {
+ return createTextSpanFromBounds(intersectStart, intersectEnd);
+ }
+ return undefined;
+ }
+
+ export function createTextSpan(start: number, length: number): TextSpan {
+ if (start < 0) {
+ throw new Error("start < 0");
+ }
+ if (length < 0) {
+ throw new Error("length < 0");
+ }
+
+ return { start, length };
+ }
+
+ export function createTextSpanFromBounds(start: number, end: number) {
+ return createTextSpan(start, end - start);
+ }
+
+ export function textChangeRangeNewSpan(range: TextChangeRange) {
+ return createTextSpan(range.span.start, range.newLength);
+ }
+
+ export function textChangeRangeIsUnchanged(range: TextChangeRange) {
+ return textSpanIsEmpty(range.span) && range.newLength === 0;
+ }
+
+ export function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange {
+ if (newLength < 0) {
+ throw new Error("newLength < 0");
+ }
+
+ return { span, newLength };
+ }
+
+ export let unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0);
+
+ /**
+ * Called to merge all the changes that occurred across several versions of a script snapshot
+ * into a single change. i.e. if a user keeps making successive edits to a script we will
+ * have a text change from V1 to V2, V2 to V3, ..., Vn.
+ *
+ * This function will then merge those changes into a single change range valid between V1 and
+ * Vn.
+ */
+ export function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange {
+ if (changes.length === 0) {
+ return unchangedTextChangeRange;
+ }
+
+ if (changes.length === 1) {
+ return changes[0];
+ }
+
+ // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd }
+ // as it makes things much easier to reason about.
+ let change0 = changes[0];
+
+ let oldStartN = change0.span.start;
+ let oldEndN = textSpanEnd(change0.span);
+ let newEndN = oldStartN + change0.newLength;
+
+ for (let i = 1; i < changes.length; i++) {
+ let nextChange = changes[i];
+
+ // Consider the following case:
+ // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting
+ // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }.
+ // i.e. the span starting at 30 with length 30 is increased to length 40.
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // -------------------------------------------------------------------------------------------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // -------------------------------------------------------------------------------------------------------
+ // | \
+ // | \
+ // T2 | \
+ // | \
+ // | \
+ // -------------------------------------------------------------------------------------------------------
+ //
+ // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial
+ // it's just the min of the old and new starts. i.e.:
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // ------------------------------------------------------------*------------------------------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // ----------------------------------------$-------------------$------------------------------------------
+ // . | \
+ // . | \
+ // T2 . | \
+ // . | \
+ // . | \
+ // ----------------------------------------------------------------------*--------------------------------
+ //
+ // (Note the dots represent the newly inferrred start.
+ // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the
+ // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see
+ // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that
+ // means:
+ //
+ // 0 10 20 30 40 50 60 70 80 90 100
+ // --------------------------------------------------------------------------------*----------------------
+ // | /
+ // | /----
+ // T1 | /----
+ // | /----
+ // | /----
+ // ------------------------------------------------------------$------------------------------------------
+ // . | \
+ // . | \
+ // T2 . | \
+ // . | \
+ // . | \
+ // ----------------------------------------------------------------------*--------------------------------
+ //
+ // In other words (in this case), we're recognizing that the second edit happened after where the first edit
+ // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started
+ // that's the same as if we started at char 80 instead of 60.
+ //
+ // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter
+ // than pusing the first edit forward to match the second, we'll push the second edit forward to match the
+ // first.
+ //
+ // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange
+ // semantics: { { start: 10, length: 70 }, newLength: 60 }
+ //
+ // The math then works out as follows.
+ // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the
+ // final result like so:
+ //
+ // {
+ // oldStart3: Min(oldStart1, oldStart2),
+ // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
+ // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
+ // }
+
+ let oldStart1 = oldStartN;
+ let oldEnd1 = oldEndN;
+ let newEnd1 = newEndN;
+
+ let oldStart2 = nextChange.span.start;
+ let oldEnd2 = textSpanEnd(nextChange.span);
+ let newEnd2 = oldStart2 + nextChange.newLength;
+
+ oldStartN = Math.min(oldStart1, oldStart2);
+ oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1));
+ newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2));
+ }
+
+ return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), /*newLength:*/ newEndN - oldStartN);
+ }
+}
\ No newline at end of file
diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts
index 4c50e0e0cad..736974c49a1 100644
--- a/src/harness/typeWriter.ts
+++ b/src/harness/typeWriter.ts
@@ -1,6 +1,5 @@
interface TypeWriterResult {
line: number;
- column: number;
syntaxKind: number;
sourceText: string;
type: string;
@@ -29,90 +28,43 @@ class TypeWriterWalker {
}
private visitNode(node: ts.Node): void {
- switch (node.kind) {
- // Should always log expressions that are not tokens
- // Also, always log the "this" keyword
- // TODO: Ideally we should log all expressions, but to compare to the
- // old typeWriter baselines, suppress tokens
- case ts.SyntaxKind.ThisKeyword:
- case ts.SyntaxKind.SuperKeyword:
- case ts.SyntaxKind.ArrayLiteralExpression:
- case ts.SyntaxKind.ObjectLiteralExpression:
- case ts.SyntaxKind.ElementAccessExpression:
- case ts.SyntaxKind.CallExpression:
- case ts.SyntaxKind.NewExpression:
- case ts.SyntaxKind.TypeAssertionExpression:
- case ts.SyntaxKind.ParenthesizedExpression:
- case ts.SyntaxKind.FunctionExpression:
- case ts.SyntaxKind.ArrowFunction:
- case ts.SyntaxKind.TypeOfExpression:
- case ts.SyntaxKind.VoidExpression:
- case ts.SyntaxKind.DeleteExpression:
- case ts.SyntaxKind.PrefixUnaryExpression:
- case ts.SyntaxKind.PostfixUnaryExpression:
- case ts.SyntaxKind.BinaryExpression:
- case ts.SyntaxKind.ConditionalExpression:
- case ts.SyntaxKind.SpreadElementExpression:
- this.log(node, this.getTypeOfNode(node));
- break;
-
- case ts.SyntaxKind.PropertyAccessExpression:
- for (var current = node; current.kind === ts.SyntaxKind.PropertyAccessExpression; current = current.parent) {
- }
- if (current.kind !== ts.SyntaxKind.HeritageClauseElement) {
- this.log(node, this.getTypeOfNode(node));
- }
- break;
-
- // Should not change expression status (maybe expressions)
- // TODO: Again, ideally should log number and string literals too,
- // but to be consistent with the old typeWriter, just log identifiers
- case ts.SyntaxKind.Identifier:
- var identifier = node;
- if (!this.isLabel(identifier)) {
- var type = this.getTypeOfNode(identifier);
- this.log(node, type);
- }
- break;
+ if (ts.isExpression(node) || node.kind === ts.SyntaxKind.Identifier) {
+ this.logTypeAndSymbol(node);
}
ts.forEachChild(node, child => this.visitNode(child));
}
- private isLabel(identifier: ts.Identifier): boolean {
- var parent = identifier.parent;
- switch (parent.kind) {
- case ts.SyntaxKind.ContinueStatement:
- case ts.SyntaxKind.BreakStatement:
- return (parent).label === identifier;
- case ts.SyntaxKind.LabeledStatement:
- return (parent).label === identifier;
- }
- return false;
- }
-
- private log(node: ts.Node, type: ts.Type): void {
+ private logTypeAndSymbol(node: ts.Node): void {
var actualPos = ts.skipTrivia(this.currentSourceFile.text, node.pos);
var lineAndCharacter = this.currentSourceFile.getLineAndCharacterOfPosition(actualPos);
var sourceText = ts.getTextOfNodeFromSourceText(this.currentSourceFile.text, node);
-
- // If we got an unknown type, we temporarily want to fall back to just pretending the name
- // (source text) of the node is the type. This is to align with the old typeWriter to make
- // baseline comparisons easier. In the long term, we will want to just call typeToString
- this.results.push({
- line: lineAndCharacter.line,
- // todo(cyrusn): Not sure why column is one-based for type-writer. But I'm preserving
- // that behavior to prevent having a lot of baselines to fix up.
- column: lineAndCharacter.character + 1,
- syntaxKind: node.kind,
- sourceText: sourceText,
- type: this.checker.typeToString(type, node.parent, ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.WriteOwnNameForAnyLike)
- });
- }
- private getTypeOfNode(node: ts.Node): ts.Type {
var type = this.checker.getTypeAtLocation(node);
ts.Debug.assert(type !== undefined, "type doesn't exist");
- return type;
+ var symbol = this.checker.getSymbolAtLocation(node);
+
+ var typeString = this.checker.typeToString(type, node.parent, ts.TypeFormatFlags.NoTruncation);
+ if (symbol) {
+ var symbolString = "Symbol(" + this.checker.symbolToString(symbol, node.parent);
+ if (symbol.declarations) {
+ for (let declaration of symbol.declarations) {
+ symbolString += ", ";
+ let declSourceFile = declaration.getSourceFile();
+ let declLineAndCharacter = declSourceFile.getLineAndCharacterOfPosition(declaration.pos);
+ symbolString += `Decl(${ ts.getBaseFileName(declSourceFile.fileName) }, ${ declLineAndCharacter.line }, ${ declLineAndCharacter.character })`
+ }
+ }
+ symbolString += ")";
+
+ typeString += ", " + symbolString;
+ }
+
+ this.results.push({
+ line: lineAndCharacter.line,
+ syntaxKind: node.kind,
+ sourceText: sourceText,
+ type: typeString
+ });
}
}
diff --git a/src/server/session.ts b/src/server/session.ts
index 09373d6bf96..faedce0e1af 100644
--- a/src/server/session.ts
+++ b/src/server/session.ts
@@ -118,7 +118,7 @@ module ts.server {
constructor(private host: ServerHost, private logger: Logger) {
this.projectService =
- new ProjectService(host, logger, (eventName, project, fileName) => {
+ new ProjectService(host, logger, (eventName,project,fileName) => {
this.handleEvent(eventName, project, fileName);
});
}
@@ -263,7 +263,7 @@ module ts.server {
}
}
- getDefinition({ line, offset, file: fileName }: protocol.FileLocationRequestArgs): protocol.FileSpan[] {
+ getDefinition(line: number, offset: number, fileName: string): protocol.FileSpan[] {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -285,7 +285,7 @@ module ts.server {
}));
}
- getOccurrences({ line, offset, file: fileName }: protocol.FileLocationRequestArgs): protocol.OccurrencesResponseItem[] {
+ getOccurrences(line: number, offset: number, fileName: string): protocol.OccurrencesResponseItem[] {
fileName = ts.normalizePath(fileName);
let project = this.projectService.getProjectForFile(fileName);
@@ -315,7 +315,7 @@ module ts.server {
});
}
- getRenameLocations({line, offset, file: fileName, findInComments, findInStrings }: protocol.RenameRequestArgs): protocol.RenameResponseBody {
+ getRenameLocations(line: number, offset: number, fileName: string,findInComments: boolean, findInStrings: boolean): protocol.RenameResponseBody {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -383,7 +383,7 @@ module ts.server {
return { info: renameInfo, locs: bakedRenameLocs };
}
- getReferences({ line, offset, file: fileName }: protocol.FileLocationRequestArgs): protocol.ReferencesResponseBody {
+ getReferences(line: number, offset: number, fileName: string): protocol.ReferencesResponseBody {
// TODO: get all projects for this file; report refs for all projects deleting duplicates
// can avoid duplicates by eliminating same ref file from subsequent projects
var file = ts.normalizePath(fileName);
@@ -430,12 +430,12 @@ module ts.server {
};
}
- openClientFile({ file: fileName }: protocol.OpenRequestArgs) {
+ openClientFile(fileName: string) {
var file = ts.normalizePath(fileName);
this.projectService.openClientFile(file);
}
- getQuickInfo({ line, offset, file: fileName }: protocol.FileLocationRequestArgs): protocol.QuickInfoResponseBody {
+ getQuickInfo(line: number, offset: number, fileName: string): protocol.QuickInfoResponseBody {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -461,7 +461,7 @@ module ts.server {
};
}
- getFormattingEditsForRange({line, offset, endLine, endOffset, file: fileName}: protocol.FormatRequestArgs): protocol.CodeEdit[] {
+ getFormattingEditsForRange(line: number, offset: number, endLine: number, endOffset: number, fileName: string): protocol.CodeEdit[] {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -488,7 +488,7 @@ module ts.server {
});
}
- getFormattingEditsAfterKeystroke({line, offset, key, file: fileName}: protocol.FormatOnKeyRequestArgs): protocol.CodeEdit[] {
+ getFormattingEditsAfterKeystroke(line: number, offset: number, key: string, fileName: string): protocol.CodeEdit[] {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
@@ -561,7 +561,7 @@ module ts.server {
});
}
- getCompletions({ line, offset, prefix, file: fileName}: protocol.CompletionsRequestArgs): protocol.CompletionEntry[] {
+ getCompletions(line: number, offset: number, prefix: string, fileName: string): protocol.CompletionEntry[] {
if (!prefix) {
prefix = "";
}
@@ -587,7 +587,8 @@ module ts.server {
}, []).sort((a, b) => a.name.localeCompare(b.name));
}
- getCompletionEntryDetails({ line, offset, entryNames, file: fileName}: protocol.CompletionDetailsRequestArgs): protocol.CompletionEntryDetails[] {
+ getCompletionEntryDetails(line: number, offset: number,
+ entryNames: string[], fileName: string): protocol.CompletionEntryDetails[] {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -606,20 +607,20 @@ module ts.server {
}, []);
}
- getSignatureHelpItems({ line, offset, file: fileName }: protocol.SignatureHelpRequestArgs): protocol.SignatureHelpItems {
+ getSignatureHelpItems(line: number, offset: number, fileName: string): protocol.SignatureHelpItems {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
throw Errors.NoProject;
}
-
+
var compilerService = project.compilerService;
var position = compilerService.host.lineOffsetToPosition(file, line, offset);
var helpItems = compilerService.languageService.getSignatureHelpItems(file, position);
if (!helpItems) {
return undefined;
}
-
+
var span = helpItems.applicableSpan;
var result: protocol.SignatureHelpItems = {
items: helpItems.items,
@@ -631,11 +632,11 @@ module ts.server {
argumentIndex: helpItems.argumentIndex,
argumentCount: helpItems.argumentCount,
}
-
+
return result;
}
-
- getDiagnostics({ delay, files: fileNames }: protocol.GeterrRequestArgs): void {
+
+ getDiagnostics(delay: number, fileNames: string[]) {
var checkList = fileNames.reduce((accum: PendingErrorCheck[], fileName: string) => {
fileName = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(fileName);
@@ -646,11 +647,11 @@ module ts.server {
}, []);
if (checkList.length > 0) {
- this.updateErrorCheck(checkList, this.changeSeq, (n) => n == this.changeSeq, delay)
+ this.updateErrorCheck(checkList, this.changeSeq,(n) => n == this.changeSeq, delay)
}
}
- change({ line, offset, endLine, endOffset, insertString, file: fileName }: protocol.ChangeRequestArgs): void {
+ change(line: number, offset: number, endLine: number, endOffset: number, insertString: string, fileName: string) {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (project) {
@@ -665,7 +666,7 @@ module ts.server {
}
}
- reload({ file: fileName, tmpfile: tempFileName }: protocol.ReloadRequestArgs, reqSeq = 0): void {
+ reload(fileName: string, tempFileName: string, reqSeq = 0) {
var file = ts.normalizePath(fileName);
var tmpfile = ts.normalizePath(tempFileName);
var project = this.projectService.getProjectForFile(file);
@@ -678,7 +679,7 @@ module ts.server {
}
}
- saveToTmp({ file: fileName, tmpfile: tempFileName }: protocol.SavetoRequestArgs): void {
+ saveToTmp(fileName: string, tempFileName: string) {
var file = ts.normalizePath(fileName);
var tmpfile = ts.normalizePath(tempFileName);
@@ -688,7 +689,7 @@ module ts.server {
}
}
- closeClientFile({ file: fileName }: protocol.FileRequestArgs) {
+ closeClientFile(fileName: string) {
var file = ts.normalizePath(fileName);
this.projectService.closeClientFile(file);
}
@@ -712,7 +713,7 @@ module ts.server {
}));
}
- getNavigationBarItems({ file: fileName }: protocol.FileRequestArgs): protocol.NavigationBarItem[]{
+ getNavigationBarItems(fileName: string): protocol.NavigationBarItem[] {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -728,7 +729,7 @@ module ts.server {
return this.decorateNavigationBarItem(project, fileName, items);
}
- getNavigateToItems({ searchValue, file: fileName, maxResultCount }: protocol.NavtoRequestArgs): protocol.NavtoItem[]{
+ getNavigateToItems(searchValue: string, fileName: string, maxResultCount?: number): protocol.NavtoItem[] {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
if (!project) {
@@ -767,7 +768,7 @@ module ts.server {
});
}
- getBraceMatching({ line, offset, file: fileName }: protocol.FileLocationRequestArgs): protocol.TextSpan[]{
+ getBraceMatching(line: number, offset: number, fileName: string): protocol.TextSpan[] {
var file = ts.normalizePath(fileName);
var project = this.projectService.getProjectForFile(file);
@@ -809,91 +810,114 @@ module ts.server {
break;
}
case CommandNames.Definition: {
- response = this.getDefinition(request.arguments);
+ var defArgs = request.arguments;
+ response = this.getDefinition(defArgs.line, defArgs.offset, defArgs.file);
break;
}
case CommandNames.References: {
- response = this.getReferences(request.arguments);
+ var refArgs = request.arguments;
+ response = this.getReferences(refArgs.line, refArgs.offset, refArgs.file);
break;
}
case CommandNames.Rename: {
- response = this.getRenameLocations(request.arguments);
+ var renameArgs = request.arguments;
+ response = this.getRenameLocations(renameArgs.line, renameArgs.offset, renameArgs.file, renameArgs.findInComments, renameArgs.findInStrings);
break;
}
case CommandNames.Open: {
- this.openClientFile(request.arguments);
+ var openArgs = request.arguments;
+ this.openClientFile(openArgs.file);
responseRequired = false;
break;
}
case CommandNames.Quickinfo: {
- response = this.getQuickInfo(request.arguments);
+ var quickinfoArgs = request.arguments;
+ response = this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.offset, quickinfoArgs.file);
break;
}
case CommandNames.Format: {
- response = this.getFormattingEditsForRange(request.arguments);
+ var formatArgs = request.arguments;
+ response = this.getFormattingEditsForRange(formatArgs.line, formatArgs.offset, formatArgs.endLine, formatArgs.endOffset, formatArgs.file);
break;
}
case CommandNames.Formatonkey: {
- response = this.getFormattingEditsAfterKeystroke(request.arguments);
+ var formatOnKeyArgs = request.arguments;
+ response = this.getFormattingEditsAfterKeystroke(formatOnKeyArgs.line, formatOnKeyArgs.offset, formatOnKeyArgs.key, formatOnKeyArgs.file);
break;
}
case CommandNames.Completions: {
- response = this.getCompletions(request.arguments);
+ var completionsArgs = request.arguments;
+ response = this.getCompletions(completionsArgs.line, completionsArgs.offset, completionsArgs.prefix, completionsArgs.file);
break;
}
case CommandNames.CompletionDetails: {
- response = this.getCompletionEntryDetails(request.arguments);
+ var completionDetailsArgs = request.arguments;
+ response =
+ this.getCompletionEntryDetails(completionDetailsArgs.line,completionDetailsArgs.offset,
+ completionDetailsArgs.entryNames,completionDetailsArgs.file);
break;
}
case CommandNames.SignatureHelp: {
- response = this.getSignatureHelpItems(request.arguments);
+ var signatureHelpArgs = request.arguments;
+ response = this.getSignatureHelpItems(signatureHelpArgs.line, signatureHelpArgs.offset, signatureHelpArgs.file);
break;
}
case CommandNames.Geterr: {
- this.getDiagnostics(request.arguments);
+ var geterrArgs = request.arguments;
+ response = this.getDiagnostics(geterrArgs.delay, geterrArgs.files);
responseRequired = false;
break;
}
case CommandNames.Change: {
- this.change(request.arguments);
+ var changeArgs = request.arguments;
+ this.change(changeArgs.line, changeArgs.offset, changeArgs.endLine, changeArgs.endOffset,
+ changeArgs.insertString, changeArgs.file);
responseRequired = false;
break;
}
case CommandNames.Configure: {
- this.projectService.setHostConfiguration(request.arguments);
+ var configureArgs = request.arguments;
+ this.projectService.setHostConfiguration(configureArgs);
this.output(undefined, CommandNames.Configure, request.seq);
responseRequired = false;
break;
}
case CommandNames.Reload: {
- this.reload(request.arguments);
+ var reloadArgs = request.arguments;
+ this.reload(reloadArgs.file, reloadArgs.tmpfile, request.seq);
responseRequired = false;
break;
}
case CommandNames.Saveto: {
- this.saveToTmp(request.arguments);
+ var savetoArgs = request.arguments;
+ this.saveToTmp(savetoArgs.file, savetoArgs.tmpfile);
responseRequired = false;
break;
}
case CommandNames.Close: {
- this.closeClientFile(request.arguments);
+ var closeArgs = request.arguments;
+ this.closeClientFile(closeArgs.file);
responseRequired = false;
break;
}
case CommandNames.Navto: {
- response = this.getNavigateToItems(request.arguments);
+ var navtoArgs = request.arguments;
+ response = this.getNavigateToItems(navtoArgs.searchValue, navtoArgs.file, navtoArgs.maxResultCount);
break;
}
case CommandNames.Brace: {
- response = this.getBraceMatching(request.arguments);
+ var braceArguments = request.arguments;
+ response = this.getBraceMatching(braceArguments.line, braceArguments.offset, braceArguments.file);
break;
}
case CommandNames.NavBar: {
- response = this.getNavigationBarItems(request.arguments);
+ var navBarArgs = request.arguments;
+ response = this.getNavigationBarItems(navBarArgs.file);
break;
}
case CommandNames.Occurrences: {
- response = this.getOccurrences(request.arguments);
+ var { line, offset, file: fileName } = request.arguments;
+ response = this.getOccurrences(line, offset, fileName);
break;
}
default: {
diff --git a/src/services/navigateTo.ts b/src/services/navigateTo.ts
index 6e9c234c656..aec3bdf765f 100644
--- a/src/services/navigateTo.ts
+++ b/src/services/navigateTo.ts
@@ -10,11 +10,10 @@ module ts.NavigateTo {
forEach(program.getSourceFiles(), sourceFile => {
cancellationToken.throwIfCancellationRequested();
- let declarations = sourceFile.getNamedDeclarations();
- for (let declaration of declarations) {
- var name = getDeclarationName(declaration);
- if (name !== undefined) {
-
+ let nameToDeclarations = sourceFile.getNamedDeclarations();
+ for (let name in nameToDeclarations) {
+ let declarations = getProperty(nameToDeclarations, name);
+ if (declarations) {
// First do a quick check to see if the name of the declaration matches the
// last portion of the (possibly) dotted name they're searching for.
let matches = patternMatcher.getMatchesForLastSegmentOfPattern(name);
@@ -23,24 +22,26 @@ module ts.NavigateTo {
continue;
}
- // It was a match! If the pattern has dots in it, then also see if the
- // declaration container matches as well.
- if (patternMatcher.patternContainsDots) {
- let containers = getContainers(declaration);
- if (!containers) {
- return undefined;
+ for (let declaration of declarations) {
+ // It was a match! If the pattern has dots in it, then also see if the
+ // declaration container matches as well.
+ if (patternMatcher.patternContainsDots) {
+ let containers = getContainers(declaration);
+ if (!containers) {
+ return undefined;
+ }
+
+ matches = patternMatcher.getMatches(containers, name);
+
+ if (!matches) {
+ continue;
+ }
}
- matches = patternMatcher.getMatches(containers, name);
-
- if (!matches) {
- continue;
- }
+ let fileName = sourceFile.fileName;
+ let matchKind = bestMatchKind(matches);
+ rawItems.push({ name, fileName, matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration });
}
-
- let fileName = sourceFile.fileName;
- let matchKind = bestMatchKind(matches);
- rawItems.push({ name, fileName, matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration });
}
}
});
@@ -67,30 +68,14 @@ module ts.NavigateTo {
return true;
}
- function getDeclarationName(declaration: Declaration): string {
- let result = getTextOfIdentifierOrLiteral(declaration.name);
- if (result !== undefined) {
- return result;
- }
-
- if (declaration.name.kind === SyntaxKind.ComputedPropertyName) {
- let expr = (declaration.name).expression;
- if (expr.kind === SyntaxKind.PropertyAccessExpression) {
- return (expr).name.text;
- }
-
- return getTextOfIdentifierOrLiteral(expr);
- }
-
- return undefined;
- }
-
function getTextOfIdentifierOrLiteral(node: Node) {
- if (node.kind === SyntaxKind.Identifier ||
- node.kind === SyntaxKind.StringLiteral ||
- node.kind === SyntaxKind.NumericLiteral) {
+ if (node) {
+ if (node.kind === SyntaxKind.Identifier ||
+ node.kind === SyntaxKind.StringLiteral ||
+ node.kind === SyntaxKind.NumericLiteral) {
- return (node).text;
+ return (node).text;
+ }
}
return undefined;
diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts
index 7c5ea3aa97f..d413f611209 100644
--- a/src/services/outliningElementsCollector.ts
+++ b/src/services/outliningElementsCollector.ts
@@ -1,180 +1,180 @@
-/* @internal */
-module ts {
- export module OutliningElementsCollector {
- export function collectElements(sourceFile: SourceFile): OutliningSpan[] {
- let elements: OutliningSpan[] = [];
- let collapseText = "...";
-
- function addOutliningSpan(hintSpanNode: Node, startElement: Node, endElement: Node, autoCollapse: boolean) {
- if (hintSpanNode && startElement && endElement) {
- let span: OutliningSpan = {
- textSpan: createTextSpanFromBounds(startElement.pos, endElement.end),
- hintSpan: createTextSpanFromBounds(hintSpanNode.getStart(), hintSpanNode.end),
- bannerText: collapseText,
- autoCollapse: autoCollapse
- };
- elements.push(span);
- }
- }
-
- function addOutliningSpanComments(commentSpan: CommentRange, autoCollapse: boolean) {
- if (commentSpan) {
- let span: OutliningSpan = {
- textSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end),
- hintSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end),
- bannerText: collapseText,
- autoCollapse: autoCollapse
- };
- elements.push(span);
- }
- }
-
- function addOutliningForLeadingCommentsForNode(n: Node) {
- let comments = ts.getLeadingCommentRangesOfNode(n, sourceFile);
-
- if (comments) {
- let firstSingleLineCommentStart = -1;
- let lastSingleLineCommentEnd = -1;
- let isFirstSingleLineComment = true;
- let singleLineCommentCount = 0;
-
- for (let currentComment of comments) {
-
- // For single line comments, combine consecutive ones (2 or more) into
- // a single span from the start of the first till the end of the last
- if (currentComment.kind === SyntaxKind.SingleLineCommentTrivia) {
- if (isFirstSingleLineComment) {
- firstSingleLineCommentStart = currentComment.pos;
- }
- isFirstSingleLineComment = false;
- lastSingleLineCommentEnd = currentComment.end;
- singleLineCommentCount++;
- }
- else if (currentComment.kind === SyntaxKind.MultiLineCommentTrivia) {
- combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd);
- addOutliningSpanComments(currentComment, /*autoCollapse*/ false);
-
- singleLineCommentCount = 0;
- lastSingleLineCommentEnd = -1;
- isFirstSingleLineComment = true;
- }
- }
-
- combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd);
- }
- }
-
- function combineAndAddMultipleSingleLineComments(count: number, start: number, end: number) {
- // Only outline spans of two or more consecutive single line comments
- if (count > 1) {
- let multipleSingleLineComments = {
- pos: start,
- end: end,
- kind: SyntaxKind.SingleLineCommentTrivia
- }
-
- addOutliningSpanComments(multipleSingleLineComments, /*autoCollapse*/ false);
- }
- }
-
- function autoCollapse(node: Node) {
- return isFunctionBlock(node) && node.parent.kind !== SyntaxKind.ArrowFunction;
- }
-
- let depth = 0;
- let maxDepth = 20;
- function walk(n: Node): void {
- if (depth > maxDepth) {
- return;
- }
-
- if (isDeclaration(n)) {
- addOutliningForLeadingCommentsForNode(n);
- }
-
- switch (n.kind) {
- case SyntaxKind.Block:
- if (!isFunctionBlock(n)) {
- let parent = n.parent;
- let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile);
- let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile);
-
- // Check if the block is standalone, or 'attached' to some parent statement.
- // If the latter, we want to collaps the block, but consider its hint span
- // to be the entire span of the parent.
- if (parent.kind === SyntaxKind.DoStatement ||
- parent.kind === SyntaxKind.ForInStatement ||
- parent.kind === SyntaxKind.ForOfStatement ||
- parent.kind === SyntaxKind.ForStatement ||
- parent.kind === SyntaxKind.IfStatement ||
- parent.kind === SyntaxKind.WhileStatement ||
- parent.kind === SyntaxKind.WithStatement ||
- parent.kind === SyntaxKind.CatchClause) {
-
- addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n));
- break;
- }
-
- if (parent.kind === SyntaxKind.TryStatement) {
- // Could be the try-block, or the finally-block.
- let tryStatement = parent;
- if (tryStatement.tryBlock === n) {
- addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n));
- break;
- }
- else if (tryStatement.finallyBlock === n) {
- let finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile);
- if (finallyKeyword) {
- addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n));
- break;
- }
- }
-
- // fall through.
- }
-
- // Block was a standalone block. In this case we want to only collapse
- // the span of the block, independent of any parent span.
- let span = createTextSpanFromBounds(n.getStart(), n.end);
- elements.push({
- textSpan: span,
- hintSpan: span,
- bannerText: collapseText,
- autoCollapse: autoCollapse(n)
- });
- break;
- }
- // Fallthrough.
-
- case SyntaxKind.ModuleBlock: {
- let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile);
- let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile);
- addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n));
- break;
- }
- case SyntaxKind.ClassDeclaration:
- case SyntaxKind.InterfaceDeclaration:
- case SyntaxKind.EnumDeclaration:
- case SyntaxKind.ObjectLiteralExpression:
- case SyntaxKind.CaseBlock: {
- let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile);
- let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile);
- addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n));
- break;
- }
- case SyntaxKind.ArrayLiteralExpression:
- let openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile);
- let closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile);
- addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n));
- break;
- }
- depth++;
- forEachChild(n, walk);
- depth--;
- }
-
- walk(sourceFile);
- return elements;
- }
- }
+/* @internal */
+module ts {
+ export module OutliningElementsCollector {
+ export function collectElements(sourceFile: SourceFile): OutliningSpan[] {
+ let elements: OutliningSpan[] = [];
+ let collapseText = "...";
+
+ function addOutliningSpan(hintSpanNode: Node, startElement: Node, endElement: Node, autoCollapse: boolean) {
+ if (hintSpanNode && startElement && endElement) {
+ let span: OutliningSpan = {
+ textSpan: createTextSpanFromBounds(startElement.pos, endElement.end),
+ hintSpan: createTextSpanFromBounds(hintSpanNode.getStart(), hintSpanNode.end),
+ bannerText: collapseText,
+ autoCollapse: autoCollapse
+ };
+ elements.push(span);
+ }
+ }
+
+ function addOutliningSpanComments(commentSpan: CommentRange, autoCollapse: boolean) {
+ if (commentSpan) {
+ let span: OutliningSpan = {
+ textSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end),
+ hintSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end),
+ bannerText: collapseText,
+ autoCollapse: autoCollapse
+ };
+ elements.push(span);
+ }
+ }
+
+ function addOutliningForLeadingCommentsForNode(n: Node) {
+ let comments = ts.getLeadingCommentRangesOfNode(n, sourceFile);
+
+ if (comments) {
+ let firstSingleLineCommentStart = -1;
+ let lastSingleLineCommentEnd = -1;
+ let isFirstSingleLineComment = true;
+ let singleLineCommentCount = 0;
+
+ for (let currentComment of comments) {
+
+ // For single line comments, combine consecutive ones (2 or more) into
+ // a single span from the start of the first till the end of the last
+ if (currentComment.kind === SyntaxKind.SingleLineCommentTrivia) {
+ if (isFirstSingleLineComment) {
+ firstSingleLineCommentStart = currentComment.pos;
+ }
+ isFirstSingleLineComment = false;
+ lastSingleLineCommentEnd = currentComment.end;
+ singleLineCommentCount++;
+ }
+ else if (currentComment.kind === SyntaxKind.MultiLineCommentTrivia) {
+ combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd);
+ addOutliningSpanComments(currentComment, /*autoCollapse*/ false);
+
+ singleLineCommentCount = 0;
+ lastSingleLineCommentEnd = -1;
+ isFirstSingleLineComment = true;
+ }
+ }
+
+ combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd);
+ }
+ }
+
+ function combineAndAddMultipleSingleLineComments(count: number, start: number, end: number) {
+ // Only outline spans of two or more consecutive single line comments
+ if (count > 1) {
+ let multipleSingleLineComments = {
+ pos: start,
+ end: end,
+ kind: SyntaxKind.SingleLineCommentTrivia
+ }
+
+ addOutliningSpanComments(multipleSingleLineComments, /*autoCollapse*/ false);
+ }
+ }
+
+ function autoCollapse(node: Node) {
+ return isFunctionBlock(node) && node.parent.kind !== SyntaxKind.ArrowFunction;
+ }
+
+ let depth = 0;
+ let maxDepth = 20;
+ function walk(n: Node): void {
+ if (depth > maxDepth) {
+ return;
+ }
+
+ if (isDeclaration(n)) {
+ addOutliningForLeadingCommentsForNode(n);
+ }
+
+ switch (n.kind) {
+ case SyntaxKind.Block:
+ if (!isFunctionBlock(n)) {
+ let parent = n.parent;
+ let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile);
+ let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile);
+
+ // Check if the block is standalone, or 'attached' to some parent statement.
+ // If the latter, we want to collaps the block, but consider its hint span
+ // to be the entire span of the parent.
+ if (parent.kind === SyntaxKind.DoStatement ||
+ parent.kind === SyntaxKind.ForInStatement ||
+ parent.kind === SyntaxKind.ForOfStatement ||
+ parent.kind === SyntaxKind.ForStatement ||
+ parent.kind === SyntaxKind.IfStatement ||
+ parent.kind === SyntaxKind.WhileStatement ||
+ parent.kind === SyntaxKind.WithStatement ||
+ parent.kind === SyntaxKind.CatchClause) {
+
+ addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n));
+ break;
+ }
+
+ if (parent.kind === SyntaxKind.TryStatement) {
+ // Could be the try-block, or the finally-block.
+ let tryStatement = parent;
+ if (tryStatement.tryBlock === n) {
+ addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n));
+ break;
+ }
+ else if (tryStatement.finallyBlock === n) {
+ let finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile);
+ if (finallyKeyword) {
+ addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n));
+ break;
+ }
+ }
+
+ // fall through.
+ }
+
+ // Block was a standalone block. In this case we want to only collapse
+ // the span of the block, independent of any parent span.
+ let span = createTextSpanFromBounds(n.getStart(), n.end);
+ elements.push({
+ textSpan: span,
+ hintSpan: span,
+ bannerText: collapseText,
+ autoCollapse: autoCollapse(n)
+ });
+ break;
+ }
+ // Fallthrough.
+
+ case SyntaxKind.ModuleBlock: {
+ let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile);
+ let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile);
+ addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n));
+ break;
+ }
+ case SyntaxKind.ClassDeclaration:
+ case SyntaxKind.InterfaceDeclaration:
+ case SyntaxKind.EnumDeclaration:
+ case SyntaxKind.ObjectLiteralExpression:
+ case SyntaxKind.CaseBlock: {
+ let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile);
+ let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile);
+ addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n));
+ break;
+ }
+ case SyntaxKind.ArrayLiteralExpression:
+ let openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile);
+ let closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile);
+ addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n));
+ break;
+ }
+ depth++;
+ forEachChild(n, walk);
+ depth--;
+ }
+
+ walk(sourceFile);
+ return elements;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/services/services.ts b/src/services/services.ts
index 19fcb46552c..98a7fe0499f 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -63,7 +63,8 @@ module ts {
/* @internal */ scriptSnapshot: IScriptSnapshot;
/* @internal */ nameTable: Map;
- getNamedDeclarations(): Declaration[];
+ /* @internal */ getNamedDeclarations(): Map;
+
getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
getLineStarts(): number[];
getPositionOfLineAndCharacter(line: number, character: number): number;
@@ -749,7 +750,7 @@ module ts {
public identifiers: Map;
public nameTable: Map;
- private namedDeclarations: Declaration[];
+ private namedDeclarations: Map;
public update(newText: string, textChangeRange: TextChangeRange): SourceFile {
return updateSourceFile(this, newText, textChangeRange);
@@ -767,7 +768,7 @@ module ts {
return ts.getPositionOfLineAndCharacter(this, line, character);
}
- public getNamedDeclarations() {
+ public getNamedDeclarations(): Map {
if (!this.namedDeclarations) {
this.namedDeclarations = this.computeNamedDeclarations();
}
@@ -775,12 +776,57 @@ module ts {
return this.namedDeclarations;
}
- private computeNamedDeclarations() {
- let namedDeclarations: Declaration[] = [];
+ private computeNamedDeclarations(): Map {
+ let result: Map = {};
forEachChild(this, visit);
- return namedDeclarations;
+ return result;
+
+ function addDeclaration(declaration: Declaration) {
+ let name = getDeclarationName(declaration);
+ if (name) {
+ let declarations = getDeclarations(name);
+ declarations.push(declaration);
+ }
+ }
+
+ function getDeclarations(name: string) {
+ return getProperty(result, name) || (result[name] = []);
+ }
+
+ function getDeclarationName(declaration: Declaration) {
+ if (declaration.name) {
+ let result = getTextOfIdentifierOrLiteral(declaration.name);
+ if (result !== undefined) {
+ return result;
+ }
+
+ if (declaration.name.kind === SyntaxKind.ComputedPropertyName) {
+ let expr = (declaration.name).expression;
+ if (expr.kind === SyntaxKind.PropertyAccessExpression) {
+ return (expr).name.text;
+ }
+
+ return getTextOfIdentifierOrLiteral(expr);
+ }
+ }
+
+ return undefined;
+ }
+
+ function getTextOfIdentifierOrLiteral(node: Node) {
+ if (node) {
+ if (node.kind === SyntaxKind.Identifier ||
+ node.kind === SyntaxKind.StringLiteral ||
+ node.kind === SyntaxKind.NumericLiteral) {
+
+ return (node).text;
+ }
+ }
+
+ return undefined;
+ }
function visit(node: Node): void {
switch (node.kind) {
@@ -788,22 +834,22 @@ module ts {
case SyntaxKind.MethodDeclaration:
case SyntaxKind.MethodSignature:
let functionDeclaration = node;
+ let declarationName = getDeclarationName(functionDeclaration);
- if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) {
- let lastDeclaration = namedDeclarations.length > 0 ?
- namedDeclarations[namedDeclarations.length - 1] :
- undefined;
+ if (declarationName) {
+ let declarations = getDeclarations(declarationName);
+ let lastDeclaration = lastOrUndefined(declarations);
// Check whether this declaration belongs to an "overload group".
- if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) {
+ if (lastDeclaration && functionDeclaration.parent === lastDeclaration.parent && functionDeclaration.symbol === lastDeclaration.symbol) {
// Overwrite the last declaration if it was an overload
// and this one is an implementation.
if (functionDeclaration.body && !(lastDeclaration).body) {
- namedDeclarations[namedDeclarations.length - 1] = functionDeclaration;
+ declarations[declarations.length - 1] = functionDeclaration;
}
}
else {
- namedDeclarations.push(functionDeclaration);
+ declarations.push(functionDeclaration);
}
forEachChild(node, visit);
@@ -824,10 +870,8 @@ module ts {
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor:
case SyntaxKind.TypeLiteral:
- if ((node).name) {
- namedDeclarations.push(node);
- }
- // fall through
+ addDeclaration(node);
+ // fall through
case SyntaxKind.Constructor:
case SyntaxKind.VariableStatement:
case SyntaxKind.VariableDeclarationList:
@@ -858,7 +902,7 @@ module ts {
case SyntaxKind.EnumMember:
case SyntaxKind.PropertyDeclaration:
case SyntaxKind.PropertySignature:
- namedDeclarations.push(node);
+ addDeclaration(node);
break;
case SyntaxKind.ExportDeclaration:
@@ -875,7 +919,7 @@ module ts {
// Handle default import case e.g.:
// import d from "mod";
if (importClause.name) {
- namedDeclarations.push(importClause);
+ addDeclaration(importClause);
}
// Handle named bindings in imports e.g.:
@@ -883,7 +927,7 @@ module ts {
// import {a, b as B} from "mod";
if (importClause.namedBindings) {
if (importClause.namedBindings.kind === SyntaxKind.NamespaceImport) {
- namedDeclarations.push(importClause.namedBindings);
+ addDeclaration(importClause.namedBindings);
}
else {
forEach((importClause.namedBindings).elements, visit);
@@ -2260,8 +2304,6 @@ module ts {
let ruleProvider: formatting.RulesProvider;
let program: Program;
- // this checker is used to answer all LS questions except errors
- let typeInfoResolver: TypeChecker;
let useCaseSensitivefileNames = false;
let cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken());
@@ -2343,8 +2385,10 @@ module ts {
}
program = newProgram;
- typeInfoResolver = program.getTypeChecker();
+ // Make sure all the nodes in the program are both bound, and have their parent
+ // pointers set property.
+ program.getTypeChecker();
return;
function getOrCreateSourceFile(fileName: string): SourceFile {
@@ -2428,15 +2472,8 @@ module ts {
return program;
}
- /**
- * Clean up any semantic caches that are not needed.
- * The host can call this method if it wants to jettison unused memory.
- * We will just dump the typeChecker and recreate a new one. this should have the effect of destroying all the semantic caches.
- */
function cleanupSemanticCache(): void {
- if (program) {
- typeInfoResolver = program.getTypeChecker();
- }
+ // TODO: Should we jettison the program (or it's type checker) here?
}
function dispose(): void {
@@ -2453,10 +2490,6 @@ module ts {
return program.getSyntacticDiagnostics(getValidSourceFile(fileName));
}
- function isJavaScript(fileName: string) {
- return fileExtensionIs(fileName, ".js");
- }
-
/**
* getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors
* If '-d' enabled, report both semantic and emitter errors
@@ -2704,32 +2737,8 @@ module ts {
return unescapeIdentifier(displayName);
}
- function createCompletionEntry(symbol: Symbol, typeChecker: TypeChecker, location: Node): CompletionEntry {
- // Try to get a valid display name for this symbol, if we could not find one, then ignore it.
- // We would like to only show things that can be added after a dot, so for instance numeric properties can
- // not be accessed with a dot (a.1 <- invalid)
- let displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true);
- if (!displayName) {
- return undefined;
- }
-
- // TODO(drosen): Right now we just permit *all* semantic meanings when calling
- // 'getSymbolKind' which is permissible given that it is backwards compatible; but
- // really we should consider passing the meaning for the node so that we don't report
- // that a suggestion for a value is an interface. We COULD also just do what
- // 'getSymbolModifiers' does, which is to use the first declaration.
-
- // Use a 'sortText' of 0' so that all symbol completion entries come before any other
- // entries (like JavaScript identifier entries).
- return {
- name: displayName,
- kind: getSymbolKind(symbol, typeChecker, location),
- kindModifiers: getSymbolModifiers(symbol),
- sortText: "0",
- };
- }
-
function getCompletionData(fileName: string, position: number) {
+ let typeChecker = program.getTypeChecker();
let syntacticStart = new Date().getTime();
let sourceFile = getValidSourceFile(fileName);
@@ -2813,29 +2822,29 @@ module ts {
isNewIdentifierLocation = false;
if (node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName || node.kind === SyntaxKind.PropertyAccessExpression) {
- let symbol = typeInfoResolver.getSymbolAtLocation(node);
+ let symbol = typeChecker.getSymbolAtLocation(node);
// This is an alias, follow what it aliases
if (symbol && symbol.flags & SymbolFlags.Alias) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
if (symbol && symbol.flags & SymbolFlags.HasExports) {
// Extract module or enum members
- let exportedSymbols = typeInfoResolver.getExportsOfModule(symbol);
+ let exportedSymbols = typeChecker.getExportsOfModule(symbol);
forEach(exportedSymbols, symbol => {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
}
}
- let type = typeInfoResolver.getTypeAtLocation(node);
+ let type = typeChecker.getTypeAtLocation(node);
if (type) {
// Filter private properties
forEach(type.getApparentProperties(), symbol => {
- if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) {
+ if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) {
symbols.push(symbol);
}
});
@@ -2849,12 +2858,12 @@ module ts {
isMemberCompletion = true;
isNewIdentifierLocation = true;
- let contextualType = typeInfoResolver.getContextualType(containingObjectLiteral);
+ let contextualType = typeChecker.getContextualType(containingObjectLiteral);
if (!contextualType) {
return false;
}
- let contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType);
+ let contextualTypeMembers = typeChecker.getPropertiesOfType(contextualType);
if (contextualTypeMembers && contextualTypeMembers.length > 0) {
// Add filtered items to the completion list
symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties);
@@ -2871,9 +2880,9 @@ module ts {
let exports: Symbol[];
if (importDeclaration.moduleSpecifier) {
- let moduleSpecifierSymbol = typeInfoResolver.getSymbolAtLocation(importDeclaration.moduleSpecifier);
+ let moduleSpecifierSymbol = typeChecker.getSymbolAtLocation(importDeclaration.moduleSpecifier);
if (moduleSpecifierSymbol) {
- exports = typeInfoResolver.getExportsOfModule(moduleSpecifierSymbol);
+ exports = typeChecker.getExportsOfModule(moduleSpecifierSymbol);
}
}
@@ -2922,7 +2931,7 @@ module ts {
/// TODO filter meaning based on the current context
let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias;
- symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings);
+ symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings);
}
return true;
@@ -3109,6 +3118,7 @@ module ts {
case SyntaxKind.SemicolonToken:
return containingNodeKind === SyntaxKind.PropertySignature &&
+ previousToken.parent && previousToken.parent.parent &&
(previousToken.parent.parent.kind === SyntaxKind.InterfaceDeclaration || // interface a { f; |
previousToken.parent.parent.kind === SyntaxKind.TypeLiteral); // let x : { a; |
@@ -3124,7 +3134,8 @@ module ts {
case SyntaxKind.DotDotDotToken:
return containingNodeKind === SyntaxKind.Parameter ||
containingNodeKind === SyntaxKind.Constructor ||
- (previousToken.parent.parent.kind === SyntaxKind.ArrayBindingPattern); // var [ ...z|
+ (previousToken.parent && previousToken.parent.parent &&
+ previousToken.parent.parent.kind === SyntaxKind.ArrayBindingPattern); // var [ ...z|
case SyntaxKind.PublicKeyword:
case SyntaxKind.PrivateKeyword:
@@ -3283,6 +3294,31 @@ module ts {
return entries;
}
+ function createCompletionEntry(symbol: Symbol, location: Node): CompletionEntry {
+ // Try to get a valid display name for this symbol, if we could not find one, then ignore it.
+ // We would like to only show things that can be added after a dot, so for instance numeric properties can
+ // not be accessed with a dot (a.1 <- invalid)
+ let displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true);
+ if (!displayName) {
+ return undefined;
+ }
+
+ // TODO(drosen): Right now we just permit *all* semantic meanings when calling
+ // 'getSymbolKind' which is permissible given that it is backwards compatible; but
+ // really we should consider passing the meaning for the node so that we don't report
+ // that a suggestion for a value is an interface. We COULD also just do what
+ // 'getSymbolModifiers' does, which is to use the first declaration.
+
+ // Use a 'sortText' of 0' so that all symbol completion entries come before any other
+ // entries (like JavaScript identifier entries).
+ return {
+ name: displayName,
+ kind: getSymbolKind(symbol, location),
+ kindModifiers: getSymbolModifiers(symbol),
+ sortText: "0",
+ };
+ }
+
function getCompletionEntriesFromSymbols(symbols: Symbol[]): CompletionEntry[] {
let start = new Date().getTime();
var entries: CompletionEntry[] = [];
@@ -3290,7 +3326,7 @@ module ts {
if (symbols) {
var nameToSymbol: Map = {};
for (let symbol of symbols) {
- let entry = createCompletionEntry(symbol, typeInfoResolver, location);
+ let entry = createCompletionEntry(symbol, location);
if (entry) {
let id = escapeIdentifier(entry.name);
if (!lookUp(nameToSymbol, id)) {
@@ -3322,7 +3358,7 @@ module ts {
let symbol = forEach(symbols, s => getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks:*/ false) === entryName ? s : undefined);
if (symbol) {
- let displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, typeInfoResolver, location, SemanticMeaning.All);
+ let displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, location, SemanticMeaning.All);
return {
name: entryName,
kind: displayPartsDocumentationsAndSymbolKind.symbolKind,
@@ -3349,7 +3385,7 @@ module ts {
}
// TODO(drosen): use contextual SemanticMeaning.
- function getSymbolKind(symbol: Symbol, typeResolver: TypeChecker, location: Node): string {
+ function getSymbolKind(symbol: Symbol, location: Node): string {
let flags = symbol.getFlags();
if (flags & SymbolFlags.Class) return ScriptElementKind.classElement;
@@ -3358,7 +3394,7 @@ module ts {
if (flags & SymbolFlags.Interface) return ScriptElementKind.interfaceElement;
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
- let result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location);
+ let result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location);
if (result === ScriptElementKind.unknown) {
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
if (flags & SymbolFlags.EnumMember) return ScriptElementKind.variableElement;
@@ -3369,11 +3405,13 @@ module ts {
return result;
}
- function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol: Symbol, flags: SymbolFlags, typeResolver: TypeChecker, location: Node) {
- if (typeResolver.isUndefinedSymbol(symbol)) {
+ function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol: Symbol, flags: SymbolFlags, location: Node) {
+ let typeChecker = program.getTypeChecker();
+
+ if (typeChecker.isUndefinedSymbol(symbol)) {
return ScriptElementKind.variableElement;
}
- if (typeResolver.isArgumentsSymbol(symbol)) {
+ if (typeChecker.isArgumentsSymbol(symbol)) {
return ScriptElementKind.localVariableElement;
}
if (flags & SymbolFlags.Variable) {
@@ -3397,7 +3435,7 @@ module ts {
if (flags & SymbolFlags.Property) {
if (flags & SymbolFlags.UnionProperty) {
// If union property is result of union of non method (property/accessors/variables), it is labeled as property
- let unionPropertyKind = forEach(typeInfoResolver.getRootSymbols(symbol), rootSymbol => {
+ let unionPropertyKind = forEach(typeChecker.getRootSymbols(symbol), rootSymbol => {
let rootSymbolFlags = rootSymbol.getFlags();
if (rootSymbolFlags & (SymbolFlags.PropertyOrAccessor | SymbolFlags.Variable)) {
return ScriptElementKind.memberVariableElement;
@@ -3407,7 +3445,7 @@ module ts {
if (!unionPropertyKind) {
// If this was union of all methods,
//make sure it has call signatures before we can label it as method
- let typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location);
+ let typeOfUnionProperty = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (typeOfUnionProperty.getCallSignatures().length) {
return ScriptElementKind.memberFunctionElement;
}
@@ -3440,15 +3478,16 @@ module ts {
: ScriptElementKindModifier.none;
}
+ // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol: Symbol, sourceFile: SourceFile, enclosingDeclaration: Node,
- typeResolver: TypeChecker, location: Node,
- // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
- semanticMeaning = getMeaningFromLocation(location)) {
+ location: Node, semanticMeaning = getMeaningFromLocation(location)) {
+
+ let typeChecker = program.getTypeChecker();
let displayParts: SymbolDisplayPart[] = [];
let documentation: SymbolDisplayPart[];
let symbolFlags = symbol.flags;
- let symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location);
+ let symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location);
let hasAddedSymbolInfo: boolean;
let type: Type;
@@ -3460,7 +3499,7 @@ module ts {
}
let signature: Signature;
- type = typeResolver.getTypeOfSymbolAtLocation(symbol, location);
+ type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
if (type) {
if (location.parent && location.parent.kind === SyntaxKind.PropertyAccessExpression) {
let right = (location.parent).name;
@@ -3481,7 +3520,7 @@ module ts {
if (callExpression) {
let candidateSignatures: Signature[] = [];
- signature = typeResolver.getResolvedSignature(callExpression, candidateSignatures);
+ signature = typeChecker.getResolvedSignature(callExpression, candidateSignatures);
if (!signature && candidateSignatures.length) {
// Use the first candidate:
signature = candidateSignatures[0];
@@ -3530,7 +3569,7 @@ module ts {
displayParts.push(spacePart());
}
if (!(type.flags & TypeFlags.Anonymous)) {
- displayParts.push.apply(displayParts, symbolToDisplayParts(typeResolver, type.symbol, enclosingDeclaration, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments));
+ displayParts.push.apply(displayParts, symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments));
}
addSignatureDisplayParts(signature, allSignatures, TypeFormatFlags.WriteArrowStyleSignature);
break;
@@ -3547,8 +3586,8 @@ module ts {
// get the signature from the declaration and write it
let functionDeclaration = location.parent;
let allSignatures = functionDeclaration.kind === SyntaxKind.Constructor ? type.getConstructSignatures() : type.getCallSignatures();
- if (!typeResolver.isImplementationOfOverload(functionDeclaration)) {
- signature = typeResolver.getSignatureFromDeclaration(functionDeclaration);
+ if (!typeChecker.isImplementationOfOverload(functionDeclaration)) {
+ signature = typeChecker.getSignatureFromDeclaration(functionDeclaration);
}
else {
signature = allSignatures[0];
@@ -3591,7 +3630,7 @@ module ts {
displayParts.push(spacePart());
displayParts.push(operatorPart(SyntaxKind.EqualsToken));
displayParts.push(spacePart());
- displayParts.push.apply(displayParts, typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
+ displayParts.push.apply(displayParts, typeToDisplayParts(typeChecker, typeChecker.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration));
}
if (symbolFlags & SymbolFlags.Enum) {
addNewLineIfDisplayPartsExist();
@@ -3627,7 +3666,7 @@ module ts {
else {
// Method/function type parameter
let signatureDeclaration = getDeclarationOfKind(symbol, SyntaxKind.TypeParameter).parent;
- let signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration);
+ let signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration);
if (signatureDeclaration.kind === SyntaxKind.ConstructSignature) {
displayParts.push(keywordPart(SyntaxKind.NewKeyword));
displayParts.push(spacePart());
@@ -3635,14 +3674,14 @@ module ts {
else if (signatureDeclaration.kind !== SyntaxKind.CallSignature && signatureDeclaration.name) {
addFullSymbolName(signatureDeclaration.symbol);
}
- displayParts.push.apply(displayParts, signatureToDisplayParts(typeResolver, signature, sourceFile, TypeFormatFlags.WriteTypeArgumentsOfSignature));
+ displayParts.push.apply(displayParts, signatureToDisplayParts(typeChecker, signature, sourceFile, TypeFormatFlags.WriteTypeArgumentsOfSignature));
}
}
if (symbolFlags & SymbolFlags.EnumMember) {
addPrefixForAnyFunctionOrVar(symbol, "enum member");
let declaration = symbol.declarations[0];
if (declaration.kind === SyntaxKind.EnumMember) {
- let constantValue = typeResolver.getConstantValue(declaration);
+ let constantValue = typeChecker.getConstantValue(declaration);
if (constantValue !== undefined) {
displayParts.push(spacePart());
displayParts.push(operatorPart(SyntaxKind.EqualsToken));
@@ -3669,7 +3708,7 @@ module ts {
displayParts.push(punctuationPart(SyntaxKind.CloseParenToken));
}
else {
- let internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
+ let internalAliasSymbol = typeChecker.getSymbolAtLocation(importEqualsDeclaration.moduleReference);
if (internalAliasSymbol) {
displayParts.push(spacePart());
displayParts.push(operatorPart(SyntaxKind.EqualsToken));
@@ -3694,12 +3733,12 @@ module ts {
// If the type is type parameter, format it specially
if (type.symbol && type.symbol.flags & SymbolFlags.TypeParameter) {
let typeParameterParts = mapToDisplayParts(writer => {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
else {
- displayParts.push.apply(displayParts, typeToDisplayParts(typeResolver, type, enclosingDeclaration));
+ displayParts.push.apply(displayParts, typeToDisplayParts(typeChecker, type, enclosingDeclaration));
}
}
else if (symbolFlags & SymbolFlags.Function ||
@@ -3714,7 +3753,7 @@ module ts {
}
}
else {
- symbolKind = getSymbolKind(symbol, typeResolver, location);
+ symbolKind = getSymbolKind(symbol, location);
}
}
@@ -3731,7 +3770,7 @@ module ts {
}
function addFullSymbolName(symbol: Symbol, enclosingDeclaration?: Node) {
- let fullSymbolDisplayParts = symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, /*meaning*/ undefined,
+ let fullSymbolDisplayParts = symbolToDisplayParts(typeChecker, symbol, enclosingDeclaration || sourceFile, /*meaning*/ undefined,
SymbolFormatFlags.WriteTypeParametersOrArguments | SymbolFormatFlags.UseOnlyExternalAliasing);
displayParts.push.apply(displayParts, fullSymbolDisplayParts);
}
@@ -3763,7 +3802,7 @@ module ts {
}
function addSignatureDisplayParts(signature: Signature, allSignatures: Signature[], flags?: TypeFormatFlags) {
- displayParts.push.apply(displayParts, signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | TypeFormatFlags.WriteTypeArgumentsOfSignature));
+ displayParts.push.apply(displayParts, signatureToDisplayParts(typeChecker, signature, enclosingDeclaration, flags | TypeFormatFlags.WriteTypeArgumentsOfSignature));
if (allSignatures.length > 1) {
displayParts.push(spacePart());
displayParts.push(punctuationPart(SyntaxKind.OpenParenToken));
@@ -3778,7 +3817,7 @@ module ts {
function writeTypeParametersOfSymbol(symbol: Symbol, enclosingDeclaration: Node) {
let typeParameterParts = mapToDisplayParts(writer => {
- typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration);
});
displayParts.push.apply(displayParts, typeParameterParts);
}
@@ -3793,7 +3832,13 @@ module ts {
return undefined;
}
- let symbol = typeInfoResolver.getSymbolAtLocation(node);
+ if (isLabelName(node)) {
+ return undefined;
+ }
+
+ let typeChecker = program.getTypeChecker();
+ let symbol = typeChecker.getSymbolAtLocation(node);
+
if (!symbol) {
// Try getting just type at this position and show
switch (node.kind) {
@@ -3803,13 +3848,13 @@ module ts {
case SyntaxKind.ThisKeyword:
case SyntaxKind.SuperKeyword:
// For the identifiers/this/super etc get the type at position
- let type = typeInfoResolver.getTypeAtLocation(node);
+ let type = typeChecker.getTypeAtLocation(node);
if (type) {
return {
kind: ScriptElementKind.unknown,
kindModifiers: ScriptElementKindModifier.none,
textSpan: createTextSpan(node.getStart(), node.getWidth()),
- displayParts: typeToDisplayParts(typeInfoResolver, type, getContainerNode(node)),
+ displayParts: typeToDisplayParts(typeChecker, type, getContainerNode(node)),
documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined
};
}
@@ -3818,7 +3863,7 @@ module ts {
return undefined;
}
- let displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node);
+ let displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), node);
return {
kind: displayPartsDocumentationsAndKind.symbolKind,
kindModifiers: getSymbolModifiers(symbol),
@@ -3874,7 +3919,8 @@ module ts {
return undefined;
}
- let symbol = typeInfoResolver.getSymbolAtLocation(node);
+ let typeChecker = program.getTypeChecker();
+ let symbol = typeChecker.getSymbolAtLocation(node);
// Could not find a symbol e.g. node is string or number keyword,
// or the symbol was an internal symbol and does not have a declaration e.g. undefined symbol
@@ -3889,7 +3935,7 @@ module ts {
if (symbol.flags & SymbolFlags.Alias) {
let declaration = symbol.declarations[0];
if (node.kind === SyntaxKind.Identifier && node.parent === declaration) {
- symbol = typeInfoResolver.getAliasedSymbol(symbol);
+ symbol = typeChecker.getAliasedSymbol(symbol);
}
}
@@ -3899,25 +3945,25 @@ module ts {
// is performed at the location of property access, we would like to go to definition of the property in the short-hand
// assignment. This case and others are handled by the following code.
if (node.parent.kind === SyntaxKind.ShorthandPropertyAssignment) {
- let shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
+ let shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
if (!shorthandSymbol) {
return [];
}
let shorthandDeclarations = shorthandSymbol.getDeclarations();
- let shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node);
- let shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol);
- let shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node);
+ let shorthandSymbolKind = getSymbolKind(shorthandSymbol, node);
+ let shorthandSymbolName = typeChecker.symbolToString(shorthandSymbol);
+ let shorthandContainerName = typeChecker.symbolToString(symbol.parent, node);
return map(shorthandDeclarations,
declaration => createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName));
}
let result: DefinitionInfo[] = [];
let declarations = symbol.getDeclarations();
- let symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol
- let symbolKind = getSymbolKind(symbol, typeInfoResolver, node);
+ let symbolName = typeChecker.symbolToString(symbol); // Do not get scoped name, just the name of the symbol
+ let symbolKind = getSymbolKind(symbol, node);
let containerSymbol = symbol.parent;
- let containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : "";
+ let containerName = containerSymbol ? typeChecker.symbolToString(containerSymbol, node) : "";
if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) &&
!tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) {
@@ -3983,7 +4029,7 @@ module ts {
// Get occurrences only supports reporting occurrences for the file queried. So
// filter down to that list.
- results = filter(results, r => r.fileName === fileName);
+ results = filter(results, r => getCanonicalFileName(ts.normalizeSlashes(r.fileName)) === sourceFile);
}
return results;
@@ -4676,7 +4722,9 @@ module ts {
return getReferencedSymbolsForNodes(node, program.getSourceFiles(), findInStrings, findInComments);
}
- function getReferencedSymbolsForNodes(node: Node, sourceFiles: SourceFile[], findInStrings: boolean, findInComments: boolean): ReferencedSymbol[]{
+ function getReferencedSymbolsForNodes(node: Node, sourceFiles: SourceFile[], findInStrings: boolean, findInComments: boolean): ReferencedSymbol[] {
+ let typeChecker = program.getTypeChecker();
+
// Labels
if (isLabelName(node)) {
if (isJumpStatementTarget(node)) {
@@ -4699,7 +4747,7 @@ module ts {
return getReferencesForSuperKeyword(node);
}
- let symbol = typeInfoResolver.getSymbolAtLocation(node);
+ let symbol = typeChecker.getSymbolAtLocation(node);
// Could not find a symbol e.g. unknown identifier
if (!symbol) {
@@ -4750,7 +4798,7 @@ module ts {
return result;
function getDefinition(symbol: Symbol): DefinitionInfo {
- let info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node);
+ let info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), node);
let name = map(info.displayParts, p => p.text).join("");
let declarations = symbol.declarations;
if (!declarations || declarations.length === 0) {
@@ -4800,7 +4848,7 @@ module ts {
return location.getText();
}
- name = typeInfoResolver.symbolToString(symbol);
+ name = typeChecker.symbolToString(symbol);
return stripQuotes(name);
}
@@ -5036,10 +5084,10 @@ module ts {
return;
}
- let referenceSymbol = typeInfoResolver.getSymbolAtLocation(referenceLocation);
+ let referenceSymbol = typeChecker.getSymbolAtLocation(referenceLocation);
if (referenceSymbol) {
let referenceSymbolDeclaration = referenceSymbol.valueDeclaration;
- let shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
+ let shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration);
var relatedSymbol = getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation);
if (relatedSymbol) {
@@ -5264,7 +5312,7 @@ module ts {
// If the symbol is an alias, add what it alaises to the list
if (isImportOrExportSpecifierImportSymbol(symbol)) {
- result.push(typeInfoResolver.getAliasedSymbol(symbol));
+ result.push(typeChecker.getAliasedSymbol(symbol));
}
// If the location is in a context sensitive location (i.e. in an object literal) try
@@ -5272,7 +5320,7 @@ module ts {
// type to the search set
if (isNameOfPropertyAssignment(location)) {
forEach(getPropertySymbolsFromContextualType(location), contextualSymbol => {
- result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol));
+ result.push.apply(result, typeChecker.getRootSymbols(contextualSymbol));
});
/* Because in short-hand property assignment, location has two meaning : property name and as value of the property
@@ -5286,7 +5334,7 @@ module ts {
* so that when matching with potential reference symbol, both symbols from property declaration and variable declaration
* will be included correctly.
*/
- let shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent);
+ let shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(location.parent);
if (shorthandValueSymbol) {
result.push(shorthandValueSymbol);
}
@@ -5294,7 +5342,7 @@ module ts {
// If this is a union property, add all the symbols from all its source symbols in all unioned types.
// If the symbol is an instantiation from a another symbol (e.g. widened symbol) , add the root the list
- forEach(typeInfoResolver.getRootSymbols(symbol), rootSymbol => {
+ forEach(typeChecker.getRootSymbols(symbol), rootSymbol => {
if (rootSymbol !== symbol) {
result.push(rootSymbol);
}
@@ -5324,9 +5372,9 @@ module ts {
function getPropertySymbolFromTypeReference(typeReference: HeritageClauseElement) {
if (typeReference) {
- let type = typeInfoResolver.getTypeAtLocation(typeReference);
+ let type = typeChecker.getTypeAtLocation(typeReference);
if (type) {
- let propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName);
+ let propertySymbol = typeChecker.getPropertyOfType(type, propertyName);
if (propertySymbol) {
result.push(propertySymbol);
}
@@ -5346,7 +5394,7 @@ module ts {
// If the reference symbol is an alias, check if what it is aliasing is one of the search
// symbols.
if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) {
- var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol);
+ var aliasedSymbol = typeChecker.getAliasedSymbol(referenceSymbol);
if (searchSymbols.indexOf(aliasedSymbol) >= 0) {
return aliasedSymbol;
}
@@ -5357,13 +5405,13 @@ module ts {
// compare to our searchSymbol
if (isNameOfPropertyAssignment(referenceLocation)) {
return forEach(getPropertySymbolsFromContextualType(referenceLocation), contextualSymbol => {
- return forEach(typeInfoResolver.getRootSymbols(contextualSymbol), s => searchSymbols.indexOf(s) >= 0 ? s : undefined);
+ return forEach(typeChecker.getRootSymbols(contextualSymbol), s => searchSymbols.indexOf(s) >= 0 ? s : undefined);
});
}
// Unwrap symbols to get to the root (e.g. transient symbols as a result of widening)
// Or a union property, use its underlying unioned symbols
- return forEach(typeInfoResolver.getRootSymbols(referenceSymbol), rootSymbol => {
+ return forEach(typeChecker.getRootSymbols(referenceSymbol), rootSymbol => {
// if it is in the list, then we are done
if (searchSymbols.indexOf(rootSymbol) >= 0) {
return rootSymbol;
@@ -5384,7 +5432,7 @@ module ts {
function getPropertySymbolsFromContextualType(node: Node): Symbol[] {
if (isNameOfPropertyAssignment(node)) {
let objectLiteral = node.parent.parent;
- let contextualType = typeInfoResolver.getContextualType(objectLiteral);
+ let contextualType = typeChecker.getContextualType(objectLiteral);
let name = (node).text;
if (contextualType) {
if (contextualType.flags & TypeFlags.Union) {
@@ -5676,7 +5724,7 @@ module ts {
let sourceFile = getValidSourceFile(fileName);
- return SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken);
+ return SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken);
}
/// Syntactic features
@@ -5757,6 +5805,7 @@ module ts {
synchronizeHostData();
let sourceFile = getValidSourceFile(fileName);
+ let typeChecker = program.getTypeChecker();
let result: ClassifiedSpan[] = [];
processNode(sourceFile);
@@ -5809,7 +5858,7 @@ module ts {
// Only walk into nodes that intersect the requested span.
if (node && textSpanIntersectsWith(span, node.getStart(), node.getWidth())) {
if (node.kind === SyntaxKind.Identifier && node.getWidth() > 0) {
- let symbol = typeInfoResolver.getSymbolAtLocation(node);
+ let symbol = typeChecker.getSymbolAtLocation(node);
if (symbol) {
let type = classifySymbol(symbol, getMeaningFromLocation(node));
if (type) {
@@ -6291,12 +6340,13 @@ module ts {
synchronizeHostData();
let sourceFile = getValidSourceFile(fileName);
+ let typeChecker = program.getTypeChecker();
let node = getTouchingWord(sourceFile, position);
// Can only rename an identifier.
if (node && node.kind === SyntaxKind.Identifier) {
- let symbol = typeInfoResolver.getSymbolAtLocation(node);
+ let symbol = typeChecker.getSymbolAtLocation(node);
// Only allow a symbol to be renamed if it actually has at least one declaration.
if (symbol) {
@@ -6313,13 +6363,13 @@ module ts {
}
}
- let kind = getSymbolKind(symbol, typeInfoResolver, node);
+ let kind = getSymbolKind(symbol, node);
if (kind) {
return {
canRename: true,
localizedErrorMessage: undefined,
displayName: symbol.name,
- fullDisplayName: typeInfoResolver.getFullyQualifiedName(symbol),
+ fullDisplayName: typeChecker.getFullyQualifiedName(symbol),
kind: kind,
kindModifiers: getSymbolModifiers(symbol),
triggerSpan: createTextSpan(node.getStart(), node.getWidth())
diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts
index e311048191f..77aba4c85c1 100644
--- a/src/services/signatureHelp.ts
+++ b/src/services/signatureHelp.ts
@@ -178,7 +178,9 @@ module ts.SignatureHelp {
argumentCount: number;
}
- export function getSignatureHelpItems(sourceFile: SourceFile, position: number, typeInfoResolver: TypeChecker, cancellationToken: CancellationTokenObject): SignatureHelpItems {
+ export function getSignatureHelpItems(program: Program, sourceFile: SourceFile, position: number, cancellationToken: CancellationTokenObject): SignatureHelpItems {
+ let typeChecker = program.getTypeChecker();
+
// Decide whether to show signature help
let startingToken = findTokenOnLeftOfPosition(sourceFile, position);
if (!startingToken) {
@@ -196,15 +198,61 @@ module ts.SignatureHelp {
let call = argumentInfo.invocation;
let candidates = [];
- let resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates);
+ let resolvedSignature = typeChecker.getResolvedSignature(call, candidates);
cancellationToken.throwIfCancellationRequested();
if (!candidates.length) {
+ // We didn't have any sig help items produced by the TS compiler. If this is a JS
+ // file, then see if we can figure out anything better.
+ if (isJavaScript(sourceFile.fileName)) {
+ return createJavaScriptSignatureHelpItems(argumentInfo);
+ }
+
return undefined;
}
return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo);
+ function createJavaScriptSignatureHelpItems(argumentInfo: ArgumentListInfo): SignatureHelpItems {
+ if (argumentInfo.invocation.kind !== SyntaxKind.CallExpression) {
+ return undefined;
+ }
+
+ // See if we can find some symbol with the call expression name that has call signatures.
+ let callExpression = argumentInfo.invocation;
+ let expression = callExpression.expression;
+ let name = expression.kind === SyntaxKind.Identifier
+ ? expression
+ : expression.kind === SyntaxKind.PropertyAccessExpression
+ ? (expression).name
+ : undefined;
+
+ if (!name || !name.text) {
+ return undefined;
+ }
+
+ let typeChecker = program.getTypeChecker();
+ for (let sourceFile of program.getSourceFiles()) {
+ let nameToDeclarations = sourceFile.getNamedDeclarations();
+ let declarations = getProperty(nameToDeclarations, name.text);
+
+ if (declarations) {
+ for (let declaration of declarations) {
+ let symbol = declaration.symbol;
+ if (symbol) {
+ let type = typeChecker.getTypeOfSymbolAtLocation(symbol, declaration);
+ if (type) {
+ let callSignatures = type.getCallSignatures();
+ if (callSignatures && callSignatures.length) {
+ return createSignatureHelpItems(callSignatures, callSignatures[0], argumentInfo);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
/**
* Returns relevant information for the argument list and the current argument if we are
* in the argument of an invocation; returns undefined otherwise.
@@ -494,8 +542,8 @@ module ts.SignatureHelp {
let invocation = argumentListInfo.invocation;
let callTarget = getInvokedExpression(invocation)
- let callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget);
- let callTargetDisplayParts = callTargetSymbol && symbolToDisplayParts(typeInfoResolver, callTargetSymbol, /*enclosingDeclaration*/ undefined, /*meaning*/ undefined);
+ let callTargetSymbol = typeChecker.getSymbolAtLocation(callTarget);
+ let callTargetDisplayParts = callTargetSymbol && symbolToDisplayParts(typeChecker, callTargetSymbol, /*enclosingDeclaration*/ undefined, /*meaning*/ undefined);
let items: SignatureHelpItem[] = map(candidates, candidateSignature => {
let signatureHelpParameters: SignatureHelpParameter[];
let prefixDisplayParts: SymbolDisplayPart[] = [];
@@ -511,12 +559,12 @@ module ts.SignatureHelp {
signatureHelpParameters = typeParameters && typeParameters.length > 0 ? map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray;
suffixDisplayParts.push(punctuationPart(SyntaxKind.GreaterThanToken));
let parameterParts = mapToDisplayParts(writer =>
- typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation));
+ typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation));
suffixDisplayParts.push.apply(suffixDisplayParts, parameterParts);
}
else {
let typeParameterParts = mapToDisplayParts(writer =>
- typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation));
+ typeChecker.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation));
prefixDisplayParts.push.apply(prefixDisplayParts, typeParameterParts);
prefixDisplayParts.push(punctuationPart(SyntaxKind.OpenParenToken));
@@ -526,7 +574,7 @@ module ts.SignatureHelp {
}
let returnTypeParts = mapToDisplayParts(writer =>
- typeInfoResolver.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation));
+ typeChecker.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation));
suffixDisplayParts.push.apply(suffixDisplayParts, returnTypeParts);
return {
@@ -561,7 +609,7 @@ module ts.SignatureHelp {
function createSignatureHelpParameterForParameter(parameter: Symbol): SignatureHelpParameter {
let displayParts = mapToDisplayParts(writer =>
- typeInfoResolver.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation));
+ typeChecker.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation));
let isOptional = hasQuestionToken(parameter.valueDeclaration);
@@ -575,7 +623,7 @@ module ts.SignatureHelp {
function createSignatureHelpParameterForTypeParameter(typeParameter: TypeParameter): SignatureHelpParameter {
let displayParts = mapToDisplayParts(writer =>
- typeInfoResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation));
+ typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation));
return {
name: typeParameter.symbol.name,
diff --git a/src/services/utilities.ts b/src/services/utilities.ts
index 26b581e27b6..5e1460bbdcd 100644
--- a/src/services/utilities.ts
+++ b/src/services/utilities.ts
@@ -652,4 +652,8 @@ module ts {
typechecker.getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags);
});
}
+
+ export function isJavaScript(fileName: string) {
+ return fileExtensionIs(fileName, ".js");
+ }
}
\ No newline at end of file
diff --git a/tests/baselines/reference/2dArrays.types b/tests/baselines/reference/2dArrays.types
index b113ccdce7b..cb6c2a3a723 100644
--- a/tests/baselines/reference/2dArrays.types
+++ b/tests/baselines/reference/2dArrays.types
@@ -1,40 +1,40 @@
=== tests/cases/compiler/2dArrays.ts ===
class Cell {
->Cell : Cell
+>Cell : Cell, Symbol(Cell, Decl(2dArrays.ts, 0, 0))
}
class Ship {
->Ship : Ship
+>Ship : Ship, Symbol(Ship, Decl(2dArrays.ts, 1, 1))
isSunk: boolean;
->isSunk : boolean
+>isSunk : boolean, Symbol(isSunk, Decl(2dArrays.ts, 3, 12))
}
class Board {
->Board : Board
+>Board : Board, Symbol(Board, Decl(2dArrays.ts, 5, 1))
ships: Ship[];
->ships : Ship[]
->Ship : Ship
+>ships : Ship[], Symbol(ships, Decl(2dArrays.ts, 7, 13))
+>Ship : Ship, Symbol(Ship, Decl(2dArrays.ts, 1, 1))
cells: Cell[];
->cells : Cell[]
->Cell : Cell
+>cells : Cell[], Symbol(cells, Decl(2dArrays.ts, 8, 18))
+>Cell : Cell, Symbol(Cell, Decl(2dArrays.ts, 0, 0))
private allShipsSunk() {
->allShipsSunk : () => boolean
+>allShipsSunk : () => boolean, Symbol(allShipsSunk, Decl(2dArrays.ts, 9, 18))
return this.ships.every(function (val) { return val.isSunk; });
>this.ships.every(function (val) { return val.isSunk; }) : boolean
->this.ships.every : (callbackfn: (value: Ship, index: number, array: Ship[]) => boolean, thisArg?: any) => boolean
->this.ships : Ship[]
->this : Board
->ships : Ship[]
->every : (callbackfn: (value: Ship, index: number, array: Ship[]) => boolean, thisArg?: any) => boolean
+>this.ships.every : (callbackfn: (value: Ship, index: number, array: Ship[]) => boolean, thisArg?: any) => boolean, Symbol(Array.every, Decl(lib.d.ts, 1094, 62))
+>this.ships : Ship[], Symbol(ships, Decl(2dArrays.ts, 7, 13))
+>this : Board, Symbol(Board, Decl(2dArrays.ts, 5, 1))
+>ships : Ship[], Symbol(ships, Decl(2dArrays.ts, 7, 13))
+>every : (callbackfn: (value: Ship, index: number, array: Ship[]) => boolean, thisArg?: any) => boolean, Symbol(Array.every, Decl(lib.d.ts, 1094, 62))
>function (val) { return val.isSunk; } : (val: Ship) => boolean
->val : Ship
->val.isSunk : boolean
->val : Ship
->isSunk : boolean
+>val : Ship, Symbol(val, Decl(2dArrays.ts, 12, 42))
+>val.isSunk : boolean, Symbol(Ship.isSunk, Decl(2dArrays.ts, 3, 12))
+>val : Ship, Symbol(val, Decl(2dArrays.ts, 12, 42))
+>isSunk : boolean, Symbol(Ship.isSunk, Decl(2dArrays.ts, 3, 12))
}
}
diff --git a/tests/baselines/reference/APISample_compile.types b/tests/baselines/reference/APISample_compile.types
index 7ccbae38212..8c92b99cada 100644
--- a/tests/baselines/reference/APISample_compile.types
+++ b/tests/baselines/reference/APISample_compile.types
@@ -7,152 +7,162 @@
*/
declare var process: any;
->process : any
+>process : any, Symbol(process, Decl(APISample_compile.ts, 7, 11))
declare var console: any;
->console : any
+>console : any, Symbol(console, Decl(APISample_compile.ts, 8, 11))
declare var os: any;
->os : any
+>os : any, Symbol(os, Decl(APISample_compile.ts, 9, 11))
import ts = require("typescript");
->ts : typeof ts
+>ts : typeof ts, Symbol(ts, Decl(APISample_compile.ts, 9, 20))
export function compile(fileNames: string[], options: ts.CompilerOptions): void {
->compile : (fileNames: string[], options: ts.CompilerOptions) => void
->fileNames : string[]
->options : ts.CompilerOptions
->ts : unknown
->CompilerOptions : ts.CompilerOptions
+>compile : (fileNames: string[], options: ts.CompilerOptions) => void, Symbol(compile, Decl(APISample_compile.ts, 11, 34))
+>fileNames : string[], Symbol(fileNames, Decl(APISample_compile.ts, 13, 24))
+>options : ts.CompilerOptions, Symbol(options, Decl(APISample_compile.ts, 13, 44))
+>ts : any, Symbol(ts, Decl(APISample_compile.ts, 9, 20))
+>CompilerOptions : ts.CompilerOptions, Symbol(ts.CompilerOptions, Decl(typescript.d.ts, 1074, 5))
var program = ts.createProgram(fileNames, options);
->program : ts.Program
+>program : ts.Program, Symbol(program, Decl(APISample_compile.ts, 14, 7))
>ts.createProgram(fileNames, options) : ts.Program
->ts.createProgram : (rootNames: string[], options: ts.CompilerOptions, host?: ts.CompilerHost) => ts.Program
->ts : typeof ts
->createProgram : (rootNames: string[], options: ts.CompilerOptions, host?: ts.CompilerHost) => ts.Program
->fileNames : string[]
->options : ts.CompilerOptions
+>ts.createProgram : (rootNames: string[], options: ts.CompilerOptions, host?: ts.CompilerHost) => ts.Program, Symbol(ts.createProgram, Decl(typescript.d.ts, 1229, 113))
+>ts : typeof ts, Symbol(ts, Decl(APISample_compile.ts, 9, 20))
+>createProgram : (rootNames: string[], options: ts.CompilerOptions, host?: ts.CompilerHost) => ts.Program, Symbol(ts.createProgram, Decl(typescript.d.ts, 1229, 113))
+>fileNames : string[], Symbol(fileNames, Decl(APISample_compile.ts, 13, 24))
+>options : ts.CompilerOptions, Symbol(options, Decl(APISample_compile.ts, 13, 44))
var emitResult = program.emit();
->emitResult : ts.EmitResult
+>emitResult : ts.EmitResult, Symbol(emitResult, Decl(APISample_compile.ts, 15, 7))
>program.emit() : ts.EmitResult
->program.emit : (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback) => ts.EmitResult
->program : ts.Program
->emit : (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback) => ts.EmitResult
+>program.emit : (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback) => ts.EmitResult, Symbol(ts.Program.emit, Decl(typescript.d.ts, 767, 39))
+>program : ts.Program, Symbol(program, Decl(APISample_compile.ts, 14, 7))
+>emit : (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback) => ts.EmitResult, Symbol(ts.Program.emit, Decl(typescript.d.ts, 767, 39))
var allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
->allDiagnostics : ts.Diagnostic[]
+>allDiagnostics : ts.Diagnostic[], Symbol(allDiagnostics, Decl(APISample_compile.ts, 17, 7))
>ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics) : ts.Diagnostic[]
->ts.getPreEmitDiagnostics(program).concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }
+>ts.getPreEmitDiagnostics(program).concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }, Symbol(Array.concat, Decl(lib.d.ts, 1025, 13), Decl(lib.d.ts, 1030, 46))
>ts.getPreEmitDiagnostics(program) : ts.Diagnostic[]
->ts.getPreEmitDiagnostics : (program: ts.Program) => ts.Diagnostic[]
->ts : typeof ts
->getPreEmitDiagnostics : (program: ts.Program) => ts.Diagnostic[]
->program : ts.Program
->concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }
->emitResult.diagnostics : ts.Diagnostic[]
->emitResult : ts.EmitResult
->diagnostics : ts.Diagnostic[]
+>ts.getPreEmitDiagnostics : (program: ts.Program) => ts.Diagnostic[], Symbol(ts.getPreEmitDiagnostics, Decl(typescript.d.ts, 1227, 98))
+>ts : typeof ts, Symbol(ts, Decl(APISample_compile.ts, 9, 20))
+>getPreEmitDiagnostics : (program: ts.Program) => ts.Diagnostic[], Symbol(ts.getPreEmitDiagnostics, Decl(typescript.d.ts, 1227, 98))
+>program : ts.Program, Symbol(program, Decl(APISample_compile.ts, 14, 7))
+>concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }, Symbol(Array.concat, Decl(lib.d.ts, 1025, 13), Decl(lib.d.ts, 1030, 46))
+>emitResult.diagnostics : ts.Diagnostic[], Symbol(ts.EmitResult.diagnostics, Decl(typescript.d.ts, 820, 29))
+>emitResult : ts.EmitResult, Symbol(emitResult, Decl(APISample_compile.ts, 15, 7))
+>diagnostics : ts.Diagnostic[], Symbol(ts.EmitResult.diagnostics, Decl(typescript.d.ts, 820, 29))
allDiagnostics.forEach(diagnostic => {
>allDiagnostics.forEach(diagnostic => { var { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); var message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`); }) : void
->allDiagnostics.forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void
->allDiagnostics : ts.Diagnostic[]
->forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void
+>allDiagnostics.forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
+>allDiagnostics : ts.Diagnostic[], Symbol(allDiagnostics, Decl(APISample_compile.ts, 17, 7))
+>forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
>diagnostic => { var { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); var message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`); } : (diagnostic: ts.Diagnostic) => void
->diagnostic : ts.Diagnostic
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_compile.ts, 19, 27))
var { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
->line : number
->character : number
+>line : number, Symbol(line, Decl(APISample_compile.ts, 20, 13))
+>character : number, Symbol(character, Decl(APISample_compile.ts, 20, 19))
>diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start) : ts.LineAndCharacter
->diagnostic.file.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
->diagnostic.file : ts.SourceFile
->diagnostic : ts.Diagnostic
->file : ts.SourceFile
->getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
->diagnostic.start : number
->diagnostic : ts.Diagnostic
->start : number
+>diagnostic.file.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter, Symbol(ts.SourceFile.getLineAndCharacterOfPosition, Decl(typescript.d.ts, 1290, 26))
+>diagnostic.file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_compile.ts, 19, 27))
+>file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter, Symbol(ts.SourceFile.getLineAndCharacterOfPosition, Decl(typescript.d.ts, 1290, 26))
+>diagnostic.start : number, Symbol(ts.Diagnostic.start, Decl(typescript.d.ts, 1063, 25))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_compile.ts, 19, 27))
+>start : number, Symbol(ts.Diagnostic.start, Decl(typescript.d.ts, 1063, 25))
var message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
->message : string
+>message : string, Symbol(message, Decl(APISample_compile.ts, 21, 11))
>ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n') : string
->ts.flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string
->ts : typeof ts
->flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string
->diagnostic.messageText : string | ts.DiagnosticMessageChain
->diagnostic : ts.Diagnostic
->messageText : string | ts.DiagnosticMessageChain
+>ts.flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string, Symbol(ts.flattenDiagnosticMessageText, Decl(typescript.d.ts, 1228, 67))
+>ts : typeof ts, Symbol(ts, Decl(APISample_compile.ts, 9, 20))
+>flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string, Symbol(ts.flattenDiagnosticMessageText, Decl(typescript.d.ts, 1228, 67))
+>diagnostic.messageText : string | ts.DiagnosticMessageChain, Symbol(ts.Diagnostic.messageText, Decl(typescript.d.ts, 1065, 23))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_compile.ts, 19, 27))
+>messageText : string | ts.DiagnosticMessageChain, Symbol(ts.Diagnostic.messageText, Decl(typescript.d.ts, 1065, 23))
+>'\n' : string
console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
>console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_compile.ts, 8, 11))
>log : any
->diagnostic.file.fileName : string
->diagnostic.file : ts.SourceFile
->diagnostic : ts.Diagnostic
->file : ts.SourceFile
->fileName : string
+>`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}` : string
+>diagnostic.file.fileName : string, Symbol(ts.SourceFile.fileName, Decl(typescript.d.ts, 743, 29))
+>diagnostic.file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_compile.ts, 19, 27))
+>file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>fileName : string, Symbol(ts.SourceFile.fileName, Decl(typescript.d.ts, 743, 29))
>line + 1 : number
->line : number
+>line : number, Symbol(line, Decl(APISample_compile.ts, 20, 13))
+>1 : number
>character + 1 : number
->character : number
->message : string
+>character : number, Symbol(character, Decl(APISample_compile.ts, 20, 19))
+>1 : number
+>message : string, Symbol(message, Decl(APISample_compile.ts, 21, 11))
});
var exitCode = emitResult.emitSkipped ? 1 : 0;
->exitCode : number
+>exitCode : number, Symbol(exitCode, Decl(APISample_compile.ts, 25, 7))
>emitResult.emitSkipped ? 1 : 0 : number
->emitResult.emitSkipped : boolean
->emitResult : ts.EmitResult
->emitSkipped : boolean
+>emitResult.emitSkipped : boolean, Symbol(ts.EmitResult.emitSkipped, Decl(typescript.d.ts, 819, 26))
+>emitResult : ts.EmitResult, Symbol(emitResult, Decl(APISample_compile.ts, 15, 7))
+>emitSkipped : boolean, Symbol(ts.EmitResult.emitSkipped, Decl(typescript.d.ts, 819, 26))
+>1 : number
+>0 : number
console.log(`Process exiting with code '${exitCode}'.`);
>console.log(`Process exiting with code '${exitCode}'.`) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_compile.ts, 8, 11))
>log : any
->exitCode : number
+>`Process exiting with code '${exitCode}'.` : string
+>exitCode : number, Symbol(exitCode, Decl(APISample_compile.ts, 25, 7))
process.exit(exitCode);
>process.exit(exitCode) : any
>process.exit : any
->process : any
+>process : any, Symbol(process, Decl(APISample_compile.ts, 7, 11))
>exit : any
->exitCode : number
+>exitCode : number, Symbol(exitCode, Decl(APISample_compile.ts, 25, 7))
}
compile(process.argv.slice(2), {
>compile(process.argv.slice(2), { noEmitOnError: true, noImplicitAny: true, target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS}) : void
->compile : (fileNames: string[], options: ts.CompilerOptions) => void
+>compile : (fileNames: string[], options: ts.CompilerOptions) => void, Symbol(compile, Decl(APISample_compile.ts, 11, 34))
>process.argv.slice(2) : any
>process.argv.slice : any
>process.argv : any
->process : any
+>process : any, Symbol(process, Decl(APISample_compile.ts, 7, 11))
>argv : any
>slice : any
+>2 : number
>{ noEmitOnError: true, noImplicitAny: true, target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS} : { [x: string]: boolean | ts.ScriptTarget | ts.ModuleKind; noEmitOnError: boolean; noImplicitAny: boolean; target: ts.ScriptTarget; module: ts.ModuleKind; }
noEmitOnError: true, noImplicitAny: true,
->noEmitOnError : boolean
->noImplicitAny : boolean
+>noEmitOnError : boolean, Symbol(noEmitOnError, Decl(APISample_compile.ts, 30, 32))
+>true : boolean
+>noImplicitAny : boolean, Symbol(noImplicitAny, Decl(APISample_compile.ts, 31, 24))
+>true : boolean
target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS
->target : ts.ScriptTarget
->ts.ScriptTarget.ES5 : ts.ScriptTarget
->ts.ScriptTarget : typeof ts.ScriptTarget
->ts : typeof ts
->ScriptTarget : typeof ts.ScriptTarget
->ES5 : ts.ScriptTarget
->module : ts.ModuleKind
->ts.ModuleKind.CommonJS : ts.ModuleKind
->ts.ModuleKind : typeof ts.ModuleKind
->ts : typeof ts
->ModuleKind : typeof ts.ModuleKind
->CommonJS : ts.ModuleKind
+>target : ts.ScriptTarget, Symbol(target, Decl(APISample_compile.ts, 31, 45))
+>ts.ScriptTarget.ES5 : ts.ScriptTarget, Symbol(ts.ScriptTarget.ES5, Decl(typescript.d.ts, 1117, 16))
+>ts.ScriptTarget : typeof ts.ScriptTarget, Symbol(ts.ScriptTarget, Decl(typescript.d.ts, 1115, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_compile.ts, 9, 20))
+>ScriptTarget : typeof ts.ScriptTarget, Symbol(ts.ScriptTarget, Decl(typescript.d.ts, 1115, 5))
+>ES5 : ts.ScriptTarget, Symbol(ts.ScriptTarget.ES5, Decl(typescript.d.ts, 1117, 16))
+>module : ts.ModuleKind, Symbol(module, Decl(APISample_compile.ts, 32, 32))
+>ts.ModuleKind.CommonJS : ts.ModuleKind, Symbol(ts.ModuleKind.CommonJS, Decl(typescript.d.ts, 1108, 17))
+>ts.ModuleKind : typeof ts.ModuleKind, Symbol(ts.ModuleKind, Decl(typescript.d.ts, 1106, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_compile.ts, 9, 20))
+>ModuleKind : typeof ts.ModuleKind, Symbol(ts.ModuleKind, Decl(typescript.d.ts, 1106, 5))
+>CommonJS : ts.ModuleKind, Symbol(ts.ModuleKind.CommonJS, Decl(typescript.d.ts, 1108, 17))
});
diff --git a/tests/baselines/reference/APISample_linter.types b/tests/baselines/reference/APISample_linter.types
index 609f08f3a76..e7ea3c8282c 100644
--- a/tests/baselines/reference/APISample_linter.types
+++ b/tests/baselines/reference/APISample_linter.types
@@ -7,297 +7,306 @@
*/
declare var process: any;
->process : any
+>process : any, Symbol(process, Decl(APISample_linter.ts, 7, 11))
declare var console: any;
->console : any
+>console : any, Symbol(console, Decl(APISample_linter.ts, 8, 11))
declare var readFileSync: any;
->readFileSync : any
+>readFileSync : any, Symbol(readFileSync, Decl(APISample_linter.ts, 9, 11))
import * as ts from "typescript";
->ts : typeof ts
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
export function delint(sourceFile: ts.SourceFile) {
->delint : (sourceFile: ts.SourceFile) => void
->sourceFile : ts.SourceFile
->ts : unknown
->SourceFile : ts.SourceFile
+>delint : (sourceFile: ts.SourceFile) => void, Symbol(delint, Decl(APISample_linter.ts, 11, 33))
+>sourceFile : ts.SourceFile, Symbol(sourceFile, Decl(APISample_linter.ts, 13, 23))
+>ts : any, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SourceFile : ts.SourceFile, Symbol(ts.SourceFile, Decl(typescript.d.ts, 740, 5), Decl(typescript.d.ts, 1289, 5))
delintNode(sourceFile);
>delintNode(sourceFile) : void
->delintNode : (node: ts.Node) => void
->sourceFile : ts.SourceFile
+>delintNode : (node: ts.Node) => void, Symbol(delintNode, Decl(APISample_linter.ts, 14, 27))
+>sourceFile : ts.SourceFile, Symbol(sourceFile, Decl(APISample_linter.ts, 13, 23))
function delintNode(node: ts.Node) {
->delintNode : (node: ts.Node) => void
->node : ts.Node
->ts : unknown
->Node : ts.Node
+>delintNode : (node: ts.Node) => void, Symbol(delintNode, Decl(APISample_linter.ts, 14, 27))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
+>ts : any, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>Node : ts.Node, Symbol(ts.Node, Decl(typescript.d.ts, 296, 5), Decl(typescript.d.ts, 1249, 32))
switch (node.kind) {
->node.kind : ts.SyntaxKind
->node : ts.Node
->kind : ts.SyntaxKind
+>node.kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
+>kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
case ts.SyntaxKind.ForStatement:
->ts.SyntaxKind.ForStatement : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->ForStatement : ts.SyntaxKind
+>ts.SyntaxKind.ForStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.ForStatement, Decl(typescript.d.ts, 209, 29))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ForStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.ForStatement, Decl(typescript.d.ts, 209, 29))
case ts.SyntaxKind.ForInStatement:
->ts.SyntaxKind.ForInStatement : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->ForInStatement : ts.SyntaxKind
+>ts.SyntaxKind.ForInStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.ForInStatement, Decl(typescript.d.ts, 210, 27))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ForInStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.ForInStatement, Decl(typescript.d.ts, 210, 27))
case ts.SyntaxKind.WhileStatement:
->ts.SyntaxKind.WhileStatement : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->WhileStatement : ts.SyntaxKind
+>ts.SyntaxKind.WhileStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.WhileStatement, Decl(typescript.d.ts, 208, 26))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>WhileStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.WhileStatement, Decl(typescript.d.ts, 208, 26))
case ts.SyntaxKind.DoStatement:
->ts.SyntaxKind.DoStatement : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->DoStatement : ts.SyntaxKind
+>ts.SyntaxKind.DoStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.DoStatement, Decl(typescript.d.ts, 207, 26))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>DoStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.DoStatement, Decl(typescript.d.ts, 207, 26))
if ((node).statement.kind !== ts.SyntaxKind.Block) {
>(node).statement.kind !== ts.SyntaxKind.Block : boolean
->(node).statement.kind : ts.SyntaxKind
->(node).statement : ts.Statement
+>(node).statement.kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>(node).statement : ts.Statement, Symbol(ts.IterationStatement.statement, Decl(typescript.d.ts, 589, 52))
>(node) : ts.IterationStatement
>node : ts.IterationStatement
->ts : unknown
->IterationStatement : ts.IterationStatement
->node : ts.Node
->statement : ts.Statement
->kind : ts.SyntaxKind
->ts.SyntaxKind.Block : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->Block : ts.SyntaxKind
+>ts : any, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>IterationStatement : ts.IterationStatement, Symbol(ts.IterationStatement, Decl(typescript.d.ts, 588, 5))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
+>statement : ts.Statement, Symbol(ts.IterationStatement.statement, Decl(typescript.d.ts, 589, 52))
+>kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>ts.SyntaxKind.Block : ts.SyntaxKind, Symbol(ts.SyntaxKind.Block, Decl(typescript.d.ts, 202, 36))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>Block : ts.SyntaxKind, Symbol(ts.SyntaxKind.Block, Decl(typescript.d.ts, 202, 36))
report(node, "A looping statement's contents should be wrapped in a block body.");
>report(node, "A looping statement's contents should be wrapped in a block body.") : void
->report : (node: ts.Node, message: string) => void
->node : ts.Node
+>report : (node: ts.Node, message: string) => void, Symbol(report, Decl(APISample_linter.ts, 48, 5))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
+>"A looping statement's contents should be wrapped in a block body." : string
}
break;
case ts.SyntaxKind.IfStatement:
->ts.SyntaxKind.IfStatement : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->IfStatement : ts.SyntaxKind
+>ts.SyntaxKind.IfStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.IfStatement, Decl(typescript.d.ts, 206, 34))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>IfStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.IfStatement, Decl(typescript.d.ts, 206, 34))
let ifStatement = (node);
->ifStatement : ts.IfStatement
+>ifStatement : ts.IfStatement, Symbol(ifStatement, Decl(APISample_linter.ts, 28, 19))
>(node) : ts.IfStatement
>node : ts.IfStatement
->ts : unknown
->IfStatement : ts.IfStatement
->node : ts.Node
+>ts : any, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>IfStatement : ts.IfStatement, Symbol(ts.IfStatement, Decl(typescript.d.ts, 583, 5))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
if (ifStatement.thenStatement.kind !== ts.SyntaxKind.Block) {
>ifStatement.thenStatement.kind !== ts.SyntaxKind.Block : boolean
->ifStatement.thenStatement.kind : ts.SyntaxKind
->ifStatement.thenStatement : ts.Statement
->ifStatement : ts.IfStatement
->thenStatement : ts.Statement
->kind : ts.SyntaxKind
->ts.SyntaxKind.Block : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->Block : ts.SyntaxKind
+>ifStatement.thenStatement.kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>ifStatement.thenStatement : ts.Statement, Symbol(ts.IfStatement.thenStatement, Decl(typescript.d.ts, 585, 31))
+>ifStatement : ts.IfStatement, Symbol(ifStatement, Decl(APISample_linter.ts, 28, 19))
+>thenStatement : ts.Statement, Symbol(ts.IfStatement.thenStatement, Decl(typescript.d.ts, 585, 31))
+>kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>ts.SyntaxKind.Block : ts.SyntaxKind, Symbol(ts.SyntaxKind.Block, Decl(typescript.d.ts, 202, 36))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>Block : ts.SyntaxKind, Symbol(ts.SyntaxKind.Block, Decl(typescript.d.ts, 202, 36))
report(ifStatement.thenStatement, "An if statement's contents should be wrapped in a block body.");
>report(ifStatement.thenStatement, "An if statement's contents should be wrapped in a block body.") : void
->report : (node: ts.Node, message: string) => void
->ifStatement.thenStatement : ts.Statement
->ifStatement : ts.IfStatement
->thenStatement : ts.Statement
+>report : (node: ts.Node, message: string) => void, Symbol(report, Decl(APISample_linter.ts, 48, 5))
+>ifStatement.thenStatement : ts.Statement, Symbol(ts.IfStatement.thenStatement, Decl(typescript.d.ts, 585, 31))
+>ifStatement : ts.IfStatement, Symbol(ifStatement, Decl(APISample_linter.ts, 28, 19))
+>thenStatement : ts.Statement, Symbol(ts.IfStatement.thenStatement, Decl(typescript.d.ts, 585, 31))
+>"An if statement's contents should be wrapped in a block body." : string
}
if (ifStatement.elseStatement &&
>ifStatement.elseStatement && ifStatement.elseStatement.kind !== ts.SyntaxKind.Block && ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement : boolean
>ifStatement.elseStatement && ifStatement.elseStatement.kind !== ts.SyntaxKind.Block : boolean
->ifStatement.elseStatement : ts.Statement
->ifStatement : ts.IfStatement
->elseStatement : ts.Statement
+>ifStatement.elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
+>ifStatement : ts.IfStatement, Symbol(ifStatement, Decl(APISample_linter.ts, 28, 19))
+>elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
ifStatement.elseStatement.kind !== ts.SyntaxKind.Block &&
>ifStatement.elseStatement.kind !== ts.SyntaxKind.Block : boolean
->ifStatement.elseStatement.kind : ts.SyntaxKind
->ifStatement.elseStatement : ts.Statement
->ifStatement : ts.IfStatement
->elseStatement : ts.Statement
->kind : ts.SyntaxKind
->ts.SyntaxKind.Block : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->Block : ts.SyntaxKind
+>ifStatement.elseStatement.kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>ifStatement.elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
+>ifStatement : ts.IfStatement, Symbol(ifStatement, Decl(APISample_linter.ts, 28, 19))
+>elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
+>kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>ts.SyntaxKind.Block : ts.SyntaxKind, Symbol(ts.SyntaxKind.Block, Decl(typescript.d.ts, 202, 36))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>Block : ts.SyntaxKind, Symbol(ts.SyntaxKind.Block, Decl(typescript.d.ts, 202, 36))
ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement) {
>ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement : boolean
->ifStatement.elseStatement.kind : ts.SyntaxKind
->ifStatement.elseStatement : ts.Statement
->ifStatement : ts.IfStatement
->elseStatement : ts.Statement
->kind : ts.SyntaxKind
->ts.SyntaxKind.IfStatement : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->IfStatement : ts.SyntaxKind
+>ifStatement.elseStatement.kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>ifStatement.elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
+>ifStatement : ts.IfStatement, Symbol(ifStatement, Decl(APISample_linter.ts, 28, 19))
+>elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
+>kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>ts.SyntaxKind.IfStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.IfStatement, Decl(typescript.d.ts, 206, 34))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>IfStatement : ts.SyntaxKind, Symbol(ts.SyntaxKind.IfStatement, Decl(typescript.d.ts, 206, 34))
report(ifStatement.elseStatement, "An else statement's contents should be wrapped in a block body.");
>report(ifStatement.elseStatement, "An else statement's contents should be wrapped in a block body.") : void
->report : (node: ts.Node, message: string) => void
->ifStatement.elseStatement : ts.Statement
->ifStatement : ts.IfStatement
->elseStatement : ts.Statement
+>report : (node: ts.Node, message: string) => void, Symbol(report, Decl(APISample_linter.ts, 48, 5))
+>ifStatement.elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
+>ifStatement : ts.IfStatement, Symbol(ifStatement, Decl(APISample_linter.ts, 28, 19))
+>elseStatement : ts.Statement, Symbol(ts.IfStatement.elseStatement, Decl(typescript.d.ts, 586, 33))
+>"An else statement's contents should be wrapped in a block body." : string
}
break;
case ts.SyntaxKind.BinaryExpression:
->ts.SyntaxKind.BinaryExpression : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->BinaryExpression : ts.SyntaxKind
+>ts.SyntaxKind.BinaryExpression : ts.SyntaxKind, Symbol(ts.SyntaxKind.BinaryExpression, Decl(typescript.d.ts, 192, 37))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>BinaryExpression : ts.SyntaxKind, Symbol(ts.SyntaxKind.BinaryExpression, Decl(typescript.d.ts, 192, 37))
let op = (node).operatorToken.kind;
->op : ts.SyntaxKind
->(node).operatorToken.kind : ts.SyntaxKind
->(node).operatorToken : ts.Node
+>op : ts.SyntaxKind, Symbol(op, Decl(APISample_linter.ts, 40, 19))
+>(node).operatorToken.kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
+>(node).operatorToken : ts.Node, Symbol(ts.BinaryExpression.operatorToken, Decl(typescript.d.ts, 497, 25))
>(node) : ts.BinaryExpression
>node : ts.BinaryExpression
->ts : unknown
->BinaryExpression : ts.BinaryExpression
->node : ts.Node
->operatorToken : ts.Node
->kind : ts.SyntaxKind
+>ts : any, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>BinaryExpression : ts.BinaryExpression, Symbol(ts.BinaryExpression, Decl(typescript.d.ts, 495, 5))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
+>operatorToken : ts.Node, Symbol(ts.BinaryExpression.operatorToken, Decl(typescript.d.ts, 497, 25))
+>kind : ts.SyntaxKind, Symbol(ts.Node.kind, Decl(typescript.d.ts, 297, 38))
if (op === ts.SyntaxKind.EqualsEqualsToken || op == ts.SyntaxKind.ExclamationEqualsToken) {
>op === ts.SyntaxKind.EqualsEqualsToken || op == ts.SyntaxKind.ExclamationEqualsToken : boolean
>op === ts.SyntaxKind.EqualsEqualsToken : boolean
->op : ts.SyntaxKind
->ts.SyntaxKind.EqualsEqualsToken : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->EqualsEqualsToken : ts.SyntaxKind
+>op : ts.SyntaxKind, Symbol(op, Decl(APISample_linter.ts, 40, 19))
+>ts.SyntaxKind.EqualsEqualsToken : ts.SyntaxKind, Symbol(ts.SyntaxKind.EqualsEqualsToken, Decl(typescript.d.ts, 51, 36))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>EqualsEqualsToken : ts.SyntaxKind, Symbol(ts.SyntaxKind.EqualsEqualsToken, Decl(typescript.d.ts, 51, 36))
>op == ts.SyntaxKind.ExclamationEqualsToken : boolean
->op : ts.SyntaxKind
->ts.SyntaxKind.ExclamationEqualsToken : ts.SyntaxKind
->ts.SyntaxKind : typeof ts.SyntaxKind
->ts : typeof ts
->SyntaxKind : typeof ts.SyntaxKind
->ExclamationEqualsToken : ts.SyntaxKind
+>op : ts.SyntaxKind, Symbol(op, Decl(APISample_linter.ts, 40, 19))
+>ts.SyntaxKind.ExclamationEqualsToken : ts.SyntaxKind, Symbol(ts.SyntaxKind.ExclamationEqualsToken, Decl(typescript.d.ts, 52, 31))
+>ts.SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>SyntaxKind : typeof ts.SyntaxKind, Symbol(ts.SyntaxKind, Decl(typescript.d.ts, 22, 5))
+>ExclamationEqualsToken : ts.SyntaxKind, Symbol(ts.SyntaxKind.ExclamationEqualsToken, Decl(typescript.d.ts, 52, 31))
report(node, "Use '===' and '!=='.")
>report(node, "Use '===' and '!=='.") : void
->report : (node: ts.Node, message: string) => void
->node : ts.Node
+>report : (node: ts.Node, message: string) => void, Symbol(report, Decl(APISample_linter.ts, 48, 5))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
+>"Use '===' and '!=='." : string
}
break;
}
ts.forEachChild(node, delintNode);
>ts.forEachChild(node, delintNode) : void
->ts.forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T
->ts : typeof ts
->forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T
->node : ts.Node
->delintNode : (node: ts.Node) => void
+>ts.forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T, Symbol(ts.forEachChild, Decl(typescript.d.ts, 1214, 48))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T, Symbol(ts.forEachChild, Decl(typescript.d.ts, 1214, 48))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 16, 24))
+>delintNode : (node: ts.Node) => void, Symbol(delintNode, Decl(APISample_linter.ts, 14, 27))
}
function report(node: ts.Node, message: string) {
->report : (node: ts.Node, message: string) => void
->node : ts.Node
->ts : unknown
->Node : ts.Node
->message : string
+>report : (node: ts.Node, message: string) => void, Symbol(report, Decl(APISample_linter.ts, 48, 5))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 50, 20))
+>ts : any, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>Node : ts.Node, Symbol(ts.Node, Decl(typescript.d.ts, 296, 5), Decl(typescript.d.ts, 1249, 32))
+>message : string, Symbol(message, Decl(APISample_linter.ts, 50, 34))
let { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
->line : number
->character : number
+>line : number, Symbol(line, Decl(APISample_linter.ts, 51, 13))
+>character : number, Symbol(character, Decl(APISample_linter.ts, 51, 19))
>sourceFile.getLineAndCharacterOfPosition(node.getStart()) : ts.LineAndCharacter
->sourceFile.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
->sourceFile : ts.SourceFile
->getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
+>sourceFile.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter, Symbol(ts.SourceFile.getLineAndCharacterOfPosition, Decl(typescript.d.ts, 1290, 26))
+>sourceFile : ts.SourceFile, Symbol(sourceFile, Decl(APISample_linter.ts, 13, 23))
+>getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter, Symbol(ts.SourceFile.getLineAndCharacterOfPosition, Decl(typescript.d.ts, 1290, 26))
>node.getStart() : number
->node.getStart : (sourceFile?: ts.SourceFile) => number
->node : ts.Node
->getStart : (sourceFile?: ts.SourceFile) => number
+>node.getStart : (sourceFile?: ts.SourceFile) => number, Symbol(ts.Node.getStart, Decl(typescript.d.ts, 1254, 53))
+>node : ts.Node, Symbol(node, Decl(APISample_linter.ts, 50, 20))
+>getStart : (sourceFile?: ts.SourceFile) => number, Symbol(ts.Node.getStart, Decl(typescript.d.ts, 1254, 53))
console.log(`${sourceFile.fileName} (${line + 1},${character + 1}): ${message}`);
>console.log(`${sourceFile.fileName} (${line + 1},${character + 1}): ${message}`) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_linter.ts, 8, 11))
>log : any
->sourceFile.fileName : string
->sourceFile : ts.SourceFile
->fileName : string
+>`${sourceFile.fileName} (${line + 1},${character + 1}): ${message}` : string
+>sourceFile.fileName : string, Symbol(ts.SourceFile.fileName, Decl(typescript.d.ts, 743, 29))
+>sourceFile : ts.SourceFile, Symbol(sourceFile, Decl(APISample_linter.ts, 13, 23))
+>fileName : string, Symbol(ts.SourceFile.fileName, Decl(typescript.d.ts, 743, 29))
>line + 1 : number
->line : number
+>line : number, Symbol(line, Decl(APISample_linter.ts, 51, 13))
+>1 : number
>character + 1 : number
->character : number
->message : string
+>character : number, Symbol(character, Decl(APISample_linter.ts, 51, 19))
+>1 : number
+>message : string, Symbol(message, Decl(APISample_linter.ts, 50, 34))
}
}
const fileNames = process.argv.slice(2);
->fileNames : any
+>fileNames : any, Symbol(fileNames, Decl(APISample_linter.ts, 56, 5))
>process.argv.slice(2) : any
>process.argv.slice : any
>process.argv : any
->process : any
+>process : any, Symbol(process, Decl(APISample_linter.ts, 7, 11))
>argv : any
>slice : any
+>2 : number
fileNames.forEach(fileName => {
>fileNames.forEach(fileName => { // Parse a file let sourceFile = ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); // delint it delint(sourceFile);}) : any
>fileNames.forEach : any
->fileNames : any
+>fileNames : any, Symbol(fileNames, Decl(APISample_linter.ts, 56, 5))
>forEach : any
>fileName => { // Parse a file let sourceFile = ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); // delint it delint(sourceFile);} : (fileName: any) => void
->fileName : any
+>fileName : any, Symbol(fileName, Decl(APISample_linter.ts, 57, 18))
// Parse a file
let sourceFile = ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true);
->sourceFile : ts.SourceFile
+>sourceFile : ts.SourceFile, Symbol(sourceFile, Decl(APISample_linter.ts, 59, 7))
>ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true) : ts.SourceFile
->ts.createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile
->ts : typeof ts
->createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile
->fileName : any
+>ts.createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile, Symbol(ts.createSourceFile, Decl(typescript.d.ts, 1218, 62))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile, Symbol(ts.createSourceFile, Decl(typescript.d.ts, 1218, 62))
+>fileName : any, Symbol(fileName, Decl(APISample_linter.ts, 57, 18))
>readFileSync(fileName).toString() : any
>readFileSync(fileName).toString : any
>readFileSync(fileName) : any
->readFileSync : any
->fileName : any
+>readFileSync : any, Symbol(readFileSync, Decl(APISample_linter.ts, 9, 11))
+>fileName : any, Symbol(fileName, Decl(APISample_linter.ts, 57, 18))
>toString : any
->ts.ScriptTarget.ES6 : ts.ScriptTarget
->ts.ScriptTarget : typeof ts.ScriptTarget
->ts : typeof ts
->ScriptTarget : typeof ts.ScriptTarget
->ES6 : ts.ScriptTarget
+>ts.ScriptTarget.ES6 : ts.ScriptTarget, Symbol(ts.ScriptTarget.ES6, Decl(typescript.d.ts, 1118, 16))
+>ts.ScriptTarget : typeof ts.ScriptTarget, Symbol(ts.ScriptTarget, Decl(typescript.d.ts, 1115, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_linter.ts, 11, 6))
+>ScriptTarget : typeof ts.ScriptTarget, Symbol(ts.ScriptTarget, Decl(typescript.d.ts, 1115, 5))
+>ES6 : ts.ScriptTarget, Symbol(ts.ScriptTarget.ES6, Decl(typescript.d.ts, 1118, 16))
+>true : boolean
// delint it
delint(sourceFile);
>delint(sourceFile) : void
->delint : (sourceFile: ts.SourceFile) => void
->sourceFile : ts.SourceFile
+>delint : (sourceFile: ts.SourceFile) => void, Symbol(delint, Decl(APISample_linter.ts, 11, 33))
+>sourceFile : ts.SourceFile, Symbol(sourceFile, Decl(APISample_linter.ts, 59, 7))
});
diff --git a/tests/baselines/reference/APISample_transform.types b/tests/baselines/reference/APISample_transform.types
index d98d2cfad00..daacf3c3736 100644
--- a/tests/baselines/reference/APISample_transform.types
+++ b/tests/baselines/reference/APISample_transform.types
@@ -7,37 +7,38 @@
*/
declare var console: any;
->console : any
+>console : any, Symbol(console, Decl(APISample_transform.ts, 7, 11))
import * as ts from "typescript";
->ts : typeof ts
+>ts : typeof ts, Symbol(ts, Decl(APISample_transform.ts, 9, 6))
const source = "let x: string = 'string'";
->source : string
+>source : string, Symbol(source, Decl(APISample_transform.ts, 11, 5))
+>"let x: string = 'string'" : string
let result = ts.transpile(source, { module: ts.ModuleKind.CommonJS });
->result : string
+>result : string, Symbol(result, Decl(APISample_transform.ts, 13, 3))
>ts.transpile(source, { module: ts.ModuleKind.CommonJS }) : string
->ts.transpile : (input: string, compilerOptions?: ts.CompilerOptions, fileName?: string, diagnostics?: ts.Diagnostic[]) => string
->ts : typeof ts
->transpile : (input: string, compilerOptions?: ts.CompilerOptions, fileName?: string, diagnostics?: ts.Diagnostic[]) => string
->source : string
+>ts.transpile : (input: string, compilerOptions?: ts.CompilerOptions, fileName?: string, diagnostics?: ts.Diagnostic[]) => string, Symbol(ts.transpile, Decl(typescript.d.ts, 1756, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_transform.ts, 9, 6))
+>transpile : (input: string, compilerOptions?: ts.CompilerOptions, fileName?: string, diagnostics?: ts.Diagnostic[]) => string, Symbol(ts.transpile, Decl(typescript.d.ts, 1756, 5))
+>source : string, Symbol(source, Decl(APISample_transform.ts, 11, 5))
>{ module: ts.ModuleKind.CommonJS } : { [x: string]: ts.ModuleKind; module: ts.ModuleKind; }
->module : ts.ModuleKind
->ts.ModuleKind.CommonJS : ts.ModuleKind
->ts.ModuleKind : typeof ts.ModuleKind
->ts : typeof ts
->ModuleKind : typeof ts.ModuleKind
->CommonJS : ts.ModuleKind
+>module : ts.ModuleKind, Symbol(module, Decl(APISample_transform.ts, 13, 35))
+>ts.ModuleKind.CommonJS : ts.ModuleKind, Symbol(ts.ModuleKind.CommonJS, Decl(typescript.d.ts, 1108, 17))
+>ts.ModuleKind : typeof ts.ModuleKind, Symbol(ts.ModuleKind, Decl(typescript.d.ts, 1106, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_transform.ts, 9, 6))
+>ModuleKind : typeof ts.ModuleKind, Symbol(ts.ModuleKind, Decl(typescript.d.ts, 1106, 5))
+>CommonJS : ts.ModuleKind, Symbol(ts.ModuleKind.CommonJS, Decl(typescript.d.ts, 1108, 17))
console.log(JSON.stringify(result));
>console.log(JSON.stringify(result)) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_transform.ts, 7, 11))
>log : any
>JSON.stringify(result) : string
->JSON.stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; }
->JSON : JSON
->stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; }
->result : string
+>JSON.stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; }, Symbol(JSON.stringify, Decl(lib.d.ts, 964, 70), Decl(lib.d.ts, 969, 34), Decl(lib.d.ts, 975, 78), Decl(lib.d.ts, 981, 51), Decl(lib.d.ts, 988, 90))
+>JSON : JSON, Symbol(JSON, Decl(lib.d.ts, 955, 42), Decl(lib.d.ts, 1000, 11))
+>stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; }, Symbol(JSON.stringify, Decl(lib.d.ts, 964, 70), Decl(lib.d.ts, 969, 34), Decl(lib.d.ts, 975, 78), Decl(lib.d.ts, 981, 51), Decl(lib.d.ts, 988, 90))
+>result : string, Symbol(result, Decl(APISample_transform.ts, 13, 3))
diff --git a/tests/baselines/reference/APISample_watcher.types b/tests/baselines/reference/APISample_watcher.types
index 5f123ea839b..b08a624a33e 100644
--- a/tests/baselines/reference/APISample_watcher.types
+++ b/tests/baselines/reference/APISample_watcher.types
@@ -7,197 +7,200 @@
*/
declare var process: any;
->process : any
+>process : any, Symbol(process, Decl(APISample_watcher.ts, 7, 11))
declare var console: any;
->console : any
+>console : any, Symbol(console, Decl(APISample_watcher.ts, 8, 11))
declare var fs: any;
->fs : any
+>fs : any, Symbol(fs, Decl(APISample_watcher.ts, 9, 11))
declare var path: any;
->path : any
+>path : any, Symbol(path, Decl(APISample_watcher.ts, 10, 11))
import * as ts from "typescript";
->ts : typeof ts
+>ts : typeof ts, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
function watch(rootFileNames: string[], options: ts.CompilerOptions) {
->watch : (rootFileNames: string[], options: ts.CompilerOptions) => void
->rootFileNames : string[]
->options : ts.CompilerOptions
->ts : unknown
->CompilerOptions : ts.CompilerOptions
+>watch : (rootFileNames: string[], options: ts.CompilerOptions) => void, Symbol(watch, Decl(APISample_watcher.ts, 12, 33))
+>rootFileNames : string[], Symbol(rootFileNames, Decl(APISample_watcher.ts, 14, 15))
+>options : ts.CompilerOptions, Symbol(options, Decl(APISample_watcher.ts, 14, 39))
+>ts : any, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>CompilerOptions : ts.CompilerOptions, Symbol(ts.CompilerOptions, Decl(typescript.d.ts, 1074, 5))
const files: ts.Map<{ version: number }> = {};
->files : ts.Map<{ version: number; }>
->ts : unknown
->Map : ts.Map
->version : number
+>files : ts.Map<{ version: number; }>, Symbol(files, Decl(APISample_watcher.ts, 15, 9))
+>ts : any, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>Map : ts.Map, Symbol(ts.Map, Decl(typescript.d.ts, 15, 29))
+>version : number, Symbol(version, Decl(APISample_watcher.ts, 15, 25))
>{} : { [x: string]: undefined; }
// initialize the list of files
rootFileNames.forEach(fileName => {
>rootFileNames.forEach(fileName => { files[fileName] = { version: 0 }; }) : void
->rootFileNames.forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void
->rootFileNames : string[]
->forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void
+>rootFileNames.forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
+>rootFileNames : string[], Symbol(rootFileNames, Decl(APISample_watcher.ts, 14, 15))
+>forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
>fileName => { files[fileName] = { version: 0 }; } : (fileName: string) => void
->fileName : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 18, 26))
files[fileName] = { version: 0 };
>files[fileName] = { version: 0 } : { version: number; }
>files[fileName] : { version: number; }
->files : ts.Map<{ version: number; }>
->fileName : string
+>files : ts.Map<{ version: number; }>, Symbol(files, Decl(APISample_watcher.ts, 15, 9))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 18, 26))
>{ version: 0 } : { version: number; }
->version : number
+>version : number, Symbol(version, Decl(APISample_watcher.ts, 19, 27))
+>0 : number
});
// Create the language service host to allow the LS to communicate with the host
const servicesHost: ts.LanguageServiceHost = {
->servicesHost : ts.LanguageServiceHost
->ts : unknown
->LanguageServiceHost : ts.LanguageServiceHost
+>servicesHost : ts.LanguageServiceHost, Symbol(servicesHost, Decl(APISample_watcher.ts, 23, 9))
+>ts : any, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>LanguageServiceHost : ts.LanguageServiceHost, Symbol(ts.LanguageServiceHost, Decl(typescript.d.ts, 1322, 5))
>{ getScriptFileNames: () => rootFileNames, getScriptVersion: (fileName) => files[fileName] && files[fileName].version.toString(), getScriptSnapshot: (fileName) => { if (!fs.existsSync(fileName)) { return undefined; } return ts.ScriptSnapshot.fromString(fs.readFileSync(fileName).toString()); }, getCurrentDirectory: () => process.cwd(), getCompilationSettings: () => options, getDefaultLibFileName: (options) => ts.getDefaultLibFilePath(options), } : { getScriptFileNames: () => string[]; getScriptVersion: (fileName: string) => string; getScriptSnapshot: (fileName: string) => ts.IScriptSnapshot; getCurrentDirectory: () => any; getCompilationSettings: () => ts.CompilerOptions; getDefaultLibFileName: (options: ts.CompilerOptions) => string; }
getScriptFileNames: () => rootFileNames,
->getScriptFileNames : () => string[]
+>getScriptFileNames : () => string[], Symbol(getScriptFileNames, Decl(APISample_watcher.ts, 23, 50))
>() => rootFileNames : () => string[]
->rootFileNames : string[]
+>rootFileNames : string[], Symbol(rootFileNames, Decl(APISample_watcher.ts, 14, 15))
getScriptVersion: (fileName) => files[fileName] && files[fileName].version.toString(),
->getScriptVersion : (fileName: string) => string
+>getScriptVersion : (fileName: string) => string, Symbol(getScriptVersion, Decl(APISample_watcher.ts, 24, 48))
>(fileName) => files[fileName] && files[fileName].version.toString() : (fileName: string) => string
->fileName : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 25, 27))
>files[fileName] && files[fileName].version.toString() : string
>files[fileName] : { version: number; }
->files : ts.Map<{ version: number; }>
->fileName : string
+>files : ts.Map<{ version: number; }>, Symbol(files, Decl(APISample_watcher.ts, 15, 9))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 25, 27))
>files[fileName].version.toString() : string
->files[fileName].version.toString : (radix?: number) => string
->files[fileName].version : number
+>files[fileName].version.toString : (radix?: number) => string, Symbol(Number.toString, Decl(lib.d.ts, 458, 18))
+>files[fileName].version : number, Symbol(version, Decl(APISample_watcher.ts, 15, 25))
>files[fileName] : { version: number; }
->files : ts.Map<{ version: number; }>
->fileName : string
->version : number
->toString : (radix?: number) => string
+>files : ts.Map<{ version: number; }>, Symbol(files, Decl(APISample_watcher.ts, 15, 9))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 25, 27))
+>version : number, Symbol(version, Decl(APISample_watcher.ts, 15, 25))
+>toString : (radix?: number) => string, Symbol(Number.toString, Decl(lib.d.ts, 458, 18))
getScriptSnapshot: (fileName) => {
->getScriptSnapshot : (fileName: string) => ts.IScriptSnapshot
+>getScriptSnapshot : (fileName: string) => ts.IScriptSnapshot, Symbol(getScriptSnapshot, Decl(APISample_watcher.ts, 25, 94))
>(fileName) => { if (!fs.existsSync(fileName)) { return undefined; } return ts.ScriptSnapshot.fromString(fs.readFileSync(fileName).toString()); } : (fileName: string) => ts.IScriptSnapshot
->fileName : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 26, 28))
if (!fs.existsSync(fileName)) {
>!fs.existsSync(fileName) : boolean
>fs.existsSync(fileName) : any
>fs.existsSync : any
->fs : any
+>fs : any, Symbol(fs, Decl(APISample_watcher.ts, 9, 11))
>existsSync : any
->fileName : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 26, 28))
return undefined;
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
}
return ts.ScriptSnapshot.fromString(fs.readFileSync(fileName).toString());
>ts.ScriptSnapshot.fromString(fs.readFileSync(fileName).toString()) : ts.IScriptSnapshot
->ts.ScriptSnapshot.fromString : (text: string) => ts.IScriptSnapshot
->ts.ScriptSnapshot : typeof ts.ScriptSnapshot
->ts : typeof ts
->ScriptSnapshot : typeof ts.ScriptSnapshot
->fromString : (text: string) => ts.IScriptSnapshot
+>ts.ScriptSnapshot.fromString : (text: string) => ts.IScriptSnapshot, Symbol(ts.ScriptSnapshot.fromString, Decl(typescript.d.ts, 1315, 27))
+>ts.ScriptSnapshot : typeof ts.ScriptSnapshot, Symbol(ts.ScriptSnapshot, Decl(typescript.d.ts, 1314, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>ScriptSnapshot : typeof ts.ScriptSnapshot, Symbol(ts.ScriptSnapshot, Decl(typescript.d.ts, 1314, 5))
+>fromString : (text: string) => ts.IScriptSnapshot, Symbol(ts.ScriptSnapshot.fromString, Decl(typescript.d.ts, 1315, 27))
>fs.readFileSync(fileName).toString() : any
>fs.readFileSync(fileName).toString : any
>fs.readFileSync(fileName) : any
>fs.readFileSync : any
->fs : any
+>fs : any, Symbol(fs, Decl(APISample_watcher.ts, 9, 11))
>readFileSync : any
->fileName : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 26, 28))
>toString : any
},
getCurrentDirectory: () => process.cwd(),
->getCurrentDirectory : () => any
+>getCurrentDirectory : () => any, Symbol(getCurrentDirectory, Decl(APISample_watcher.ts, 32, 10))
>() => process.cwd() : () => any
>process.cwd() : any
>process.cwd : any
->process : any
+>process : any, Symbol(process, Decl(APISample_watcher.ts, 7, 11))
>cwd : any
getCompilationSettings: () => options,
->getCompilationSettings : () => ts.CompilerOptions
+>getCompilationSettings : () => ts.CompilerOptions, Symbol(getCompilationSettings, Decl(APISample_watcher.ts, 33, 49))
>() => options : () => ts.CompilerOptions
->options : ts.CompilerOptions
+>options : ts.CompilerOptions, Symbol(options, Decl(APISample_watcher.ts, 14, 39))
getDefaultLibFileName: (options) => ts.getDefaultLibFilePath(options),
->getDefaultLibFileName : (options: ts.CompilerOptions) => string
+>getDefaultLibFileName : (options: ts.CompilerOptions) => string, Symbol(getDefaultLibFileName, Decl(APISample_watcher.ts, 34, 46))
>(options) => ts.getDefaultLibFilePath(options) : (options: ts.CompilerOptions) => string
->options : ts.CompilerOptions
+>options : ts.CompilerOptions, Symbol(options, Decl(APISample_watcher.ts, 35, 32))
>ts.getDefaultLibFilePath(options) : string
->ts.getDefaultLibFilePath : (options: ts.CompilerOptions) => string
->ts : typeof ts
->getDefaultLibFilePath : (options: ts.CompilerOptions) => string
->options : ts.CompilerOptions
+>ts.getDefaultLibFilePath : (options: ts.CompilerOptions) => string, Symbol(ts.getDefaultLibFilePath, Decl(typescript.d.ts, 1764, 44))
+>ts : typeof ts, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>getDefaultLibFilePath : (options: ts.CompilerOptions) => string, Symbol(ts.getDefaultLibFilePath, Decl(typescript.d.ts, 1764, 44))
+>options : ts.CompilerOptions, Symbol(options, Decl(APISample_watcher.ts, 35, 32))
};
// Create the language service files
const services = ts.createLanguageService(servicesHost, ts.createDocumentRegistry())
->services : ts.LanguageService
+>services : ts.LanguageService, Symbol(services, Decl(APISample_watcher.ts, 39, 9))
>ts.createLanguageService(servicesHost, ts.createDocumentRegistry()) : ts.LanguageService
->ts.createLanguageService : (host: ts.LanguageServiceHost, documentRegistry?: ts.DocumentRegistry) => ts.LanguageService
->ts : typeof ts
->createLanguageService : (host: ts.LanguageServiceHost, documentRegistry?: ts.DocumentRegistry) => ts.LanguageService
->servicesHost : ts.LanguageServiceHost
+>ts.createLanguageService : (host: ts.LanguageServiceHost, documentRegistry?: ts.DocumentRegistry) => ts.LanguageService, Symbol(ts.createLanguageService, Decl(typescript.d.ts, 1762, 97))
+>ts : typeof ts, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>createLanguageService : (host: ts.LanguageServiceHost, documentRegistry?: ts.DocumentRegistry) => ts.LanguageService, Symbol(ts.createLanguageService, Decl(typescript.d.ts, 1762, 97))
+>servicesHost : ts.LanguageServiceHost, Symbol(servicesHost, Decl(APISample_watcher.ts, 23, 9))
>ts.createDocumentRegistry() : ts.DocumentRegistry
->ts.createDocumentRegistry : () => ts.DocumentRegistry
->ts : typeof ts
->createDocumentRegistry : () => ts.DocumentRegistry
+>ts.createDocumentRegistry : () => ts.DocumentRegistry, Symbol(ts.createDocumentRegistry, Decl(typescript.d.ts, 1760, 193))
+>ts : typeof ts, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>createDocumentRegistry : () => ts.DocumentRegistry, Symbol(ts.createDocumentRegistry, Decl(typescript.d.ts, 1760, 193))
// Now let's watch the files
rootFileNames.forEach(fileName => {
>rootFileNames.forEach(fileName => { // First time around, emit all files emitFile(fileName); // Add a watch on the file to handle next change fs.watchFile(fileName, { persistent: true, interval: 250 }, (curr, prev) => { // Check timestamp if (+curr.mtime <= +prev.mtime) { return; } // Update the version to signal a change in the file files[fileName].version++; // write the changes to disk emitFile(fileName); }); }) : void
->rootFileNames.forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void
->rootFileNames : string[]
->forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void
+>rootFileNames.forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
+>rootFileNames : string[], Symbol(rootFileNames, Decl(APISample_watcher.ts, 14, 15))
+>forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
>fileName => { // First time around, emit all files emitFile(fileName); // Add a watch on the file to handle next change fs.watchFile(fileName, { persistent: true, interval: 250 }, (curr, prev) => { // Check timestamp if (+curr.mtime <= +prev.mtime) { return; } // Update the version to signal a change in the file files[fileName].version++; // write the changes to disk emitFile(fileName); }); } : (fileName: string) => void
->fileName : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 42, 26))
// First time around, emit all files
emitFile(fileName);
>emitFile(fileName) : void
->emitFile : (fileName: string) => void
->fileName : string
+>emitFile : (fileName: string) => void, Symbol(emitFile, Decl(APISample_watcher.ts, 61, 7))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 42, 26))
// Add a watch on the file to handle next change
fs.watchFile(fileName,
>fs.watchFile(fileName, { persistent: true, interval: 250 }, (curr, prev) => { // Check timestamp if (+curr.mtime <= +prev.mtime) { return; } // Update the version to signal a change in the file files[fileName].version++; // write the changes to disk emitFile(fileName); }) : any
>fs.watchFile : any
->fs : any
+>fs : any, Symbol(fs, Decl(APISample_watcher.ts, 9, 11))
>watchFile : any
->fileName : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 42, 26))
{ persistent: true, interval: 250 },
>{ persistent: true, interval: 250 } : { persistent: boolean; interval: number; }
->persistent : boolean
->interval : number
+>persistent : boolean, Symbol(persistent, Decl(APISample_watcher.ts, 48, 13))
+>true : boolean
+>interval : number, Symbol(interval, Decl(APISample_watcher.ts, 48, 31))
+>250 : number
(curr, prev) => {
>(curr, prev) => { // Check timestamp if (+curr.mtime <= +prev.mtime) { return; } // Update the version to signal a change in the file files[fileName].version++; // write the changes to disk emitFile(fileName); } : (curr: any, prev: any) => void
->curr : any
->prev : any
+>curr : any, Symbol(curr, Decl(APISample_watcher.ts, 49, 13))
+>prev : any, Symbol(prev, Decl(APISample_watcher.ts, 49, 18))
// Check timestamp
if (+curr.mtime <= +prev.mtime) {
>+curr.mtime <= +prev.mtime : boolean
>+curr.mtime : number
>curr.mtime : any
->curr : any
+>curr : any, Symbol(curr, Decl(APISample_watcher.ts, 49, 13))
>mtime : any
>+prev.mtime : number
>prev.mtime : any
->prev : any
+>prev : any, Symbol(prev, Decl(APISample_watcher.ts, 49, 18))
>mtime : any
return;
@@ -206,175 +209,183 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) {
// Update the version to signal a change in the file
files[fileName].version++;
>files[fileName].version++ : number
->files[fileName].version : number
+>files[fileName].version : number, Symbol(version, Decl(APISample_watcher.ts, 15, 25))
>files[fileName] : { version: number; }
->files : ts.Map<{ version: number; }>
->fileName : string
->version : number
+>files : ts.Map<{ version: number; }>, Symbol(files, Decl(APISample_watcher.ts, 15, 9))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 42, 26))
+>version : number, Symbol(version, Decl(APISample_watcher.ts, 15, 25))
// write the changes to disk
emitFile(fileName);
>emitFile(fileName) : void
->emitFile : (fileName: string) => void
->fileName : string
+>emitFile : (fileName: string) => void, Symbol(emitFile, Decl(APISample_watcher.ts, 61, 7))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 42, 26))
});
});
function emitFile(fileName: string) {
->emitFile : (fileName: string) => void
->fileName : string
+>emitFile : (fileName: string) => void, Symbol(emitFile, Decl(APISample_watcher.ts, 61, 7))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 63, 22))
let output = services.getEmitOutput(fileName);
->output : ts.EmitOutput
+>output : ts.EmitOutput, Symbol(output, Decl(APISample_watcher.ts, 64, 11))
>services.getEmitOutput(fileName) : ts.EmitOutput
->services.getEmitOutput : (fileName: string) => ts.EmitOutput
->services : ts.LanguageService
->getEmitOutput : (fileName: string) => ts.EmitOutput
->fileName : string
+>services.getEmitOutput : (fileName: string) => ts.EmitOutput, Symbol(ts.LanguageService.getEmitOutput, Decl(typescript.d.ts, 1366, 132))
+>services : ts.LanguageService, Symbol(services, Decl(APISample_watcher.ts, 39, 9))
+>getEmitOutput : (fileName: string) => ts.EmitOutput, Symbol(ts.LanguageService.getEmitOutput, Decl(typescript.d.ts, 1366, 132))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 63, 22))
if (!output.emitSkipped) {
>!output.emitSkipped : boolean
->output.emitSkipped : boolean
->output : ts.EmitOutput
->emitSkipped : boolean
+>output.emitSkipped : boolean, Symbol(ts.EmitOutput.emitSkipped, Decl(typescript.d.ts, 1569, 34))
+>output : ts.EmitOutput, Symbol(output, Decl(APISample_watcher.ts, 64, 11))
+>emitSkipped : boolean, Symbol(ts.EmitOutput.emitSkipped, Decl(typescript.d.ts, 1569, 34))
console.log(`Emitting ${fileName}`);
>console.log(`Emitting ${fileName}`) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_watcher.ts, 8, 11))
>log : any
->fileName : string
+>`Emitting ${fileName}` : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 63, 22))
}
else {
console.log(`Emitting ${fileName} failed`);
>console.log(`Emitting ${fileName} failed`) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_watcher.ts, 8, 11))
>log : any
->fileName : string
+>`Emitting ${fileName} failed` : string
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 63, 22))
logErrors(fileName);
>logErrors(fileName) : void
->logErrors : (fileName: string) => void
->fileName : string
+>logErrors : (fileName: string) => void, Symbol(logErrors, Decl(APISample_watcher.ts, 77, 5))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 63, 22))
}
output.outputFiles.forEach(o => {
>output.outputFiles.forEach(o => { fs.writeFileSync(o.name, o.text, "utf8"); }) : void
->output.outputFiles.forEach : (callbackfn: (value: ts.OutputFile, index: number, array: ts.OutputFile[]) => void, thisArg?: any) => void
->output.outputFiles : ts.OutputFile[]
->output : ts.EmitOutput
->outputFiles : ts.OutputFile[]
->forEach : (callbackfn: (value: ts.OutputFile, index: number, array: ts.OutputFile[]) => void, thisArg?: any) => void
+>output.outputFiles.forEach : (callbackfn: (value: ts.OutputFile, index: number, array: ts.OutputFile[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
+>output.outputFiles : ts.OutputFile[], Symbol(ts.EmitOutput.outputFiles, Decl(typescript.d.ts, 1568, 26))
+>output : ts.EmitOutput, Symbol(output, Decl(APISample_watcher.ts, 64, 11))
+>outputFiles : ts.OutputFile[], Symbol(ts.EmitOutput.outputFiles, Decl(typescript.d.ts, 1568, 26))
+>forEach : (callbackfn: (value: ts.OutputFile, index: number, array: ts.OutputFile[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
>o => { fs.writeFileSync(o.name, o.text, "utf8"); } : (o: ts.OutputFile) => void
->o : ts.OutputFile
+>o : ts.OutputFile, Symbol(o, Decl(APISample_watcher.ts, 74, 35))
fs.writeFileSync(o.name, o.text, "utf8");
>fs.writeFileSync(o.name, o.text, "utf8") : any
>fs.writeFileSync : any
->fs : any
+>fs : any, Symbol(fs, Decl(APISample_watcher.ts, 9, 11))
>writeFileSync : any
->o.name : string
->o : ts.OutputFile
->name : string
->o.text : string
->o : ts.OutputFile
->text : string
+>o.name : string, Symbol(ts.OutputFile.name, Decl(typescript.d.ts, 1577, 26))
+>o : ts.OutputFile, Symbol(o, Decl(APISample_watcher.ts, 74, 35))
+>name : string, Symbol(ts.OutputFile.name, Decl(typescript.d.ts, 1577, 26))
+>o.text : string, Symbol(ts.OutputFile.text, Decl(typescript.d.ts, 1579, 36))
+>o : ts.OutputFile, Symbol(o, Decl(APISample_watcher.ts, 74, 35))
+>text : string, Symbol(ts.OutputFile.text, Decl(typescript.d.ts, 1579, 36))
+>"utf8" : string
});
}
function logErrors(fileName: string) {
->logErrors : (fileName: string) => void
->fileName : string
+>logErrors : (fileName: string) => void, Symbol(logErrors, Decl(APISample_watcher.ts, 77, 5))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 79, 23))
let allDiagnostics = services.getCompilerOptionsDiagnostics()
->allDiagnostics : ts.Diagnostic[]
+>allDiagnostics : ts.Diagnostic[], Symbol(allDiagnostics, Decl(APISample_watcher.ts, 80, 11))
>services.getCompilerOptionsDiagnostics() .concat(services.getSyntacticDiagnostics(fileName)) .concat(services.getSemanticDiagnostics(fileName)) : ts.Diagnostic[]
->services.getCompilerOptionsDiagnostics() .concat(services.getSyntacticDiagnostics(fileName)) .concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }
+>services.getCompilerOptionsDiagnostics() .concat(services.getSyntacticDiagnostics(fileName)) .concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }, Symbol(Array.concat, Decl(lib.d.ts, 1025, 13), Decl(lib.d.ts, 1030, 46))
>services.getCompilerOptionsDiagnostics() .concat(services.getSyntacticDiagnostics(fileName)) : ts.Diagnostic[]
->services.getCompilerOptionsDiagnostics() .concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }
+>services.getCompilerOptionsDiagnostics() .concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }, Symbol(Array.concat, Decl(lib.d.ts, 1025, 13), Decl(lib.d.ts, 1030, 46))
>services.getCompilerOptionsDiagnostics() : ts.Diagnostic[]
->services.getCompilerOptionsDiagnostics : () => ts.Diagnostic[]
->services : ts.LanguageService
->getCompilerOptionsDiagnostics : () => ts.Diagnostic[]
+>services.getCompilerOptionsDiagnostics : () => ts.Diagnostic[], Symbol(ts.LanguageService.getCompilerOptionsDiagnostics, Decl(typescript.d.ts, 1340, 63))
+>services : ts.LanguageService, Symbol(services, Decl(APISample_watcher.ts, 39, 9))
+>getCompilerOptionsDiagnostics : () => ts.Diagnostic[], Symbol(ts.LanguageService.getCompilerOptionsDiagnostics, Decl(typescript.d.ts, 1340, 63))
.concat(services.getSyntacticDiagnostics(fileName))
->concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }
+>concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }, Symbol(Array.concat, Decl(lib.d.ts, 1025, 13), Decl(lib.d.ts, 1030, 46))
>services.getSyntacticDiagnostics(fileName) : ts.Diagnostic[]
->services.getSyntacticDiagnostics : (fileName: string) => ts.Diagnostic[]
->services : ts.LanguageService
->getSyntacticDiagnostics : (fileName: string) => ts.Diagnostic[]
->fileName : string
+>services.getSyntacticDiagnostics : (fileName: string) => ts.Diagnostic[], Symbol(ts.LanguageService.getSyntacticDiagnostics, Decl(typescript.d.ts, 1338, 37))
+>services : ts.LanguageService, Symbol(services, Decl(APISample_watcher.ts, 39, 9))
+>getSyntacticDiagnostics : (fileName: string) => ts.Diagnostic[], Symbol(ts.LanguageService.getSyntacticDiagnostics, Decl(typescript.d.ts, 1338, 37))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 79, 23))
.concat(services.getSemanticDiagnostics(fileName));
->concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }
+>concat : { (...items: U[]): ts.Diagnostic[]; (...items: ts.Diagnostic[]): ts.Diagnostic[]; }, Symbol(Array.concat, Decl(lib.d.ts, 1025, 13), Decl(lib.d.ts, 1030, 46))
>services.getSemanticDiagnostics(fileName) : ts.Diagnostic[]
->services.getSemanticDiagnostics : (fileName: string) => ts.Diagnostic[]
->services : ts.LanguageService
->getSemanticDiagnostics : (fileName: string) => ts.Diagnostic[]
->fileName : string
+>services.getSemanticDiagnostics : (fileName: string) => ts.Diagnostic[], Symbol(ts.LanguageService.getSemanticDiagnostics, Decl(typescript.d.ts, 1339, 64))
+>services : ts.LanguageService, Symbol(services, Decl(APISample_watcher.ts, 39, 9))
+>getSemanticDiagnostics : (fileName: string) => ts.Diagnostic[], Symbol(ts.LanguageService.getSemanticDiagnostics, Decl(typescript.d.ts, 1339, 64))
+>fileName : string, Symbol(fileName, Decl(APISample_watcher.ts, 79, 23))
allDiagnostics.forEach(diagnostic => {
>allDiagnostics.forEach(diagnostic => { let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); if (diagnostic.file) { let { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); console.log(` Error ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`); } else { console.log(` Error: ${message}`); } }) : void
->allDiagnostics.forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void
->allDiagnostics : ts.Diagnostic[]
->forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void
+>allDiagnostics.forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
+>allDiagnostics : ts.Diagnostic[], Symbol(allDiagnostics, Decl(APISample_watcher.ts, 80, 11))
+>forEach : (callbackfn: (value: ts.Diagnostic, index: number, array: ts.Diagnostic[]) => void, thisArg?: any) => void, Symbol(Array.forEach, Decl(lib.d.ts, 1108, 95))
>diagnostic => { let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); if (diagnostic.file) { let { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); console.log(` Error ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`); } else { console.log(` Error: ${message}`); } } : (diagnostic: ts.Diagnostic) => void
->diagnostic : ts.Diagnostic
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_watcher.ts, 84, 31))
let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
->message : string
+>message : string, Symbol(message, Decl(APISample_watcher.ts, 85, 15))
>ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n") : string
->ts.flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string
->ts : typeof ts
->flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string
->diagnostic.messageText : string | ts.DiagnosticMessageChain
->diagnostic : ts.Diagnostic
->messageText : string | ts.DiagnosticMessageChain
+>ts.flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string, Symbol(ts.flattenDiagnosticMessageText, Decl(typescript.d.ts, 1228, 67))
+>ts : typeof ts, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>flattenDiagnosticMessageText : (messageText: string | ts.DiagnosticMessageChain, newLine: string) => string, Symbol(ts.flattenDiagnosticMessageText, Decl(typescript.d.ts, 1228, 67))
+>diagnostic.messageText : string | ts.DiagnosticMessageChain, Symbol(ts.Diagnostic.messageText, Decl(typescript.d.ts, 1065, 23))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_watcher.ts, 84, 31))
+>messageText : string | ts.DiagnosticMessageChain, Symbol(ts.Diagnostic.messageText, Decl(typescript.d.ts, 1065, 23))
+>"\n" : string
if (diagnostic.file) {
->diagnostic.file : ts.SourceFile
->diagnostic : ts.Diagnostic
->file : ts.SourceFile
+>diagnostic.file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_watcher.ts, 84, 31))
+>file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
let { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
->line : number
->character : number
+>line : number, Symbol(line, Decl(APISample_watcher.ts, 87, 21))
+>character : number, Symbol(character, Decl(APISample_watcher.ts, 87, 27))
>diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start) : ts.LineAndCharacter
->diagnostic.file.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
->diagnostic.file : ts.SourceFile
->diagnostic : ts.Diagnostic
->file : ts.SourceFile
->getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
->diagnostic.start : number
->diagnostic : ts.Diagnostic
->start : number
+>diagnostic.file.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter, Symbol(ts.SourceFile.getLineAndCharacterOfPosition, Decl(typescript.d.ts, 1290, 26))
+>diagnostic.file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_watcher.ts, 84, 31))
+>file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter, Symbol(ts.SourceFile.getLineAndCharacterOfPosition, Decl(typescript.d.ts, 1290, 26))
+>diagnostic.start : number, Symbol(ts.Diagnostic.start, Decl(typescript.d.ts, 1063, 25))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_watcher.ts, 84, 31))
+>start : number, Symbol(ts.Diagnostic.start, Decl(typescript.d.ts, 1063, 25))
console.log(` Error ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
>console.log(` Error ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_watcher.ts, 8, 11))
>log : any
->diagnostic.file.fileName : string
->diagnostic.file : ts.SourceFile
->diagnostic : ts.Diagnostic
->file : ts.SourceFile
->fileName : string
+>` Error ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}` : string
+>diagnostic.file.fileName : string, Symbol(ts.SourceFile.fileName, Decl(typescript.d.ts, 743, 29))
+>diagnostic.file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>diagnostic : ts.Diagnostic, Symbol(diagnostic, Decl(APISample_watcher.ts, 84, 31))
+>file : ts.SourceFile, Symbol(ts.Diagnostic.file, Decl(typescript.d.ts, 1062, 26))
+>fileName : string, Symbol(ts.SourceFile.fileName, Decl(typescript.d.ts, 743, 29))
>line + 1 : number
->line : number
+>line : number, Symbol(line, Decl(APISample_watcher.ts, 87, 21))
+>1 : number
>character + 1 : number
->character : number
->message : string
+>character : number, Symbol(character, Decl(APISample_watcher.ts, 87, 27))
+>1 : number
+>message : string, Symbol(message, Decl(APISample_watcher.ts, 85, 15))
}
else {
console.log(` Error: ${message}`);
>console.log(` Error: ${message}`) : any
>console.log : any
->console : any
+>console : any, Symbol(console, Decl(APISample_watcher.ts, 8, 11))
>log : any
->message : string
+>` Error: ${message}` : string
+>message : string, Symbol(message, Decl(APISample_watcher.ts, 85, 15))
}
});
}
@@ -382,47 +393,51 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) {
// Initialize files constituting the program as all .ts files in the current directory
const currentDirectoryFiles = fs.readdirSync(process.cwd()).
->currentDirectoryFiles : any
+>currentDirectoryFiles : any, Symbol(currentDirectoryFiles, Decl(APISample_watcher.ts, 98, 5))
>fs.readdirSync(process.cwd()). filter(fileName=> fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts") : any
>fs.readdirSync(process.cwd()). filter : any
>fs.readdirSync(process.cwd()) : any
>fs.readdirSync : any
->fs : any
+>fs : any, Symbol(fs, Decl(APISample_watcher.ts, 9, 11))
>readdirSync : any
>process.cwd() : any
>process.cwd : any
->process : any
+>process : any, Symbol(process, Decl(APISample_watcher.ts, 7, 11))
>cwd : any
filter(fileName=> fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts");
>filter : any
>fileName=> fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts" : (fileName: any) => boolean
->fileName : any
+>fileName : any, Symbol(fileName, Decl(APISample_watcher.ts, 99, 11))
>fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts" : boolean
>fileName.length >= 3 : boolean
>fileName.length : any
->fileName : any
+>fileName : any, Symbol(fileName, Decl(APISample_watcher.ts, 99, 11))
>length : any
+>3 : number
>fileName.substr(fileName.length - 3, 3) === ".ts" : boolean
>fileName.substr(fileName.length - 3, 3) : any
>fileName.substr : any
->fileName : any
+>fileName : any, Symbol(fileName, Decl(APISample_watcher.ts, 99, 11))
>substr : any
>fileName.length - 3 : number
>fileName.length : any
->fileName : any
+>fileName : any, Symbol(fileName, Decl(APISample_watcher.ts, 99, 11))
>length : any
+>3 : number
+>3 : number
+>".ts" : string
// Start the watcher
watch(currentDirectoryFiles, { module: ts.ModuleKind.CommonJS });
>watch(currentDirectoryFiles, { module: ts.ModuleKind.CommonJS }) : void
->watch : (rootFileNames: string[], options: ts.CompilerOptions) => void
->currentDirectoryFiles : any
+>watch : (rootFileNames: string[], options: ts.CompilerOptions) => void, Symbol(watch, Decl(APISample_watcher.ts, 12, 33))
+>currentDirectoryFiles : any, Symbol(currentDirectoryFiles, Decl(APISample_watcher.ts, 98, 5))
>{ module: ts.ModuleKind.CommonJS } : { [x: string]: ts.ModuleKind; module: ts.ModuleKind; }
->module : ts.ModuleKind
->ts.ModuleKind.CommonJS : ts.ModuleKind
->ts.ModuleKind : typeof ts.ModuleKind
->ts : typeof ts
->ModuleKind : typeof ts.ModuleKind
->CommonJS : ts.ModuleKind
+>module : ts.ModuleKind, Symbol(module, Decl(APISample_watcher.ts, 102, 30))
+>ts.ModuleKind.CommonJS : ts.ModuleKind, Symbol(ts.ModuleKind.CommonJS, Decl(typescript.d.ts, 1108, 17))
+>ts.ModuleKind : typeof ts.ModuleKind, Symbol(ts.ModuleKind, Decl(typescript.d.ts, 1106, 5))
+>ts : typeof ts, Symbol(ts, Decl(APISample_watcher.ts, 12, 6))
+>ModuleKind : typeof ts.ModuleKind, Symbol(ts.ModuleKind, Decl(typescript.d.ts, 1106, 5))
+>CommonJS : ts.ModuleKind, Symbol(ts.ModuleKind.CommonJS, Decl(typescript.d.ts, 1108, 17))
diff --git a/tests/baselines/reference/AmbientModuleAndAmbientFunctionWithTheSameNameAndCommonRoot.types b/tests/baselines/reference/AmbientModuleAndAmbientFunctionWithTheSameNameAndCommonRoot.types
index da82a2ff662..974e500d341 100644
--- a/tests/baselines/reference/AmbientModuleAndAmbientFunctionWithTheSameNameAndCommonRoot.types
+++ b/tests/baselines/reference/AmbientModuleAndAmbientFunctionWithTheSameNameAndCommonRoot.types
@@ -1,33 +1,33 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/module.d.ts ===
declare module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.d.ts, 0, 0))
export var Origin: { x: number; y: number; }
->Origin : { x: number; y: number; }
->x : number
->y : number
+>Origin : { x: number; y: number; }, Symbol(Origin, Decl(module.d.ts, 1, 14))
+>x : number, Symbol(x, Decl(module.d.ts, 1, 24))
+>y : number, Symbol(y, Decl(module.d.ts, 1, 35))
}
=== tests/cases/conformance/internalModules/DeclarationMerging/function.d.ts ===
declare function Point(): { x: number; y: number; }
->Point : typeof Point
->x : number
->y : number
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.d.ts, 0, 0))
+>x : number, Symbol(x, Decl(function.d.ts, 0, 27))
+>y : number, Symbol(y, Decl(function.d.ts, 0, 38))
=== tests/cases/conformance/internalModules/DeclarationMerging/test.ts ===
var cl: { x: number; y: number; }
->cl : { x: number; y: number; }
->x : number
->y : number
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>x : number, Symbol(x, Decl(test.ts, 0, 9))
+>y : number, Symbol(y, Decl(test.ts, 0, 20))
var cl = Point();
->cl : { x: number; y: number; }
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
>Point() : { x: number; y: number; }
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.d.ts, 0, 0))
var cl = Point.Origin;
->cl : { x: number; y: number; }
->Point.Origin : { x: number; y: number; }
->Point : typeof Point
->Origin : { x: number; y: number; }
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>Point.Origin : { x: number; y: number; }, Symbol(Point.Origin, Decl(module.d.ts, 1, 14))
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.d.ts, 0, 0))
+>Origin : { x: number; y: number; }, Symbol(Point.Origin, Decl(module.d.ts, 1, 14))
diff --git a/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types b/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types
index 8846d2c3a37..1bdabc46ee8 100644
--- a/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types
+++ b/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types
@@ -1,59 +1,61 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/module.d.ts ===
declare module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(class.d.ts, 0, 0))
export module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 18), Decl(class.d.ts, 0, 18))
export var Origin: {
->Origin : { x: number; y: number; }
+>Origin : { x: number; y: number; }, Symbol(Origin, Decl(module.d.ts, 2, 18))
x: number;
->x : number
+>x : number, Symbol(x, Decl(module.d.ts, 2, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(module.d.ts, 3, 22))
}
}
}
=== tests/cases/conformance/internalModules/DeclarationMerging/class.d.ts ===
declare module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(class.d.ts, 0, 0))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(module.d.ts, 0, 18), Decl(class.d.ts, 0, 18))
constructor(x: number, y: number);
->x : number
->y : number
+>x : number, Symbol(x, Decl(class.d.ts, 2, 20))
+>y : number, Symbol(y, Decl(class.d.ts, 2, 30))
x: number;
->x : number
+>x : number, Symbol(x, Decl(class.d.ts, 2, 42))
y: number;
->y : number
+>y : number, Symbol(y, Decl(class.d.ts, 3, 18))
}
}
=== tests/cases/conformance/internalModules/DeclarationMerging/test.ts ===
var p: { x: number; y: number; }
->p : { x: number; y: number; }
->x : number
->y : number
+>p : { x: number; y: number; }, Symbol(p, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>x : number, Symbol(x, Decl(test.ts, 0, 8))
+>y : number, Symbol(y, Decl(test.ts, 0, 19))
var p = A.Point.Origin;
->p : { x: number; y: number; }
->A.Point.Origin : { x: number; y: number; }
->A.Point : typeof A.Point
->A : typeof A
->Point : typeof A.Point
->Origin : { x: number; y: number; }
+>p : { x: number; y: number; }, Symbol(p, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>A.Point.Origin : { x: number; y: number; }, Symbol(A.Point.Origin, Decl(module.d.ts, 2, 18))
+>A.Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(class.d.ts, 0, 18))
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(class.d.ts, 0, 0))
+>Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(class.d.ts, 0, 18))
+>Origin : { x: number; y: number; }, Symbol(A.Point.Origin, Decl(module.d.ts, 2, 18))
var p = new A.Point(0, 0); // unexpected error here, bug 840000
->p : { x: number; y: number; }
+>p : { x: number; y: number; }, Symbol(p, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
>new A.Point(0, 0) : A.Point
->A.Point : typeof A.Point
->A : typeof A
->Point : typeof A.Point
+>A.Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(class.d.ts, 0, 18))
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(class.d.ts, 0, 0))
+>Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(class.d.ts, 0, 18))
+>0 : number
+>0 : number
diff --git a/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types b/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types
index 975f0f65a68..9d90bf94449 100644
--- a/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types
+++ b/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types
@@ -1,53 +1,55 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/module.d.ts ===
declare module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(classPoint.ts, 0, 0))
export module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 18), Decl(classPoint.ts, 0, 10))
export var Origin: {
->Origin : { x: number; y: number; }
+>Origin : { x: number; y: number; }, Symbol(Origin, Decl(module.d.ts, 2, 18))
x: number;
->x : number
+>x : number, Symbol(x, Decl(module.d.ts, 2, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(module.d.ts, 3, 22))
}
}
}
=== tests/cases/conformance/internalModules/DeclarationMerging/classPoint.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(classPoint.ts, 0, 0))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(module.d.ts, 0, 18), Decl(classPoint.ts, 0, 10))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(classPoint.ts, 2, 20))
+>y : number, Symbol(y, Decl(classPoint.ts, 2, 37))
}
}
=== tests/cases/conformance/internalModules/DeclarationMerging/test.ts ===
var p: { x: number; y: number; }
->p : { x: number; y: number; }
->x : number
->y : number
+>p : { x: number; y: number; }, Symbol(p, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>x : number, Symbol(x, Decl(test.ts, 0, 8))
+>y : number, Symbol(y, Decl(test.ts, 0, 19))
var p = A.Point.Origin;
->p : { x: number; y: number; }
->A.Point.Origin : { x: number; y: number; }
->A.Point : typeof A.Point
->A : typeof A
->Point : typeof A.Point
->Origin : { x: number; y: number; }
+>p : { x: number; y: number; }, Symbol(p, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>A.Point.Origin : { x: number; y: number; }, Symbol(A.Point.Origin, Decl(module.d.ts, 2, 18))
+>A.Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(classPoint.ts, 0, 10))
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(classPoint.ts, 0, 0))
+>Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(classPoint.ts, 0, 10))
+>Origin : { x: number; y: number; }, Symbol(A.Point.Origin, Decl(module.d.ts, 2, 18))
var p = new A.Point(0, 0); // unexpected error here, bug 840000
->p : { x: number; y: number; }
+>p : { x: number; y: number; }, Symbol(p, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
>new A.Point(0, 0) : A.Point
->A.Point : typeof A.Point
->A : typeof A
->Point : typeof A.Point
+>A.Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(classPoint.ts, 0, 10))
+>A : typeof A, Symbol(A, Decl(module.d.ts, 0, 0), Decl(classPoint.ts, 0, 0))
+>Point : typeof A.Point, Symbol(A.Point, Decl(module.d.ts, 0, 18), Decl(classPoint.ts, 0, 10))
+>0 : number
+>0 : number
diff --git a/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types b/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types
index cf4aeb6bcc0..1384b65b029 100644
--- a/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types
+++ b/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types
@@ -1,37 +1,39 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/module.d.ts ===
declare module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.ts, 0, 0))
export var Origin: { x: number; y: number; }
->Origin : { x: number; y: number; }
->x : number
->y : number
+>Origin : { x: number; y: number; }, Symbol(Origin, Decl(module.d.ts, 1, 14))
+>x : number, Symbol(x, Decl(module.d.ts, 1, 24))
+>y : number, Symbol(y, Decl(module.d.ts, 1, 35))
}
=== tests/cases/conformance/internalModules/DeclarationMerging/function.ts ===
function Point() {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.ts, 0, 0))
return { x: 0, y: 0 };
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(function.ts, 1, 12))
+>0 : number
+>y : number, Symbol(y, Decl(function.ts, 1, 18))
+>0 : number
}
=== tests/cases/conformance/internalModules/DeclarationMerging/test.ts ===
var cl: { x: number; y: number; }
->cl : { x: number; y: number; }
->x : number
->y : number
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>x : number, Symbol(x, Decl(test.ts, 0, 9))
+>y : number, Symbol(y, Decl(test.ts, 0, 20))
var cl = Point();
->cl : { x: number; y: number; }
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
>Point() : { x: number; y: number; }
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.ts, 0, 0))
var cl = Point.Origin;
->cl : { x: number; y: number; }
->Point.Origin : { x: number; y: number; }
->Point : typeof Point
->Origin : { x: number; y: number; }
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3), Decl(test.ts, 2, 3))
+>Point.Origin : { x: number; y: number; }, Symbol(Point.Origin, Decl(module.d.ts, 1, 14))
+>Point : typeof Point, Symbol(Point, Decl(module.d.ts, 0, 0), Decl(function.ts, 0, 0))
+>Origin : { x: number; y: number; }, Symbol(Point.Origin, Decl(module.d.ts, 1, 14))
diff --git a/tests/baselines/reference/ArrowFunction4.types b/tests/baselines/reference/ArrowFunction4.types
index 1d049f193e6..0472aba3d6c 100644
--- a/tests/baselines/reference/ArrowFunction4.types
+++ b/tests/baselines/reference/ArrowFunction4.types
@@ -1,8 +1,8 @@
=== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ArrowFunctions/ArrowFunction4.ts ===
var v = (a, b) => {
->v : (a: any, b: any) => void
+>v : (a: any, b: any) => void, Symbol(v, Decl(ArrowFunction4.ts, 0, 3))
>(a, b) => { } : (a: any, b: any) => void
->a : any
->b : any
+>a : any, Symbol(a, Decl(ArrowFunction4.ts, 0, 9))
+>b : any, Symbol(b, Decl(ArrowFunction4.ts, 0, 11))
};
diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types
index 3ea1919ecae..e3b806d38d5 100644
--- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types
+++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types
@@ -1,49 +1,55 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts ===
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 4, 1))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 16))
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 33))
static Origin(): Point { return { x: 0, y: 0 }; }
->Origin : () => Point
->Point : Point
+>Origin : () => Point, Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 55))
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 4, 1))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 3, 37))
+>0 : number
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 3, 43))
+>0 : number
}
module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 4, 1))
function Origin() { return ""; }// not an error, since not exported
->Origin : () => string
+>Origin : () => string, Symbol(Origin, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 6, 14))
+>"" : string
}
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 8, 1))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 16, 5))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 20))
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 37))
static Origin(): Point { return { x: 0, y: 0 }; }
->Origin : () => Point
->Point : Point
+>Origin : () => Point, Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 59))
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 16, 5))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 15, 41))
+>0 : number
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 15, 47))
+>0 : number
}
export module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 16, 5))
function Origin() { return ""; }// not an error since not exported
->Origin : () => string
+>Origin : () => string, Symbol(Origin, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 18, 25))
+>"" : string
}
}
diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types
index 827089847e2..961e8c1bfd2 100644
--- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types
+++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types
@@ -1,49 +1,55 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts ===
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 4, 1))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 16))
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 33))
static Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 55))
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 4, 1))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 3, 28))
+>0 : number
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 3, 34))
+>0 : number
}
module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 4, 1))
var Origin = ""; // not an error, since not exported
->Origin : string
+>Origin : string, Symbol(Origin, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 7, 7))
+>"" : string
}
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 8, 1))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 16, 5))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 20))
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 37))
static Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 59))
+>Point : Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 16, 5))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 15, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 15, 38))
+>0 : number
}
export module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 16, 5))
var Origin = ""; // not an error since not exported
->Origin : string
+>Origin : string, Symbol(Origin, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 19, 11))
+>"" : string
}
}
diff --git a/tests/baselines/reference/ES3For-ofTypeCheck2.types b/tests/baselines/reference/ES3For-ofTypeCheck2.types
index f5ca0ab17e8..34e73689215 100644
--- a/tests/baselines/reference/ES3For-ofTypeCheck2.types
+++ b/tests/baselines/reference/ES3For-ofTypeCheck2.types
@@ -1,5 +1,6 @@
=== tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck2.ts ===
for (var v of [true]) { }
->v : boolean
+>v : boolean, Symbol(v, Decl(ES3For-ofTypeCheck2.ts, 0, 8))
>[true] : boolean[]
+>true : boolean
diff --git a/tests/baselines/reference/ES3For-ofTypeCheck6.types b/tests/baselines/reference/ES3For-ofTypeCheck6.types
index d7e6045b029..0945c7b0795 100644
--- a/tests/baselines/reference/ES3For-ofTypeCheck6.types
+++ b/tests/baselines/reference/ES3For-ofTypeCheck6.types
@@ -1,8 +1,8 @@
=== tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck6.ts ===
var union: string[] | number[];
->union : string[] | number[]
+>union : string[] | number[], Symbol(union, Decl(ES3For-ofTypeCheck6.ts, 0, 3))
for (var v of union) { }
->v : string | number
->union : string[] | number[]
+>v : string | number, Symbol(v, Decl(ES3For-ofTypeCheck6.ts, 1, 8))
+>union : string[] | number[], Symbol(union, Decl(ES3For-ofTypeCheck6.ts, 0, 3))
diff --git a/tests/baselines/reference/ES5For-of10.types b/tests/baselines/reference/ES5For-of10.types
index 32a2adcf3da..1f84648a76e 100644
--- a/tests/baselines/reference/ES5For-of10.types
+++ b/tests/baselines/reference/ES5For-of10.types
@@ -1,29 +1,30 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of10.ts ===
function foo() {
->foo : () => { x: number; }
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of10.ts, 0, 0))
return { x: 0 };
>{ x: 0 } : { x: number; }
->x : number
+>x : number, Symbol(x, Decl(ES5For-of10.ts, 1, 12))
+>0 : number
}
for (foo().x of []) {
->foo().x : number
+>foo().x : number, Symbol(x, Decl(ES5For-of10.ts, 1, 12))
>foo() : { x: number; }
->foo : () => { x: number; }
->x : number
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of10.ts, 0, 0))
+>x : number, Symbol(x, Decl(ES5For-of10.ts, 1, 12))
>[] : undefined[]
for (foo().x of [])
->foo().x : number
+>foo().x : number, Symbol(x, Decl(ES5For-of10.ts, 1, 12))
>foo() : { x: number; }
->foo : () => { x: number; }
->x : number
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of10.ts, 0, 0))
+>x : number, Symbol(x, Decl(ES5For-of10.ts, 1, 12))
>[] : undefined[]
var p = foo().x;
->p : number
->foo().x : number
+>p : number, Symbol(p, Decl(ES5For-of10.ts, 5, 11))
+>foo().x : number, Symbol(x, Decl(ES5For-of10.ts, 1, 12))
>foo() : { x: number; }
->foo : () => { x: number; }
->x : number
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of10.ts, 0, 0))
+>x : number, Symbol(x, Decl(ES5For-of10.ts, 1, 12))
}
diff --git a/tests/baselines/reference/ES5For-of11.types b/tests/baselines/reference/ES5For-of11.types
index e51bc46f157..b609424fb75 100644
--- a/tests/baselines/reference/ES5For-of11.types
+++ b/tests/baselines/reference/ES5For-of11.types
@@ -1,8 +1,8 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of11.ts ===
var v;
->v : any
+>v : any, Symbol(v, Decl(ES5For-of11.ts, 0, 3))
for (v of []) { }
->v : any
+>v : any, Symbol(v, Decl(ES5For-of11.ts, 0, 3))
>[] : undefined[]
diff --git a/tests/baselines/reference/ES5For-of13.types b/tests/baselines/reference/ES5For-of13.types
index 64aac2ae4b2..7f131241081 100644
--- a/tests/baselines/reference/ES5For-of13.types
+++ b/tests/baselines/reference/ES5For-of13.types
@@ -1,9 +1,12 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of13.ts ===
for (let v of ['a', 'b', 'c']) {
->v : string
+>v : string, Symbol(v, Decl(ES5For-of13.ts, 0, 8))
>['a', 'b', 'c'] : string[]
+>'a' : string
+>'b' : string
+>'c' : string
var x = v;
->x : string
->v : string
+>x : string, Symbol(x, Decl(ES5For-of13.ts, 1, 7))
+>v : string, Symbol(v, Decl(ES5For-of13.ts, 0, 8))
}
diff --git a/tests/baselines/reference/ES5For-of14.types b/tests/baselines/reference/ES5For-of14.types
index 0a4f9a78453..3ca30c7f3dc 100644
--- a/tests/baselines/reference/ES5For-of14.types
+++ b/tests/baselines/reference/ES5For-of14.types
@@ -1,9 +1,9 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of14.ts ===
for (const v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of14.ts, 0, 10))
>[] : undefined[]
var x = v;
->x : any
->v : any
+>x : any, Symbol(x, Decl(ES5For-of14.ts, 1, 7))
+>v : any, Symbol(v, Decl(ES5For-of14.ts, 0, 10))
}
diff --git a/tests/baselines/reference/ES5For-of15.types b/tests/baselines/reference/ES5For-of15.types
index 90409b8b167..a587ad7dcd1 100644
--- a/tests/baselines/reference/ES5For-of15.types
+++ b/tests/baselines/reference/ES5For-of15.types
@@ -1,17 +1,17 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of15.ts ===
for (let v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of15.ts, 0, 8))
>[] : undefined[]
v;
->v : any
+>v : any, Symbol(v, Decl(ES5For-of15.ts, 0, 8))
for (const v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of15.ts, 2, 14))
>[] : undefined[]
var x = v;
->x : any
->v : any
+>x : any, Symbol(x, Decl(ES5For-of15.ts, 3, 11))
+>v : any, Symbol(v, Decl(ES5For-of15.ts, 2, 14))
}
}
diff --git a/tests/baselines/reference/ES5For-of16.types b/tests/baselines/reference/ES5For-of16.types
index 94f01509711..03b110edcf3 100644
--- a/tests/baselines/reference/ES5For-of16.types
+++ b/tests/baselines/reference/ES5For-of16.types
@@ -1,21 +1,21 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of16.ts ===
for (let v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of16.ts, 0, 8))
>[] : undefined[]
v;
->v : any
+>v : any, Symbol(v, Decl(ES5For-of16.ts, 0, 8))
for (let v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of16.ts, 2, 12))
>[] : undefined[]
var x = v;
->x : any
->v : any
+>x : any, Symbol(x, Decl(ES5For-of16.ts, 3, 11))
+>v : any, Symbol(v, Decl(ES5For-of16.ts, 2, 12))
v++;
>v++ : number
->v : any
+>v : any, Symbol(v, Decl(ES5For-of16.ts, 2, 12))
}
}
diff --git a/tests/baselines/reference/ES5For-of18.types b/tests/baselines/reference/ES5For-of18.types
index e78bc846df6..8c659e20286 100644
--- a/tests/baselines/reference/ES5For-of18.types
+++ b/tests/baselines/reference/ES5For-of18.types
@@ -1,16 +1,16 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of18.ts ===
for (let v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of18.ts, 0, 8))
>[] : undefined[]
v;
->v : any
+>v : any, Symbol(v, Decl(ES5For-of18.ts, 0, 8))
}
for (let v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of18.ts, 3, 8))
>[] : undefined[]
v;
->v : any
+>v : any, Symbol(v, Decl(ES5For-of18.ts, 3, 8))
}
diff --git a/tests/baselines/reference/ES5For-of19.types b/tests/baselines/reference/ES5For-of19.types
index d95dc63d262..ba55400c858 100644
--- a/tests/baselines/reference/ES5For-of19.types
+++ b/tests/baselines/reference/ES5For-of19.types
@@ -1,20 +1,20 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of19.ts ===
for (let v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of19.ts, 0, 8))
>[] : undefined[]
v;
->v : any
+>v : any, Symbol(v, Decl(ES5For-of19.ts, 0, 8))
function foo() {
->foo : () => void
+>foo : () => void, Symbol(foo, Decl(ES5For-of19.ts, 1, 6))
for (const v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of19.ts, 3, 18))
>[] : undefined[]
v;
->v : any
+>v : any, Symbol(v, Decl(ES5For-of19.ts, 3, 18))
}
}
}
diff --git a/tests/baselines/reference/ES5For-of2.types b/tests/baselines/reference/ES5For-of2.types
index 3e680c44bc8..7e3f096d9f6 100644
--- a/tests/baselines/reference/ES5For-of2.types
+++ b/tests/baselines/reference/ES5For-of2.types
@@ -1,9 +1,9 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of2.ts ===
for (var v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of2.ts, 0, 8))
>[] : undefined[]
var x = v;
->x : any
->v : any
+>x : any, Symbol(x, Decl(ES5For-of2.ts, 1, 7))
+>v : any, Symbol(v, Decl(ES5For-of2.ts, 0, 8))
}
diff --git a/tests/baselines/reference/ES5For-of21.types b/tests/baselines/reference/ES5For-of21.types
index a15942fd013..67280f1ae33 100644
--- a/tests/baselines/reference/ES5For-of21.types
+++ b/tests/baselines/reference/ES5For-of21.types
@@ -1,9 +1,9 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of21.ts ===
for (let v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of21.ts, 0, 8))
>[] : undefined[]
for (let _i of []) { }
->_i : any
+>_i : any, Symbol(_i, Decl(ES5For-of21.ts, 1, 12))
>[] : undefined[]
}
diff --git a/tests/baselines/reference/ES5For-of24.types b/tests/baselines/reference/ES5For-of24.types
index 7170073b5d9..948a02d2111 100644
--- a/tests/baselines/reference/ES5For-of24.types
+++ b/tests/baselines/reference/ES5For-of24.types
@@ -1,12 +1,16 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of24.ts ===
var a = [1, 2, 3];
->a : number[]
+>a : number[], Symbol(a, Decl(ES5For-of24.ts, 0, 3))
>[1, 2, 3] : number[]
+>1 : number
+>2 : number
+>3 : number
for (var v of a) {
->v : number
->a : number[]
+>v : number, Symbol(v, Decl(ES5For-of24.ts, 1, 8))
+>a : number[], Symbol(a, Decl(ES5For-of24.ts, 0, 3))
let a = 0;
->a : number
+>a : number, Symbol(a, Decl(ES5For-of24.ts, 2, 7))
+>0 : number
}
diff --git a/tests/baselines/reference/ES5For-of25.types b/tests/baselines/reference/ES5For-of25.types
index 7b306ee9a26..ffecb93363a 100644
--- a/tests/baselines/reference/ES5For-of25.types
+++ b/tests/baselines/reference/ES5For-of25.types
@@ -1,15 +1,18 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of25.ts ===
var a = [1, 2, 3];
->a : number[]
+>a : number[], Symbol(a, Decl(ES5For-of25.ts, 0, 3))
>[1, 2, 3] : number[]
+>1 : number
+>2 : number
+>3 : number
for (var v of a) {
->v : number
->a : number[]
+>v : number, Symbol(v, Decl(ES5For-of25.ts, 1, 8))
+>a : number[], Symbol(a, Decl(ES5For-of25.ts, 0, 3))
v;
->v : number
+>v : number, Symbol(v, Decl(ES5For-of25.ts, 1, 8))
a;
->a : number[]
+>a : number[], Symbol(a, Decl(ES5For-of25.ts, 0, 3))
}
diff --git a/tests/baselines/reference/ES5For-of3.types b/tests/baselines/reference/ES5For-of3.types
index c47328816e8..fd01faa3e12 100644
--- a/tests/baselines/reference/ES5For-of3.types
+++ b/tests/baselines/reference/ES5For-of3.types
@@ -1,9 +1,12 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of3.ts ===
for (var v of ['a', 'b', 'c'])
->v : string
+>v : string, Symbol(v, Decl(ES5For-of3.ts, 0, 8))
>['a', 'b', 'c'] : string[]
+>'a' : string
+>'b' : string
+>'c' : string
var x = v;
->x : string
->v : string
+>x : string, Symbol(x, Decl(ES5For-of3.ts, 1, 7))
+>v : string, Symbol(v, Decl(ES5For-of3.ts, 0, 8))
diff --git a/tests/baselines/reference/ES5For-of4.types b/tests/baselines/reference/ES5For-of4.types
index 9396096746c..ee756b0e60f 100644
--- a/tests/baselines/reference/ES5For-of4.types
+++ b/tests/baselines/reference/ES5For-of4.types
@@ -1,13 +1,13 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of4.ts ===
for (var v of [])
->v : any
+>v : any, Symbol(v, Decl(ES5For-of4.ts, 0, 8))
>[] : undefined[]
var x = v;
->x : any
->v : any
+>x : any, Symbol(x, Decl(ES5For-of4.ts, 1, 7))
+>v : any, Symbol(v, Decl(ES5For-of4.ts, 0, 8))
var y = v;
->y : any
->v : any
+>y : any, Symbol(y, Decl(ES5For-of4.ts, 2, 3))
+>v : any, Symbol(v, Decl(ES5For-of4.ts, 0, 8))
diff --git a/tests/baselines/reference/ES5For-of5.types b/tests/baselines/reference/ES5For-of5.types
index dd9aa285edb..23bd15a88f4 100644
--- a/tests/baselines/reference/ES5For-of5.types
+++ b/tests/baselines/reference/ES5For-of5.types
@@ -1,9 +1,9 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of5.ts ===
for (var _a of []) {
->_a : any
+>_a : any, Symbol(_a, Decl(ES5For-of5.ts, 0, 8))
>[] : undefined[]
var x = _a;
->x : any
->_a : any
+>x : any, Symbol(x, Decl(ES5For-of5.ts, 1, 7))
+>_a : any, Symbol(_a, Decl(ES5For-of5.ts, 0, 8))
}
diff --git a/tests/baselines/reference/ES5For-of6.types b/tests/baselines/reference/ES5For-of6.types
index e2d2f872809..2381b519bd7 100644
--- a/tests/baselines/reference/ES5For-of6.types
+++ b/tests/baselines/reference/ES5For-of6.types
@@ -1,16 +1,16 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of6.ts ===
for (var w of []) {
->w : any
+>w : any, Symbol(w, Decl(ES5For-of6.ts, 0, 8))
>[] : undefined[]
for (var v of []) {
->v : any
+>v : any, Symbol(v, Decl(ES5For-of6.ts, 1, 12))
>[] : undefined[]
var x = [w, v];
->x : any[]
+>x : any[], Symbol(x, Decl(ES5For-of6.ts, 2, 11))
>[w, v] : any[]
->w : any
->v : any
+>w : any, Symbol(w, Decl(ES5For-of6.ts, 0, 8))
+>v : any, Symbol(v, Decl(ES5For-of6.ts, 1, 12))
}
}
diff --git a/tests/baselines/reference/ES5For-of9.types b/tests/baselines/reference/ES5For-of9.types
index 60870c2d642..c8af0053413 100644
--- a/tests/baselines/reference/ES5For-of9.types
+++ b/tests/baselines/reference/ES5For-of9.types
@@ -1,30 +1,31 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-of9.ts ===
function foo() {
->foo : () => { x: number; }
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of9.ts, 0, 0))
return { x: 0 };
>{ x: 0 } : { x: number; }
->x : number
+>x : number, Symbol(x, Decl(ES5For-of9.ts, 1, 12))
+>0 : number
}
for (foo().x of []) {
->foo().x : number
+>foo().x : number, Symbol(x, Decl(ES5For-of9.ts, 1, 12))
>foo() : { x: number; }
->foo : () => { x: number; }
->x : number
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of9.ts, 0, 0))
+>x : number, Symbol(x, Decl(ES5For-of9.ts, 1, 12))
>[] : undefined[]
for (foo().x of []) {
->foo().x : number
+>foo().x : number, Symbol(x, Decl(ES5For-of9.ts, 1, 12))
>foo() : { x: number; }
->foo : () => { x: number; }
->x : number
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of9.ts, 0, 0))
+>x : number, Symbol(x, Decl(ES5For-of9.ts, 1, 12))
>[] : undefined[]
var p = foo().x;
->p : number
->foo().x : number
+>p : number, Symbol(p, Decl(ES5For-of9.ts, 5, 11))
+>foo().x : number, Symbol(x, Decl(ES5For-of9.ts, 1, 12))
>foo() : { x: number; }
->foo : () => { x: number; }
->x : number
+>foo : () => { x: number; }, Symbol(foo, Decl(ES5For-of9.ts, 0, 0))
+>x : number, Symbol(x, Decl(ES5For-of9.ts, 1, 12))
}
}
diff --git a/tests/baselines/reference/ES5For-ofTypeCheck1.types b/tests/baselines/reference/ES5For-ofTypeCheck1.types
index 4da0ecc0e36..001cd343edd 100644
--- a/tests/baselines/reference/ES5For-ofTypeCheck1.types
+++ b/tests/baselines/reference/ES5For-ofTypeCheck1.types
@@ -1,4 +1,5 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck1.ts ===
for (var v of "") { }
->v : string
+>v : string, Symbol(v, Decl(ES5For-ofTypeCheck1.ts, 0, 8))
+>"" : string
diff --git a/tests/baselines/reference/ES5For-ofTypeCheck2.types b/tests/baselines/reference/ES5For-ofTypeCheck2.types
index e6b86ce1d81..5dd5c58bf50 100644
--- a/tests/baselines/reference/ES5For-ofTypeCheck2.types
+++ b/tests/baselines/reference/ES5For-ofTypeCheck2.types
@@ -1,5 +1,6 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck2.ts ===
for (var v of [true]) { }
->v : boolean
+>v : boolean, Symbol(v, Decl(ES5For-ofTypeCheck2.ts, 0, 8))
>[true] : boolean[]
+>true : boolean
diff --git a/tests/baselines/reference/ES5For-ofTypeCheck3.types b/tests/baselines/reference/ES5For-ofTypeCheck3.types
index 5293634c6c5..9c5e81a4a3e 100644
--- a/tests/baselines/reference/ES5For-ofTypeCheck3.types
+++ b/tests/baselines/reference/ES5For-ofTypeCheck3.types
@@ -1,9 +1,11 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck3.ts ===
var tuple: [string, number] = ["", 0];
->tuple : [string, number]
+>tuple : [string, number], Symbol(tuple, Decl(ES5For-ofTypeCheck3.ts, 0, 3))
>["", 0] : [string, number]
+>"" : string
+>0 : number
for (var v of tuple) { }
->v : string | number
->tuple : [string, number]
+>v : string | number, Symbol(v, Decl(ES5For-ofTypeCheck3.ts, 1, 8))
+>tuple : [string, number], Symbol(tuple, Decl(ES5For-ofTypeCheck3.ts, 0, 3))
diff --git a/tests/baselines/reference/ES5For-ofTypeCheck4.types b/tests/baselines/reference/ES5For-ofTypeCheck4.types
index 4f5721a0604..37d75b8865e 100644
--- a/tests/baselines/reference/ES5For-ofTypeCheck4.types
+++ b/tests/baselines/reference/ES5For-ofTypeCheck4.types
@@ -1,8 +1,8 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck4.ts ===
var union: string | string[];
->union : string | string[]
+>union : string | string[], Symbol(union, Decl(ES5For-ofTypeCheck4.ts, 0, 3))
for (const v of union) { }
->v : string
->union : string | string[]
+>v : string, Symbol(v, Decl(ES5For-ofTypeCheck4.ts, 1, 10))
+>union : string | string[], Symbol(union, Decl(ES5For-ofTypeCheck4.ts, 0, 3))
diff --git a/tests/baselines/reference/ES5For-ofTypeCheck5.types b/tests/baselines/reference/ES5For-ofTypeCheck5.types
index ed3d13f3918..35487b4927d 100644
--- a/tests/baselines/reference/ES5For-ofTypeCheck5.types
+++ b/tests/baselines/reference/ES5For-ofTypeCheck5.types
@@ -1,8 +1,8 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck5.ts ===
var union: string | number[];
->union : string | number[]
+>union : string | number[], Symbol(union, Decl(ES5For-ofTypeCheck5.ts, 0, 3))
for (var v of union) { }
->v : string | number
->union : string | number[]
+>v : string | number, Symbol(v, Decl(ES5For-ofTypeCheck5.ts, 1, 8))
+>union : string | number[], Symbol(union, Decl(ES5For-ofTypeCheck5.ts, 0, 3))
diff --git a/tests/baselines/reference/ES5For-ofTypeCheck6.types b/tests/baselines/reference/ES5For-ofTypeCheck6.types
index 87999d9b0ca..74752ea7114 100644
--- a/tests/baselines/reference/ES5For-ofTypeCheck6.types
+++ b/tests/baselines/reference/ES5For-ofTypeCheck6.types
@@ -1,8 +1,8 @@
=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck6.ts ===
var union: string[] | number[];
->union : string[] | number[]
+>union : string[] | number[], Symbol(union, Decl(ES5For-ofTypeCheck6.ts, 0, 3))
for (var v of union) { }
->v : string | number
->union : string[] | number[]
+>v : string | number, Symbol(v, Decl(ES5For-ofTypeCheck6.ts, 1, 8))
+>union : string[] | number[], Symbol(union, Decl(ES5For-ofTypeCheck6.ts, 0, 3))
diff --git a/tests/baselines/reference/ES5SymbolType1.types b/tests/baselines/reference/ES5SymbolType1.types
index 79d93902fd6..8b88bbf4da5 100644
--- a/tests/baselines/reference/ES5SymbolType1.types
+++ b/tests/baselines/reference/ES5SymbolType1.types
@@ -1,10 +1,10 @@
=== tests/cases/conformance/Symbols/ES5SymbolType1.ts ===
var s: symbol;
->s : symbol
+>s : symbol, Symbol(s, Decl(ES5SymbolType1.ts, 0, 3))
s.toString();
>s.toString() : string
->s.toString : () => string
->s : symbol
->toString : () => string
+>s.toString : () => string, Symbol(Object.toString, Decl(lib.d.ts, 96, 26))
+>s : symbol, Symbol(s, Decl(ES5SymbolType1.ts, 0, 3))
+>toString : () => string, Symbol(Object.toString, Decl(lib.d.ts, 96, 26))
diff --git a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types
index 3cbd14c78bb..b2e11aa63ae 100644
--- a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types
+++ b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types
@@ -1,43 +1,45 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/EnumAndModuleWithSameNameAndCommonRoot.ts ===
enum enumdule {
->enumdule : enumdule
+>enumdule : enumdule, Symbol(enumdule, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 0), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 2, 1))
Red, Blue
->Red : enumdule
->Blue : enumdule
+>Red : enumdule, Symbol(enumdule.Red, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 15))
+>Blue : enumdule, Symbol(enumdule.Blue, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 1, 8))
}
module enumdule {
->enumdule : typeof enumdule
+>enumdule : typeof enumdule, Symbol(enumdule, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 0), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 2, 1))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 4, 17))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 7, 20))
+>y : number, Symbol(y, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 7, 37))
}
}
var x: enumdule;
->x : enumdule
->enumdule : enumdule
+>x : enumdule, Symbol(x, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 11, 3), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 12, 3))
+>enumdule : enumdule, Symbol(enumdule, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 0), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 2, 1))
var x = enumdule.Red;
->x : enumdule
->enumdule.Red : enumdule
->enumdule : typeof enumdule
->Red : enumdule
+>x : enumdule, Symbol(x, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 11, 3), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 12, 3))
+>enumdule.Red : enumdule, Symbol(enumdule.Red, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 15))
+>enumdule : typeof enumdule, Symbol(enumdule, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 0), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 2, 1))
+>Red : enumdule, Symbol(enumdule.Red, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 15))
var y: { x: number; y: number };
->y : { x: number; y: number; }
->x : number
->y : number
+>y : { x: number; y: number; }, Symbol(y, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 14, 3), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 15, 3))
+>x : number, Symbol(x, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 14, 8))
+>y : number, Symbol(y, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 14, 19))
var y = new enumdule.Point(0, 0);
->y : { x: number; y: number; }
+>y : { x: number; y: number; }, Symbol(y, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 14, 3), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 15, 3))
>new enumdule.Point(0, 0) : enumdule.Point
->enumdule.Point : typeof enumdule.Point
->enumdule : typeof enumdule
->Point : typeof enumdule.Point
+>enumdule.Point : typeof enumdule.Point, Symbol(enumdule.Point, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 4, 17))
+>enumdule : typeof enumdule, Symbol(enumdule, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 0, 0), Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 2, 1))
+>Point : typeof enumdule.Point, Symbol(enumdule.Point, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 4, 17))
+>0 : number
+>0 : number
diff --git a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types
index 6d69109e542..90d8bf5fbe7 100644
--- a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types
+++ b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types
@@ -1,36 +1,37 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportClassWhichExtendsInterfaceWithInaccessibleType.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 0))
interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 2, 21))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 3, 18))
fromOrigin(p: Point): number;
->fromOrigin : (p: Point) => number
->p : Point
->Point : Point
+>fromOrigin : (p: Point) => number, Symbol(fromOrigin, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 4, 18))
+>p : Point, Symbol(p, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 6, 19))
+>Point : Point, Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10))
}
export class Point2d implements Point {
->Point2d : Point2d
->Point : Point
+>Point2d : Point2d, Symbol(Point2d, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 7, 5))
+>Point : Point, Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 20))
+>y : number, Symbol(y, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 37))
fromOrigin(p: Point) {
->fromOrigin : (p: Point) => number
->p : Point
->Point : Point
+>fromOrigin : (p: Point) => number, Symbol(fromOrigin, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 59))
+>p : Point, Symbol(p, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 12, 19))
+>Point : Point, Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10))
return 1;
+>1 : number
}
}
}
diff --git a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types
index 17b4a25cde3..71ddde1965c 100644
--- a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types
+++ b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types
@@ -1,50 +1,55 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 0))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 2, 24))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 3, 18))
}
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 14))
+>Point : Point, Symbol(Point, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 38))
+>0 : number
export class Point3d extends Point {
->Point3d : Point3d
->Point : Point
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 46))
+>Point : Point, Symbol(Point, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
z: number;
->z : number
+>z : number, Symbol(z, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 9, 40))
}
export var Origin3d: Point3d = { x: 0, y: 0, z: 0 };
->Origin3d : Point3d
->Point3d : Point3d
+>Origin3d : Point3d, Symbol(Origin3d, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 14))
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 46))
>{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; }
->x : number
->y : number
->z : number
+>x : number, Symbol(x, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 36))
+>0 : number
+>y : number, Symbol(y, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 42))
+>0 : number
+>z : number, Symbol(z, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 48))
+>0 : number
export class Line{
->Line : Line
->TPoint : TPoint
->Point : Point
+>Line : Line, Symbol(Line, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 56))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 22))
+>Point : Point, Symbol(Point, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
constructor(public start: TPoint, public end: TPoint) { }
->start : TPoint
->TPoint : TPoint
->end : TPoint
->TPoint : TPoint
+>start : TPoint, Symbol(start, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 20))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 22))
+>end : TPoint, Symbol(end, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 41))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 22))
}
}
diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.types b/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.types
index 451db7f92a8..cf6bcd1316c 100644
--- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.types
+++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.types
@@ -1,27 +1,27 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 0))
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 2, 17))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 3, 18))
}
export class points {
->points : points
+>points : points, Symbol(points, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 5, 5))
[idx: number]: Point;
->idx : number
->Point : Point
+>idx : number, Symbol(idx, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 9, 9))
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10))
[idx: string]: Point;
->idx : string
->Point : Point
+>idx : string, Symbol(idx, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 10, 9))
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10))
}
}
diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types
index 6f4452fce4c..1f3b2e17305 100644
--- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types
+++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types
@@ -1,59 +1,65 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 0))
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 2, 17))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 3, 18))
}
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 14))
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 38))
+>0 : number
export class Point3d extends Point {
->Point3d : Point3d
->Point : Point
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 46))
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
z: number;
->z : number
+>z : number, Symbol(z, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 9, 40))
}
export var Origin3d: Point3d = { x: 0, y: 0, z: 0 };
->Origin3d : Point3d
->Point3d : Point3d
+>Origin3d : Point3d, Symbol(Origin3d, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 14))
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 46))
>{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; }
->x : number
->y : number
->z : number
+>x : number, Symbol(x, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 36))
+>0 : number
+>y : number, Symbol(y, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 42))
+>0 : number
+>z : number, Symbol(z, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 48))
+>0 : number
export class Line{
->Line : Line
->TPoint : TPoint
->Point : Point
+>Line : Line, Symbol(Line, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 56))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 22))
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
constructor(public start: TPoint, public end: TPoint) { }
->start : TPoint
->TPoint : TPoint
->end : TPoint
->TPoint : TPoint
+>start : TPoint, Symbol(start, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 20))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 22))
+>end : TPoint, Symbol(end, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 41))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 22))
static fromorigin2d(p: Point): Line{
->fromorigin2d : (p: Point) => Line
->p : Point
->Point : Point
->Line : Line
->Point : Point
+>fromorigin2d : (p: Point) => Line, Symbol(Line.fromorigin2d, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 65))
+>p : Point, Symbol(p, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 18, 28))
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
+>Line : Line, Symbol(Line, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 56))
+>Point : Point, Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
return null;
+>null : null
}
}
}
diff --git a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types
index ac1845a533c..e9817cb6e5c 100644
--- a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types
+++ b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types
@@ -1,39 +1,41 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 0))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 2, 24))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 3, 18))
}
export class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 5, 5))
constructor(public start: Point, public end: Point) { }
->start : Point
->Point : Point
->end : Point
->Point : Point
+>start : Point, Symbol(start, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 8, 20))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 10))
+>end : Point, Symbol(end, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 8, 40))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 10))
}
export function fromOrigin(p: Point): Line {
->fromOrigin : (p: Point) => Line
->p : Point
->Point : Point
->Line : Line
+>fromOrigin : (p: Point) => Line, Symbol(fromOrigin, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 9, 5))
+>p : Point, Symbol(p, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 11, 31))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 10))
+>Line : Line, Symbol(Line, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 5, 5))
return new Line({ x: 0, y: 0 }, p);
>new Line({ x: 0, y: 0 }, p) : Line
->Line : typeof Line
+>Line : typeof Line, Symbol(Line, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 5, 5))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
->p : Point
+>x : number, Symbol(x, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 12, 25))
+>0 : number
+>y : number, Symbol(y, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 12, 31))
+>0 : number
+>p : Point, Symbol(p, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 11, 31))
}
}
diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types
index 3f3a670ee8e..bec6d3816bf 100644
--- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types
+++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types
@@ -1,39 +1,41 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 0))
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 2, 17))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 3, 18))
}
export class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 5, 5))
constructor(public start: Point, public end: Point) { }
->start : Point
->Point : Point
->end : Point
->Point : Point
+>start : Point, Symbol(start, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 8, 20))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 10))
+>end : Point, Symbol(end, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 8, 40))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 10))
}
export function fromOrigin(p: Point): Line {
->fromOrigin : (p: Point) => Line
->p : Point
->Point : Point
->Line : Line
+>fromOrigin : (p: Point) => Line, Symbol(fromOrigin, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 9, 5))
+>p : Point, Symbol(p, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 11, 31))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 10))
+>Line : Line, Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 5, 5))
return new Line({ x: 0, y: 0 }, p);
>new Line({ x: 0, y: 0 }, p) : Line
->Line : typeof Line
+>Line : typeof Line, Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 5, 5))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
->p : Point
+>x : number, Symbol(x, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 12, 25))
+>0 : number
+>y : number, Symbol(y, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 12, 31))
+>0 : number
+>p : Point, Symbol(p, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 11, 31))
}
}
diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types
index 7634e2cde3e..09e28159ee6 100644
--- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types
+++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types
@@ -1,39 +1,41 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 0))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 2, 24))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 3, 18))
}
class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 5, 5))
constructor(public start: Point, public end: Point) { }
->start : Point
->Point : Point
->end : Point
->Point : Point
+>start : Point, Symbol(start, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 8, 20))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 10))
+>end : Point, Symbol(end, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 8, 40))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 10))
}
export function fromOrigin(p: Point): Line {
->fromOrigin : (p: Point) => Line
->p : Point
->Point : Point
->Line : Line
+>fromOrigin : (p: Point) => Line, Symbol(fromOrigin, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 9, 5))
+>p : Point, Symbol(p, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 11, 31))
+>Point : Point, Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 10))
+>Line : Line, Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 5, 5))
return new Line({ x: 0, y: 0 }, p);
>new Line({ x: 0, y: 0 }, p) : Line
->Line : typeof Line
+>Line : typeof Line, Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 5, 5))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
->p : Point
+>x : number, Symbol(x, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 12, 25))
+>0 : number
+>y : number, Symbol(y, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 12, 31))
+>0 : number
+>p : Point, Symbol(p, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 11, 31))
}
}
diff --git a/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types b/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types
index f6f4e6a441a..4c4866609c4 100644
--- a/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types
+++ b/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types
@@ -1,58 +1,63 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 0))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 2, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 3, 18))
}
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 14))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 38))
+>0 : number
export interface Point3d extends Point {
->Point3d : Point3d
->Point : Point
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 46))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
z: number;
->z : number
+>z : number, Symbol(z, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 9, 44))
}
export var Origin3d: Point3d = { x: 0, y: 0, z: 0 };
->Origin3d : Point3d
->Point3d : Point3d
+>Origin3d : Point3d, Symbol(Origin3d, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 14))
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 7, 46))
>{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; }
->x : number
->y : number
->z : number
+>x : number, Symbol(x, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 36))
+>0 : number
+>y : number, Symbol(y, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 42))
+>0 : number
+>z : number, Symbol(z, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 48))
+>0 : number
export interface Line{
->Line : Line
->TPoint : TPoint
->Point : Point
+>Line : Line, Symbol(Line, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 13, 56))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10))
new (start: TPoint, end: TPoint);
->start : TPoint
->TPoint : TPoint
->end : TPoint
->TPoint : TPoint
+>start : TPoint, Symbol(start, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 13))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26))
+>end : TPoint, Symbol(end, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 27))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26))
start: TPoint;
->start : TPoint
->TPoint : TPoint
+>start : TPoint, Symbol(start, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 41))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26))
end: TPoint;
->end : TPoint
->TPoint : TPoint
+>end : TPoint, Symbol(end, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 17, 22))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26))
}
}
diff --git a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.types b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.types
index 6caed8a138a..28d3b5f463c 100644
--- a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.types
+++ b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.types
@@ -1,27 +1,27 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts ===
module A {
->A : unknown
+>A : any, Symbol(A, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 0))
interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 2, 21))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 3, 18))
}
export interface points {
->points : points
+>points : points, Symbol(points, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 5, 5))
[idx: number]: Point;
->idx : number
->Point : Point
+>idx : number, Symbol(idx, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 9, 9))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10))
[idx: string]: Point;
->idx : string
->Point : Point
+>idx : string, Symbol(idx, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 10, 9))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10))
}
}
diff --git a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types
index 53484780474..ca5a98c713d 100644
--- a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types
+++ b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types
@@ -1,58 +1,63 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 0))
interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 2, 21))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 3, 18))
}
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 14))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 38))
+>0 : number
export interface Point3d extends Point {
->Point3d : Point3d
->Point : Point
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 46))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
z: number;
->z : number
+>z : number, Symbol(z, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 9, 44))
}
export var Origin3d: Point3d = { x: 0, y: 0, z: 0 };
->Origin3d : Point3d
->Point3d : Point3d
+>Origin3d : Point3d, Symbol(Origin3d, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 14))
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 7, 46))
>{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; }
->x : number
->y : number
->z : number
+>x : number, Symbol(x, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 36))
+>0 : number
+>y : number, Symbol(y, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 42))
+>0 : number
+>z : number, Symbol(z, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 48))
+>0 : number
export interface Line{
->Line : Line
->TPoint : TPoint
->Point : Point
+>Line : Line, Symbol(Line, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 13, 56))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26))
+>Point : Point, Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10))
new (start: TPoint, end: TPoint);
->start : TPoint
->TPoint : TPoint
->end : TPoint
->TPoint : TPoint
+>start : TPoint, Symbol(start, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 13))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26))
+>end : TPoint, Symbol(end, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 27))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26))
start: TPoint;
->start : TPoint
->TPoint : TPoint
+>start : TPoint, Symbol(start, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 41))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26))
end: TPoint;
->end : TPoint
->TPoint : TPoint
+>end : TPoint, Symbol(end, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 18, 22))
+>TPoint : TPoint, Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26))
}
}
diff --git a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types
index a3a80cb06ad..14c97fb0920 100644
--- a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types
+++ b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types
@@ -1,47 +1,51 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportModuleWithAccessibleTypesOnItsExportedMembers.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 0))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 10))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 3, 20))
+>y : number, Symbol(y, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 3, 37))
}
export module B {
->B : typeof B
+>B : typeof B, Symbol(B, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 4, 5))
export var Origin: Point = new Point(0, 0);
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 7, 18))
+>Point : Point, Symbol(Point, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 10))
>new Point(0, 0) : Point
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 10))
+>0 : number
+>0 : number
export class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 7, 51))
constructor(start: Point, end: Point) {
->start : Point
->Point : Point
->end : Point
->Point : Point
+>start : Point, Symbol(start, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 10, 24))
+>Point : Point, Symbol(Point, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 10))
+>end : Point, Symbol(end, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 10, 37))
+>Point : Point, Symbol(Point, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 10))
}
static fromOrigin(p: Point) {
->fromOrigin : (p: Point) => Line
->p : Point
->Point : Point
+>fromOrigin : (p: Point) => Line, Symbol(Line.fromOrigin, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 12, 13))
+>p : Point, Symbol(p, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 14, 30))
+>Point : Point, Symbol(Point, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 10))
return new Line({ x: 0, y: 0 }, p);
>new Line({ x: 0, y: 0 }, p) : Line
->Line : typeof Line
+>Line : typeof Line, Symbol(Line, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 7, 51))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
->p : Point
+>x : number, Symbol(x, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 15, 33))
+>0 : number
+>y : number, Symbol(y, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 15, 39))
+>0 : number
+>p : Point, Symbol(p, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 14, 30))
}
}
}
diff --git a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types
index 82bdf732173..7ae575da27b 100644
--- a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types
+++ b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types
@@ -1,30 +1,36 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 0, 0))
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 0, 10))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 3, 20))
+>y : number, Symbol(y, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 3, 37))
}
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 6, 14))
+>Point : Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 6, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 6, 38))
+>0 : number
export var Unity = { start: new Point(0, 0), end: new Point(1, 0) };
->Unity : { start: Point; end: Point; }
+>Unity : { start: Point; end: Point; }, Symbol(Unity, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 8, 14))
>{ start: new Point(0, 0), end: new Point(1, 0) } : { start: Point; end: Point; }
->start : Point
+>start : Point, Symbol(start, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 8, 24))
>new Point(0, 0) : Point
->Point : typeof Point
->end : Point
+>Point : typeof Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 0, 10))
+>0 : number
+>0 : number
+>end : Point, Symbol(end, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 8, 48))
>new Point(1, 0) : Point
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 0, 10))
+>1 : number
+>0 : number
}
diff --git a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types
index a4284a8f410..9cc12dc057d 100644
--- a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types
+++ b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types
@@ -1,31 +1,32 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 0, 0))
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 0, 10))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 3, 20))
+>y : number, Symbol(y, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 3, 37))
}
export var UnitSquare : {
->UnitSquare : { top: { left: Point; right: Point; }; bottom: { left: Point; right: Point; }; }
+>UnitSquare : { top: { left: Point; right: Point; }; bottom: { left: Point; right: Point; }; }, Symbol(UnitSquare, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 6, 14))
top: { left: Point, right: Point },
->top : { left: Point; right: Point; }
->left : Point
->Point : Point
->right : Point
->Point : Point
+>top : { left: Point; right: Point; }, Symbol(top, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 6, 29))
+>left : Point, Symbol(left, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 7, 14))
+>Point : Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 0, 10))
+>right : Point, Symbol(right, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 7, 27))
+>Point : Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 0, 10))
bottom: { left: Point, right: Point }
->bottom : { left: Point; right: Point; }
->left : Point
->Point : Point
->right : Point
->Point : Point
+>bottom : { left: Point; right: Point; }, Symbol(bottom, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 7, 43))
+>left : Point, Symbol(left, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 8, 17))
+>Point : Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 0, 10))
+>right : Point, Symbol(right, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 8, 30))
+>Point : Point, Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 0, 10))
} = null;
+>null : null
}
diff --git a/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.types b/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.types
index ba24bf93442..961adc893d5 100644
--- a/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.types
+++ b/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.types
@@ -1,22 +1,22 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 0, 0))
class B {
->B : B
+>B : B, Symbol(B, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 0, 10))
id: number;
->id : number
+>id : number, Symbol(id, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 1, 13))
}
export var beez: Array;
->beez : B[]
->Array : T[]
->B : B
+>beez : B[], Symbol(beez, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 5, 14))
+>Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
+>B : B, Symbol(B, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 0, 10))
export var beez2 = new Array();
->beez2 : B[]
+>beez2 : B[], Symbol(beez2, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 6, 14))
>new Array() : B[]
->Array : ArrayConstructor
->B : B
+>Array : ArrayConstructor, Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
+>B : B, Symbol(B, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 0, 10))
}
diff --git a/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types b/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types
index 945a4be6fe5..a0836493e33 100644
--- a/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types
+++ b/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types
@@ -1,23 +1,25 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportVariableWithAccessibleTypeInTypeAnnotation.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 0, 0))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 2, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 3, 18))
}
// valid since Point is exported
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 8, 14))
+>Point : Point, Symbol(Point, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 8, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 8, 38))
+>0 : number
}
diff --git a/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types b/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types
index 9ae05f87416..aa245e4e578 100644
--- a/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types
+++ b/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types
@@ -1,40 +1,45 @@
=== tests/cases/conformance/internalModules/exportDeclarations/ExportVariableWithInaccessibleTypeInTypeAnnotation.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 0, 0))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 2, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 3, 18))
}
// valid since Point is exported
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 8, 14))
+>Point : Point, Symbol(Point, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 8, 32))
+>0 : number
+>y : number, Symbol(y, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 8, 38))
+>0 : number
interface Point3d extends Point {
->Point3d : Point3d
->Point : Point
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 8, 46))
+>Point : Point, Symbol(Point, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 0, 10))
z: number;
->z : number
+>z : number, Symbol(z, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 10, 37))
}
// invalid Point3d is not exported
export var Origin3d: Point3d = { x: 0, y: 0, z: 0 };
->Origin3d : Point3d
->Point3d : Point3d
+>Origin3d : Point3d, Symbol(Origin3d, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 15, 14))
+>Point3d : Point3d, Symbol(Point3d, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 8, 46))
>{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; }
->x : number
->y : number
->z : number
+>x : number, Symbol(x, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 15, 36))
+>0 : number
+>y : number, Symbol(y, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 15, 42))
+>0 : number
+>z : number, Symbol(z, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 15, 48))
+>0 : number
}
diff --git a/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types b/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types
index 879088f93df..e63275fe58f 100644
--- a/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types
+++ b/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types
@@ -1,54 +1,58 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/function.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(function.ts, 0, 0))
export function Point() {
->Point : () => { x: number; y: number; }
+>Point : () => { x: number; y: number; }, Symbol(Point, Decl(function.ts, 0, 10))
return { x: 0, y: 0 };
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(function.ts, 2, 16))
+>0 : number
+>y : number, Symbol(y, Decl(function.ts, 2, 22))
+>0 : number
}
}
=== tests/cases/conformance/internalModules/DeclarationMerging/module.ts ===
module B {
->B : typeof B
+>B : typeof B, Symbol(B, Decl(module.ts, 0, 0))
export module Point {
->Point : typeof Point
+>Point : typeof Point, Symbol(Point, Decl(module.ts, 0, 10))
export var Origin = { x: 0, y: 0 };
->Origin : { x: number; y: number; }
+>Origin : { x: number; y: number; }, Symbol(Origin, Decl(module.ts, 2, 18))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(module.ts, 2, 29))
+>0 : number
+>y : number, Symbol(y, Decl(module.ts, 2, 35))
+>0 : number
}
}
=== tests/cases/conformance/internalModules/DeclarationMerging/test.ts ===
var fn: () => { x: number; y: number };
->fn : () => { x: number; y: number; }
->x : number
->y : number
+>fn : () => { x: number; y: number; }, Symbol(fn, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3))
+>x : number, Symbol(x, Decl(test.ts, 0, 15))
+>y : number, Symbol(y, Decl(test.ts, 0, 26))
var fn = A.Point;
->fn : () => { x: number; y: number; }
->A.Point : () => { x: number; y: number; }
->A : typeof A
->Point : () => { x: number; y: number; }
+>fn : () => { x: number; y: number; }, Symbol(fn, Decl(test.ts, 0, 3), Decl(test.ts, 1, 3))
+>A.Point : () => { x: number; y: number; }, Symbol(A.Point, Decl(function.ts, 0, 10))
+>A : typeof A, Symbol(A, Decl(function.ts, 0, 0))
+>Point : () => { x: number; y: number; }, Symbol(A.Point, Decl(function.ts, 0, 10))
var cl: { x: number; y: number; }
->cl : { x: number; y: number; }
->x : number
->y : number
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 3, 3), Decl(test.ts, 4, 3))
+>x : number, Symbol(x, Decl(test.ts, 3, 9))
+>y : number, Symbol(y, Decl(test.ts, 3, 20))
var cl = B.Point.Origin;
->cl : { x: number; y: number; }
->B.Point.Origin : { x: number; y: number; }
->B.Point : typeof B.Point
->B : typeof B
->Point : typeof B.Point
->Origin : { x: number; y: number; }
+>cl : { x: number; y: number; }, Symbol(cl, Decl(test.ts, 3, 3), Decl(test.ts, 4, 3))
+>B.Point.Origin : { x: number; y: number; }, Symbol(B.Point.Origin, Decl(module.ts, 2, 18))
+>B.Point : typeof B.Point, Symbol(B.Point, Decl(module.ts, 0, 10))
+>B : typeof B, Symbol(B, Decl(module.ts, 0, 0))
+>Point : typeof B.Point, Symbol(B.Point, Decl(module.ts, 0, 10))
+>Origin : { x: number; y: number; }, Symbol(B.Point.Origin, Decl(module.ts, 2, 18))
diff --git a/tests/baselines/reference/FunctionDeclaration2_es6.types b/tests/baselines/reference/FunctionDeclaration2_es6.types
index f23d9cf6840..eefe4de1464 100644
--- a/tests/baselines/reference/FunctionDeclaration2_es6.types
+++ b/tests/baselines/reference/FunctionDeclaration2_es6.types
@@ -1,5 +1,5 @@
=== tests/cases/conformance/es6/functionDeclarations/FunctionDeclaration2_es6.ts ===
function f(yield) {
->f : (yield: any) => void
->yield : any
+>f : (yield: any) => void, Symbol(f, Decl(FunctionDeclaration2_es6.ts, 0, 0))
+>yield : any, Symbol(yield, Decl(FunctionDeclaration2_es6.ts, 0, 11))
}
diff --git a/tests/baselines/reference/FunctionDeclaration4_es6.types b/tests/baselines/reference/FunctionDeclaration4_es6.types
index e4f102a8f70..9cf71703bc8 100644
--- a/tests/baselines/reference/FunctionDeclaration4_es6.types
+++ b/tests/baselines/reference/FunctionDeclaration4_es6.types
@@ -1,4 +1,4 @@
=== tests/cases/conformance/es6/functionDeclarations/FunctionDeclaration4_es6.ts ===
function yield() {
->yield : () => void
+>yield : () => void, Symbol(yield, Decl(FunctionDeclaration4_es6.ts, 0, 0))
}
diff --git a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types
index 023511c8c4d..4c5d815dfcf 100644
--- a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types
+++ b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types
@@ -1,43 +1,45 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/ModuleAndEnumWithSameNameAndCommonRoot.ts ===
module enumdule {
->enumdule : typeof enumdule
+>enumdule : typeof enumdule, Symbol(enumdule, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 0), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 5, 1))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 17))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 3, 20))
+>y : number, Symbol(y, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 3, 37))
}
}
enum enumdule {
->enumdule : enumdule
+>enumdule : enumdule, Symbol(enumdule, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 0), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 5, 1))
Red, Blue
->Red : enumdule
->Blue : enumdule
+>Red : enumdule, Symbol(enumdule.Red, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 7, 15))
+>Blue : enumdule, Symbol(enumdule.Blue, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 8, 8))
}
var x: enumdule;
->x : enumdule
->enumdule : enumdule
+>x : enumdule, Symbol(x, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 11, 3), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 12, 3))
+>enumdule : enumdule, Symbol(enumdule, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 0), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 5, 1))
var x = enumdule.Red;
->x : enumdule
->enumdule.Red : enumdule
->enumdule : typeof enumdule
->Red : enumdule
+>x : enumdule, Symbol(x, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 11, 3), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 12, 3))
+>enumdule.Red : enumdule, Symbol(enumdule.Red, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 7, 15))
+>enumdule : typeof enumdule, Symbol(enumdule, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 0), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 5, 1))
+>Red : enumdule, Symbol(enumdule.Red, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 7, 15))
var y: { x: number; y: number };
->y : { x: number; y: number; }
->x : number
->y : number
+>y : { x: number; y: number; }, Symbol(y, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 14, 3), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 15, 3))
+>x : number, Symbol(x, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 14, 8))
+>y : number, Symbol(y, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 14, 19))
var y = new enumdule.Point(0, 0);
->y : { x: number; y: number; }
+>y : { x: number; y: number; }, Symbol(y, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 14, 3), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 15, 3))
>new enumdule.Point(0, 0) : enumdule.Point
->enumdule.Point : typeof enumdule.Point
->enumdule : typeof enumdule
->Point : typeof enumdule.Point
+>enumdule.Point : typeof enumdule.Point, Symbol(enumdule.Point, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 17))
+>enumdule : typeof enumdule, Symbol(enumdule, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 0), Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 5, 1))
+>Point : typeof enumdule.Point, Symbol(enumdule.Point, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 17))
+>0 : number
+>0 : number
diff --git a/tests/baselines/reference/Protected5.types b/tests/baselines/reference/Protected5.types
index 7ef0be949a7..f6586a5b81c 100644
--- a/tests/baselines/reference/Protected5.types
+++ b/tests/baselines/reference/Protected5.types
@@ -1,7 +1,7 @@
=== tests/cases/conformance/parser/ecmascript5/Protected/Protected5.ts ===
class C {
->C : C
+>C : C, Symbol(C, Decl(Protected5.ts, 0, 0))
protected static m() { }
->m : () => void
+>m : () => void, Symbol(C.m, Decl(Protected5.ts, 0, 9))
}
diff --git a/tests/baselines/reference/Protected8.types b/tests/baselines/reference/Protected8.types
index f29be486eec..25b9ee44b8b 100644
--- a/tests/baselines/reference/Protected8.types
+++ b/tests/baselines/reference/Protected8.types
@@ -1,10 +1,10 @@
=== tests/cases/conformance/parser/ecmascript5/Protected/Protected8.ts ===
interface I {
->I : I
+>I : I, Symbol(I, Decl(Protected8.ts, 0, 0))
protected
->protected : any
+>protected : any, Symbol(protected, Decl(Protected8.ts, 0, 13))
p
->p : any
+>p : any, Symbol(p, Decl(Protected8.ts, 1, 12))
}
diff --git a/tests/baselines/reference/Protected9.types b/tests/baselines/reference/Protected9.types
index d4b6e2fff82..d3dd2f46e65 100644
--- a/tests/baselines/reference/Protected9.types
+++ b/tests/baselines/reference/Protected9.types
@@ -1,7 +1,7 @@
=== tests/cases/conformance/parser/ecmascript5/Protected/Protected9.ts ===
class C {
->C : C
+>C : C, Symbol(C, Decl(Protected9.ts, 0, 0))
constructor(protected p) { }
->p : any
+>p : any, Symbol(p, Decl(Protected9.ts, 1, 15))
}
diff --git a/tests/baselines/reference/TupleType1.types b/tests/baselines/reference/TupleType1.types
index 39fa32d5dca..83e6711e2e5 100644
--- a/tests/baselines/reference/TupleType1.types
+++ b/tests/baselines/reference/TupleType1.types
@@ -1,4 +1,4 @@
=== tests/cases/conformance/parser/ecmascript5/TupleTypes/TupleType1.ts ===
var v: [number]
->v : [number]
+>v : [number], Symbol(v, Decl(TupleType1.ts, 0, 3))
diff --git a/tests/baselines/reference/TupleType2.types b/tests/baselines/reference/TupleType2.types
index 0f35f60786c..5691baadd06 100644
--- a/tests/baselines/reference/TupleType2.types
+++ b/tests/baselines/reference/TupleType2.types
@@ -1,4 +1,4 @@
=== tests/cases/conformance/parser/ecmascript5/TupleTypes/TupleType2.ts ===
var v: [number, string]
->v : [number, string]
+>v : [number, string], Symbol(v, Decl(TupleType2.ts, 0, 3))
diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types
index a856b699dd5..f253f897382 100644
--- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types
+++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types
@@ -1,82 +1,82 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 5, 1))
export class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 1, 24))
y: number;
->y : number
+>y : number, Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 2, 18))
}
}
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 5, 1))
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 7, 10))
fromCarthesian(p: A.Point) {
->fromCarthesian : (p: A.Point) => { x: number; y: number; }
->p : A.Point
->A : unknown
->Point : A.Point
+>fromCarthesian : (p: A.Point) => { x: number; y: number; }, Symbol(fromCarthesian, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 8, 17))
+>p : A.Point, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 9, 23))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 5, 1))
+>Point : A.Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 10))
return { x: p.x, y: p.y };
>{ x: p.x, y: p.y } : { x: number; y: number; }
->x : number
->p.x : number
->p : A.Point
->x : number
->y : number
->p.y : number
->p : A.Point
->y : number
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 10, 20))
+>p.x : number, Symbol(Point.x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 1, 24))
+>p : A.Point, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 9, 23))
+>x : number, Symbol(Point.x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 1, 24))
+>y : number, Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 10, 28))
+>p.y : number, Symbol(Point.y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 2, 18))
+>p : A.Point, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 9, 23))
+>y : number, Symbol(Point.y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 2, 18))
}
}
}
// ensure merges as expected
var p: { x: number; y: number; };
->p : { x: number; y: number; }
->x : number
->y : number
+>p : { x: number; y: number; }, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 16, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 17, 3))
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 16, 8))
+>y : number, Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 16, 19))
var p: A.Point;
->p : { x: number; y: number; }
->A : unknown
->Point : A.Point
+>p : { x: number; y: number; }, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 16, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 17, 3))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 5, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 10))
module X.Y.Z {
->X : typeof X
->Y : typeof Y
->Z : typeof Z
+>X : typeof X, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 17, 15), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 23, 1))
+>Y : typeof Y, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 9), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 25, 10))
+>Z : typeof Z, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 11), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 26, 21))
export class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 14))
length: number;
->length : number
+>length : number, Symbol(length, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 20, 23))
}
}
module X {
->X : typeof X
+>X : typeof X, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 17, 15), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 23, 1))
export module Y {
->Y : typeof Y
+>Y : typeof Y, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 9), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 25, 10))
export module Z {
->Z : typeof Z
+>Z : typeof Z, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 11), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 26, 21))
class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 27, 25))
name: string;
->name : string
+>name : string, Symbol(name, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 28, 24))
}
}
}
@@ -84,14 +84,14 @@ module X {
// ensure merges as expected
var l: { length: number; }
->l : { length: number; }
->length : number
+>l : { length: number; }, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 36, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 37, 3))
+>length : number, Symbol(length, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 36, 8))
var l: X.Y.Z.Line;
->l : { length: number; }
->X : unknown
->Y : unknown
->Z : unknown
->Line : X.Y.Z.Line
+>l : { length: number; }, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 36, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 37, 3))
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 17, 15), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 23, 1))
+>Y : any, Symbol(X.Y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 9), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 25, 10))
+>Z : any, Symbol(X.Y.Z, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 11), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 26, 21))
+>Line : X.Y.Z.Line, Symbol(X.Y.Z.Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 14))
diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types
index a8fc56495dd..d16e446a082 100644
--- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types
+++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types
@@ -1,103 +1,103 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts ===
module A {
->A : unknown
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 1, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 2, 18))
toCarth(): Point;
->toCarth : () => Point
->Point : Point
+>toCarth : () => Point, Symbol(toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 3, 18))
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
}
}
module A {
->A : unknown
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 8, 10))
fromCarth(): Point;
->fromCarth : () => Point
->Point : Point
+>fromCarth : () => Point, Symbol(fromCarth, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 9, 21))
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 8, 10))
}
}
// ensure merges as expected
var p: { x: number; y: number; toCarth(): A.Point; };
->p : { x: number; y: number; toCarth(): A.Point; }
->x : number
->y : number
->toCarth : () => A.Point
->A : unknown
->Point : A.Point
+>p : { x: number; y: number; toCarth(): A.Point; }, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 15, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 16, 3))
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 15, 8))
+>y : number, Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 15, 19))
+>toCarth : () => A.Point, Symbol(toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 15, 30))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
var p: A.Point;
->p : { x: number; y: number; toCarth(): A.Point; }
->A : unknown
->Point : A.Point
+>p : { x: number; y: number; toCarth(): A.Point; }, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 15, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 16, 3))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
module X.Y.Z {
->X : unknown
->Y : unknown
->Z : unknown
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 16, 15), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 22, 1))
+>Y : any, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 9), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 24, 10))
+>Z : any, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 11), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 25, 20))
export interface Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 14))
new (start: A.Point, end: A.Point);
->start : A.Point
->A : unknown
->Point : A.Point
->end : A.Point
->A : unknown
->Point : A.Point
+>start : A.Point, Symbol(start, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 20, 13))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
+>end : A.Point, Symbol(end, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 20, 28))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
}
}
module X {
->X : unknown
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 16, 15), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 22, 1))
export module Y.Z {
->Y : unknown
->Z : unknown
+>Y : any, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 9), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 24, 10))
+>Z : any, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 11), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 25, 20))
interface Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 25, 23))
start: A.Point;
->start : A.Point
->A : unknown
->Point : A.Point
+>start : A.Point, Symbol(start, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 26, 24))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
end: A.Point;
->end : A.Point
->A : unknown
->Point : A.Point
+>end : A.Point, Symbol(end, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 27, 27))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
}
}
}
// ensure merges as expected
var l: { new (s: A.Point, e: A.Point); }
->l : new (s: A.Point, e: A.Point) => any
->s : A.Point
->A : unknown
->Point : A.Point
->e : A.Point
->A : unknown
->Point : A.Point
+>l : new (s: A.Point, e: A.Point) => any, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 34, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 35, 3))
+>s : A.Point, Symbol(s, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 34, 14))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
+>e : A.Point, Symbol(e, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 34, 25))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10))
var l: X.Y.Z.Line;
->l : new (s: A.Point, e: A.Point) => any
->X : unknown
->Y : unknown
->Z : unknown
->Line : X.Y.Z.Line
+>l : new (s: A.Point, e: A.Point) => any, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 34, 3), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 35, 3))
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 16, 15), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 22, 1))
+>Y : any, Symbol(X.Y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 9), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 24, 10))
+>Z : any, Symbol(X.Y.Z, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 11), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 25, 20))
+>Line : X.Y.Z.Line, Symbol(X.Y.Z.Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 18, 14))
diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types
index 003fb5fa15a..e09d6fd52b2 100644
--- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types
+++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types
@@ -1,66 +1,69 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/part1.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(part1.ts, 1, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(part1.ts, 2, 18))
}
export module Utils {
->Utils : typeof Utils
+>Utils : typeof Utils, Symbol(Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 2, 31))
export function mirror(p: T) {
->mirror : (p: T) => { x: number; y: number; }
->T : T
->Point : Point
->p : T
->T : T
+>mirror : (p: T) => { x: number; y: number; }, Symbol(mirror, Decl(part1.ts, 6, 25))
+>T : T, Symbol(T, Decl(part1.ts, 7, 31))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
+>p : T, Symbol(p, Decl(part1.ts, 7, 48))
+>T : T, Symbol(T, Decl(part1.ts, 7, 31))
return { x: p.y, y: p.x };
>{ x: p.y, y: p.x } : { x: number; y: number; }
->x : number
->p.y : number
->p : T
->y : number
->y : number
->p.x : number
->p : T
->x : number
+>x : number, Symbol(x, Decl(part1.ts, 8, 20))
+>p.y : number, Symbol(Point.y, Decl(part1.ts, 2, 18))
+>p : T, Symbol(p, Decl(part1.ts, 7, 48))
+>y : number, Symbol(Point.y, Decl(part1.ts, 2, 18))
+>y : number, Symbol(y, Decl(part1.ts, 8, 28))
+>p.x : number, Symbol(Point.x, Decl(part1.ts, 1, 28))
+>p : T, Symbol(p, Decl(part1.ts, 7, 48))
+>x : number, Symbol(Point.x, Decl(part1.ts, 1, 28))
}
}
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(part1.ts, 11, 14))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(part1.ts, 11, 32))
+>0 : number
+>y : number, Symbol(y, Decl(part1.ts, 11, 38))
+>0 : number
}
=== tests/cases/conformance/internalModules/DeclarationMerging/part2.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
// not a collision, since we don't export
var Origin: string = "0,0";
->Origin : string
+>Origin : string, Symbol(Origin, Decl(part2.ts, 2, 7))
+>"0,0" : string
export module Utils {
->Utils : typeof Utils
+>Utils : typeof Utils, Symbol(Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 2, 31))
export class Plane {
->Plane : Plane
+>Plane : Plane, Symbol(Plane, Decl(part2.ts, 4, 25))
constructor(public tl: Point, public br: Point) { }
->tl : Point
->Point : Point
->br : Point
->Point : Point
+>tl : Point, Symbol(tl, Decl(part2.ts, 6, 24))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
+>br : Point, Symbol(br, Decl(part2.ts, 6, 41))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
}
}
}
@@ -69,57 +72,59 @@ module A {
// test the merging actually worked
var o: { x: number; y: number };
->o : { x: number; y: number; }
->x : number
->y : number
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
+>x : number, Symbol(x, Decl(part3.ts, 2, 8))
+>y : number, Symbol(y, Decl(part3.ts, 2, 19))
var o: A.Point;
->o : { x: number; y: number; }
->A : unknown
->Point : A.Point
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Point : A.Point, Symbol(A.Point, Decl(part1.ts, 0, 10))
var o = A.Origin;
->o : { x: number; y: number; }
->A.Origin : A.Point
->A : typeof A
->Origin : A.Point
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
+>A.Origin : A.Point, Symbol(A.Origin, Decl(part1.ts, 11, 14))
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Origin : A.Point, Symbol(A.Origin, Decl(part1.ts, 11, 14))
var o = A.Utils.mirror(o);
->o : { x: number; y: number; }
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
>A.Utils.mirror(o) : { x: number; y: number; }
->A.Utils.mirror : (p: T) => { x: number; y: number; }
->A.Utils : typeof A.Utils
->A : typeof A
->Utils : typeof A.Utils
->mirror : (p: T) => { x: number; y: number; }
->o : { x: number; y: number; }
+>A.Utils.mirror : (p: T) => { x: number; y: number; }, Symbol(A.Utils.mirror, Decl(part1.ts, 6, 25))
+>A.Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 2, 31))
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 2, 31))
+>mirror : (p: T) => { x: number; y: number; }, Symbol(A.Utils.mirror, Decl(part1.ts, 6, 25))
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
var p: { tl: A.Point; br: A.Point };
->p : { tl: A.Point; br: A.Point; }
->tl : A.Point
->A : unknown
->Point : A.Point
->br : A.Point
->A : unknown
->Point : A.Point
+>p : { tl: A.Point; br: A.Point; }, Symbol(p, Decl(part3.ts, 7, 3), Decl(part3.ts, 8, 3), Decl(part3.ts, 9, 3))
+>tl : A.Point, Symbol(tl, Decl(part3.ts, 7, 8))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Point : A.Point, Symbol(A.Point, Decl(part1.ts, 0, 10))
+>br : A.Point, Symbol(br, Decl(part3.ts, 7, 21))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Point : A.Point, Symbol(A.Point, Decl(part1.ts, 0, 10))
var p: A.Utils.Plane;
->p : { tl: A.Point; br: A.Point; }
->A : unknown
->Utils : unknown
->Plane : A.Utils.Plane
+>p : { tl: A.Point; br: A.Point; }, Symbol(p, Decl(part3.ts, 7, 3), Decl(part3.ts, 8, 3), Decl(part3.ts, 9, 3))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Utils : any, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 2, 31))
+>Plane : A.Utils.Plane, Symbol(A.Utils.Plane, Decl(part2.ts, 4, 25))
var p = new A.Utils.Plane(o, { x: 1, y: 1 });
->p : { tl: A.Point; br: A.Point; }
+>p : { tl: A.Point; br: A.Point; }, Symbol(p, Decl(part3.ts, 7, 3), Decl(part3.ts, 8, 3), Decl(part3.ts, 9, 3))
>new A.Utils.Plane(o, { x: 1, y: 1 }) : A.Utils.Plane
->A.Utils.Plane : typeof A.Utils.Plane
->A.Utils : typeof A.Utils
->A : typeof A
->Utils : typeof A.Utils
->Plane : typeof A.Utils.Plane
->o : { x: number; y: number; }
+>A.Utils.Plane : typeof A.Utils.Plane, Symbol(A.Utils.Plane, Decl(part2.ts, 4, 25))
+>A.Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 2, 31))
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 2, 31))
+>Plane : typeof A.Utils.Plane, Symbol(A.Utils.Plane, Decl(part2.ts, 4, 25))
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
>{ x: 1, y: 1 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(part3.ts, 9, 30))
+>1 : number
+>y : number, Symbol(y, Decl(part3.ts, 9, 36))
+>1 : number
diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types
index c54ad5f3ad9..d75f723068f 100644
--- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types
+++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types
@@ -1,112 +1,112 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts ===
module A {
->A : unknown
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 1, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 2, 18))
toCarth(): Point;
->toCarth : () => Point
->Point : Point
+>toCarth : () => Point, Symbol(toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 3, 18))
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
}
}
module A {
->A : unknown
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
fromCarth(): Point;
->fromCarth : () => Point
->Point : Point
+>fromCarth : () => Point, Symbol(fromCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 9, 28))
+>Point : Point, Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
}
}
// ensure merges as expected
var p: { x: number; y: number; toCarth(): A.Point; fromCarth(): A.Point; };
->p : { x: number; y: number; toCarth(): A.Point; fromCarth(): A.Point; }
->x : number
->y : number
->toCarth : () => A.Point
->A : unknown
->Point : A.Point
->fromCarth : () => A.Point
->A : unknown
->Point : A.Point
+>p : { x: number; y: number; toCarth(): A.Point; fromCarth(): A.Point; }, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 15, 3), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 16, 3))
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 15, 8))
+>y : number, Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 15, 19))
+>toCarth : () => A.Point, Symbol(toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 15, 30))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
+>fromCarth : () => A.Point, Symbol(fromCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 15, 50))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
var p: A.Point;
->p : { x: number; y: number; toCarth(): A.Point; fromCarth(): A.Point; }
->A : unknown
->Point : A.Point
+>p : { x: number; y: number; toCarth(): A.Point; fromCarth(): A.Point; }, Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 15, 3), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 16, 3))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
module X.Y.Z {
->X : unknown
->Y : unknown
->Z : unknown
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 16, 15), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 22, 1))
+>Y : any, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 9), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 24, 10))
+>Z : any, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 11), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 25, 20))
export interface Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 14), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 25, 23))
new (start: A.Point, end: A.Point);
->start : A.Point
->A : unknown
->Point : A.Point
->end : A.Point
->A : unknown
->Point : A.Point
+>start : A.Point, Symbol(start, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 20, 13))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
+>end : A.Point, Symbol(end, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 20, 28))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
}
}
module X {
->X : unknown
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 16, 15), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 22, 1))
export module Y.Z {
->Y : unknown
->Z : unknown
+>Y : any, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 9), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 24, 10))
+>Z : any, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 11), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 25, 20))
export interface Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 14), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 25, 23))
start: A.Point;
->start : A.Point
->A : unknown
->Point : A.Point
+>start : A.Point, Symbol(start, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 26, 31))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
end: A.Point;
->end : A.Point
->A : unknown
->Point : A.Point
+>end : A.Point, Symbol(end, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 27, 27))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
}
}
}
// ensure merges as expected
var l: { start: A.Point; end: A.Point; new (s: A.Point, e: A.Point); }
->l : { new (s: A.Point, e: A.Point): any; start: A.Point; end: A.Point; }
->start : A.Point
->A : unknown
->Point : A.Point
->end : A.Point
->A : unknown
->Point : A.Point
->s : A.Point
->A : unknown
->Point : A.Point
->e : A.Point
->A : unknown
->Point : A.Point
+>l : { new (s: A.Point, e: A.Point): any; start: A.Point; end: A.Point; }, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 34, 3), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 35, 3))
+>start : A.Point, Symbol(start, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 34, 8))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
+>end : A.Point, Symbol(end, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 34, 24))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
+>s : A.Point, Symbol(s, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 34, 44))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
+>e : A.Point, Symbol(e, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 34, 55))
+>A : any, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1))
+>Point : A.Point, Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10))
var l: X.Y.Z.Line;
->l : { new (s: A.Point, e: A.Point): any; start: A.Point; end: A.Point; }
->X : unknown
->Y : unknown
->Z : unknown
->Line : X.Y.Z.Line
+>l : { new (s: A.Point, e: A.Point): any; start: A.Point; end: A.Point; }, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 34, 3), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 35, 3))
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 16, 15), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 22, 1))
+>Y : any, Symbol(X.Y, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 9), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 24, 10))
+>Z : any, Symbol(X.Y.Z, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 11), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 25, 20))
+>Line : X.Y.Z.Line, Symbol(X.Y.Z.Line, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 14), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 25, 23))
diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.types
index 9232af469ac..33b28ffbacd 100644
--- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.types
+++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.types
@@ -1,62 +1,62 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts ===
module A.B {
->A : typeof A
->B : typeof B
+>A : typeof A, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 2, 1))
+>B : typeof B, Symbol(B, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 0, 9))
export var x: number;
->x : number
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 1, 14))
}
module A{
->A : typeof A
+>A : typeof A, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 2, 1))
module B {
->B : typeof B
+>B : typeof B, Symbol(B, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 4, 9))
export var x: string;
->x : string
+>x : string, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 6, 18))
}
}
// ensure the right var decl is exported
var x: number;
->x : number
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 11, 3), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 12, 3))
var x = A.B.x;
->x : number
->A.B.x : number
->A.B : typeof A.B
->A : typeof A
->B : typeof A.B
->x : number
+>x : number, Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 11, 3), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 12, 3))
+>A.B.x : number, Symbol(A.B.x, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 1, 14))
+>A.B : typeof A.B, Symbol(A.B, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 0, 9))
+>A : typeof A, Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 2, 1))
+>B : typeof A.B, Symbol(A.B, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 0, 9))
+>x : number, Symbol(A.B.x, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 1, 14))
module X.Y.Z {
->X : typeof X
->Y : typeof Y
->Z : typeof Z
+>X : typeof X, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 12, 14), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 18, 1))
+>Y : typeof Y, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 9), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 20, 10))
+>Z : typeof Z, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 11))
export class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 14))
length: number;
->length : number
+>length : number, Symbol(length, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 15, 23))
}
}
module X {
->X : typeof X
+>X : typeof X, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 12, 14), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 18, 1))
export module Y {
->Y : typeof Y
+>Y : typeof Y, Symbol(Y, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 9), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 20, 10))
module Z {
->Z : typeof Z
+>Z : typeof Z, Symbol(Z, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 21, 21))
export class Line {
->Line : Line
+>Line : Line, Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 22, 18))
name: string;
->name : string
+>name : string, Symbol(name, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 23, 31))
}
}
}
@@ -64,13 +64,13 @@ module X {
// make sure merging works as expected
var l: { length: number };
->l : { length: number; }
->length : number
+>l : { length: number; }, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 31, 3), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 32, 3))
+>length : number, Symbol(length, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 31, 8))
var l: X.Y.Z.Line;
->l : { length: number; }
->X : unknown
->Y : unknown
->Z : unknown
->Line : X.Y.Z.Line
+>l : { length: number; }, Symbol(l, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 31, 3), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 32, 3))
+>X : any, Symbol(X, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 12, 14), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 18, 1))
+>Y : any, Symbol(X.Y, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 9), Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 20, 10))
+>Z : any, Symbol(X.Y.Z, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 11))
+>Line : X.Y.Z.Line, Symbol(X.Y.Z.Line, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 14))
diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types
index b31bb4b22ac..53f0982a91c 100644
--- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types
+++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types
@@ -1,40 +1,40 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/part1.ts ===
module Root {
->Root : typeof Root
+>Root : typeof Root, Symbol(Root, Decl(part1.ts, 0, 0))
export module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 13))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(part1.ts, 1, 21))
x: number;
->x : number
+>x : number, Symbol(x, Decl(part1.ts, 2, 32))
y: number;
->y : number
+>y : number, Symbol(y, Decl(part1.ts, 3, 22))
}
export module Utils {
->Utils : typeof Utils
+>Utils : typeof Utils, Symbol(Utils, Decl(part1.ts, 5, 9))
export function mirror(p: T) {
->mirror : (p: T) => { x: number; y: number; }
->T : T
->Point : Point
->p : T
->T : T
+>mirror : (p: T) => { x: number; y: number; }, Symbol(mirror, Decl(part1.ts, 7, 29))
+>T : T, Symbol(T, Decl(part1.ts, 8, 35))
+>Point : Point, Symbol(Point, Decl(part1.ts, 1, 21))
+>p : T, Symbol(p, Decl(part1.ts, 8, 52))
+>T : T, Symbol(T, Decl(part1.ts, 8, 35))
return { x: p.y, y: p.x };
>{ x: p.y, y: p.x } : { x: number; y: number; }
->x : number
->p.y : number
->p : T
->y : number
->y : number
->p.x : number
->p : T
->x : number
+>x : number, Symbol(x, Decl(part1.ts, 9, 24))
+>p.y : number, Symbol(Point.y, Decl(part1.ts, 3, 22))
+>p : T, Symbol(p, Decl(part1.ts, 8, 52))
+>y : number, Symbol(Point.y, Decl(part1.ts, 3, 22))
+>y : number, Symbol(y, Decl(part1.ts, 9, 32))
+>p.x : number, Symbol(Point.x, Decl(part1.ts, 2, 32))
+>p : T, Symbol(p, Decl(part1.ts, 8, 52))
+>x : number, Symbol(Point.x, Decl(part1.ts, 2, 32))
}
}
}
@@ -42,36 +42,38 @@ module Root {
=== tests/cases/conformance/internalModules/DeclarationMerging/part2.ts ===
module otherRoot {
->otherRoot : typeof otherRoot
+>otherRoot : typeof otherRoot, Symbol(otherRoot, Decl(part2.ts, 0, 0))
export module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(part2.ts, 0, 18))
// have to be fully qualified since in different root
export var Origin: Root.A.Point = { x: 0, y: 0 };
->Origin : Root.A.Point
->Root : unknown
->A : unknown
->Point : Root.A.Point
+>Origin : Root.A.Point, Symbol(Origin, Decl(part2.ts, 3, 18))
+>Root : any, Symbol(Root, Decl(part1.ts, 0, 0))
+>A : any, Symbol(Root.A, Decl(part1.ts, 0, 13))
+>Point : Root.A.Point, Symbol(Root.A.Point, Decl(part1.ts, 1, 21))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(part2.ts, 3, 43))
+>0 : number
+>y : number, Symbol(y, Decl(part2.ts, 3, 49))
+>0 : number
export module Utils {
->Utils : typeof Utils
+>Utils : typeof Utils, Symbol(Utils, Decl(part2.ts, 3, 57))
export class Plane {
->Plane : Plane
+>Plane : Plane, Symbol(Plane, Decl(part2.ts, 5, 29))
constructor(public tl: Root.A.Point, public br: Root.A.Point) { }
->tl : Root.A.Point
->Root : unknown
->A : unknown
->Point : Root.A.Point
->br : Root.A.Point
->Root : unknown
->A : unknown
->Point : Root.A.Point
+>tl : Root.A.Point, Symbol(tl, Decl(part2.ts, 7, 28))
+>Root : any, Symbol(Root, Decl(part1.ts, 0, 0))
+>A : any, Symbol(Root.A, Decl(part1.ts, 0, 13))
+>Point : Root.A.Point, Symbol(Root.A.Point, Decl(part1.ts, 1, 21))
+>br : Root.A.Point, Symbol(br, Decl(part2.ts, 7, 52))
+>Root : any, Symbol(Root, Decl(part1.ts, 0, 0))
+>A : any, Symbol(Root.A, Decl(part1.ts, 0, 13))
+>Point : Root.A.Point, Symbol(Root.A.Point, Decl(part1.ts, 1, 21))
}
}
}
diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types
index b13cbde5522..09092db9829 100644
--- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types
+++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types
@@ -1,63 +1,65 @@
=== tests/cases/conformance/internalModules/DeclarationMerging/part1.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
export interface Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
x: number;
->x : number
+>x : number, Symbol(x, Decl(part1.ts, 1, 28))
y: number;
->y : number
+>y : number, Symbol(y, Decl(part1.ts, 2, 18))
}
export module Utils {
->Utils : typeof Utils
+>Utils : typeof Utils, Symbol(Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 1, 46))
export function mirror(p: T) {
->mirror : (p: T) => { x: number; y: number; }
->T : T
->Point : Point
->p : T
->T : T
+>mirror : (p: T) => { x: number; y: number; }, Symbol(mirror, Decl(part1.ts, 6, 25))
+>T : T, Symbol(T, Decl(part1.ts, 7, 31))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
+>p : T, Symbol(p, Decl(part1.ts, 7, 48))
+>T : T, Symbol(T, Decl(part1.ts, 7, 31))
return { x: p.y, y: p.x };
>{ x: p.y, y: p.x } : { x: number; y: number; }
->x : number
->p.y : number
->p : T
->y : number
->y : number
->p.x : number
->p : T
->x : number
+>x : number, Symbol(x, Decl(part1.ts, 8, 20))
+>p.y : number, Symbol(Point.y, Decl(part1.ts, 2, 18))
+>p : T, Symbol(p, Decl(part1.ts, 7, 48))
+>y : number, Symbol(Point.y, Decl(part1.ts, 2, 18))
+>y : number, Symbol(y, Decl(part1.ts, 8, 28))
+>p.x : number, Symbol(Point.x, Decl(part1.ts, 1, 28))
+>p : T, Symbol(p, Decl(part1.ts, 7, 48))
+>x : number, Symbol(Point.x, Decl(part1.ts, 1, 28))
}
}
}
=== tests/cases/conformance/internalModules/DeclarationMerging/part2.ts ===
module A {
->A : typeof A
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
export var Origin: Point = { x: 0, y: 0 };
->Origin : Point
->Point : Point
+>Origin : Point, Symbol(Origin, Decl(part2.ts, 1, 14))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
>{ x: 0, y: 0 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(part2.ts, 1, 32))
+>0 : number
+>y : number, Symbol(y, Decl(part2.ts, 1, 38))
+>0 : number
export module Utils {
->Utils : typeof Utils
+>Utils : typeof Utils, Symbol(Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 1, 46))
export class Plane {
->Plane : Plane
+>Plane : Plane, Symbol(Plane, Decl(part2.ts, 3, 25))
constructor(public tl: Point, public br: Point) { }
->tl : Point
->Point : Point
->br : Point
->Point : Point
+>tl : Point, Symbol(tl, Decl(part2.ts, 5, 24))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
+>br : Point, Symbol(br, Decl(part2.ts, 5, 41))
+>Point : Point, Symbol(Point, Decl(part1.ts, 0, 10))
}
}
}
@@ -66,57 +68,59 @@ module A {
// test the merging actually worked
var o: { x: number; y: number };
->o : { x: number; y: number; }
->x : number
->y : number
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
+>x : number, Symbol(x, Decl(part3.ts, 2, 8))
+>y : number, Symbol(y, Decl(part3.ts, 2, 19))
var o: A.Point;
->o : { x: number; y: number; }
->A : unknown
->Point : A.Point
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Point : A.Point, Symbol(A.Point, Decl(part1.ts, 0, 10))
var o = A.Origin;
->o : { x: number; y: number; }
->A.Origin : A.Point
->A : typeof A
->Origin : A.Point
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
+>A.Origin : A.Point, Symbol(A.Origin, Decl(part2.ts, 1, 14))
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Origin : A.Point, Symbol(A.Origin, Decl(part2.ts, 1, 14))
var o = A.Utils.mirror(o);
->o : { x: number; y: number; }
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
>A.Utils.mirror(o) : { x: number; y: number; }
->A.Utils.mirror : (p: T) => { x: number; y: number; }
->A.Utils : typeof A.Utils
->A : typeof A
->Utils : typeof A.Utils
->mirror : (p: T) => { x: number; y: number; }
->o : { x: number; y: number; }
+>A.Utils.mirror : (p: T) => { x: number; y: number; }, Symbol(A.Utils.mirror, Decl(part1.ts, 6, 25))
+>A.Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 1, 46))
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 1, 46))
+>mirror : (p: T) => { x: number; y: number; }, Symbol(A.Utils.mirror, Decl(part1.ts, 6, 25))
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
var p: { tl: A.Point; br: A.Point };
->p : { tl: A.Point; br: A.Point; }
->tl : A.Point
->A : unknown
->Point : A.Point
->br : A.Point
->A : unknown
->Point : A.Point
+>p : { tl: A.Point; br: A.Point; }, Symbol(p, Decl(part3.ts, 7, 3), Decl(part3.ts, 8, 3), Decl(part3.ts, 9, 3))
+>tl : A.Point, Symbol(tl, Decl(part3.ts, 7, 8))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Point : A.Point, Symbol(A.Point, Decl(part1.ts, 0, 10))
+>br : A.Point, Symbol(br, Decl(part3.ts, 7, 21))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Point : A.Point, Symbol(A.Point, Decl(part1.ts, 0, 10))
var p: A.Utils.Plane;
->p : { tl: A.Point; br: A.Point; }
->A : unknown
->Utils : unknown
->Plane : A.Utils.Plane
+>p : { tl: A.Point; br: A.Point; }, Symbol(p, Decl(part3.ts, 7, 3), Decl(part3.ts, 8, 3), Decl(part3.ts, 9, 3))
+>A : any, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Utils : any, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 1, 46))
+>Plane : A.Utils.Plane, Symbol(A.Utils.Plane, Decl(part2.ts, 3, 25))
var p = new A.Utils.Plane(o, { x: 1, y: 1 });
->p : { tl: A.Point; br: A.Point; }
+>p : { tl: A.Point; br: A.Point; }, Symbol(p, Decl(part3.ts, 7, 3), Decl(part3.ts, 8, 3), Decl(part3.ts, 9, 3))
>new A.Utils.Plane(o, { x: 1, y: 1 }) : A.Utils.Plane
->A.Utils.Plane : typeof A.Utils.Plane
->A.Utils : typeof A.Utils
->A : typeof A
->Utils : typeof A.Utils
->Plane : typeof A.Utils.Plane
->o : { x: number; y: number; }
+>A.Utils.Plane : typeof A.Utils.Plane, Symbol(A.Utils.Plane, Decl(part2.ts, 3, 25))
+>A.Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 1, 46))
+>A : typeof A, Symbol(A, Decl(part1.ts, 0, 0), Decl(part2.ts, 0, 0))
+>Utils : typeof A.Utils, Symbol(A.Utils, Decl(part1.ts, 4, 5), Decl(part2.ts, 1, 46))
+>Plane : typeof A.Utils.Plane, Symbol(A.Utils.Plane, Decl(part2.ts, 3, 25))
+>o : { x: number; y: number; }, Symbol(o, Decl(part3.ts, 2, 3), Decl(part3.ts, 3, 3), Decl(part3.ts, 4, 3), Decl(part3.ts, 5, 3))
>{ x: 1, y: 1 } : { x: number; y: number; }
->x : number
->y : number
+>x : number, Symbol(x, Decl(part3.ts, 9, 30))
+>1 : number
+>y : number, Symbol(y, Decl(part3.ts, 9, 36))
+>1 : number
diff --git a/tests/baselines/reference/TypeGuardWithArrayUnion.types b/tests/baselines/reference/TypeGuardWithArrayUnion.types
index 557e305ef74..8a81a762fd7 100644
--- a/tests/baselines/reference/TypeGuardWithArrayUnion.types
+++ b/tests/baselines/reference/TypeGuardWithArrayUnion.types
@@ -1,26 +1,26 @@
=== tests/cases/conformance/expressions/typeGuards/TypeGuardWithArrayUnion.ts ===
class Message {
->Message : Message
+>Message : Message, Symbol(Message, Decl(TypeGuardWithArrayUnion.ts, 0, 0))
value: string;
->value : string
+>value : string, Symbol(value, Decl(TypeGuardWithArrayUnion.ts, 0, 15))
}
function saySize(message: Message | Message[]) {
->saySize : (message: Message | Message[]) => number
->message : Message | Message[]
->Message : Message
->Message : Message
+>saySize : (message: Message | Message[]) => number, Symbol(saySize, Decl(TypeGuardWithArrayUnion.ts, 2, 1))
+>message : Message | Message[], Symbol(message, Decl(TypeGuardWithArrayUnion.ts, 4, 17))
+>Message : Message, Symbol(Message, Decl(TypeGuardWithArrayUnion.ts, 0, 0))
+>Message : Message, Symbol(Message, Decl(TypeGuardWithArrayUnion.ts, 0, 0))
if (message instanceof Array) {
>message instanceof Array : boolean
->message : Message | Message[]
->Array : ArrayConstructor
+>message : Message | Message[], Symbol(message, Decl(TypeGuardWithArrayUnion.ts, 4, 17))
+>Array : ArrayConstructor, Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
return message.length; // Should have type Message[] here
->message.length : number
->message : Message[]
->length : number
+>message.length : number, Symbol(Array.length, Decl(lib.d.ts, 1007, 20))
+>message : Message[], Symbol(message, Decl(TypeGuardWithArrayUnion.ts, 4, 17))
+>length : number, Symbol(Array.length, Decl(lib.d.ts, 1007, 20))
}
}
diff --git a/tests/baselines/reference/TypeGuardWithEnumUnion.types b/tests/baselines/reference/TypeGuardWithEnumUnion.types
index 9296e0ad04e..293b4c431c7 100644
--- a/tests/baselines/reference/TypeGuardWithEnumUnion.types
+++ b/tests/baselines/reference/TypeGuardWithEnumUnion.types
@@ -1,96 +1,100 @@
=== tests/cases/conformance/expressions/typeGuards/TypeGuardWithEnumUnion.ts ===
enum Color { R, G, B }
->Color : Color
->R : Color
->G : Color
->B : Color
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
+>R : Color, Symbol(Color.R, Decl(TypeGuardWithEnumUnion.ts, 0, 12))
+>G : Color, Symbol(Color.G, Decl(TypeGuardWithEnumUnion.ts, 0, 15))
+>B : Color, Symbol(Color.B, Decl(TypeGuardWithEnumUnion.ts, 0, 18))
function f1(x: Color | string) {
->f1 : (x: string | Color) => void
->x : string | Color
->Color : Color
+>f1 : (x: string | Color) => void, Symbol(f1, Decl(TypeGuardWithEnumUnion.ts, 0, 22))
+>x : string | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
if (typeof x === "number") {
>typeof x === "number" : boolean
>typeof x : string
->x : string | Color
+>x : string | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
+>"number" : string
var y = x;
->y : Color
->x : Color
+>y : Color, Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 4, 11), Decl(TypeGuardWithEnumUnion.ts, 5, 11))
+>x : Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
var y: Color;
->y : Color
->Color : Color
+>y : Color, Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 4, 11), Decl(TypeGuardWithEnumUnion.ts, 5, 11))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
}
else {
var z = x;
->z : string
->x : string
+>z : string, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 8, 11), Decl(TypeGuardWithEnumUnion.ts, 9, 11))
+>x : string, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
var z: string;
->z : string
+>z : string, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 8, 11), Decl(TypeGuardWithEnumUnion.ts, 9, 11))
}
}
function f2(x: Color | string | string[]) {
->f2 : (x: string | string[] | Color) => void
->x : string | string[] | Color
->Color : Color
+>f2 : (x: string | string[] | Color) => void, Symbol(f2, Decl(TypeGuardWithEnumUnion.ts, 11, 1))
+>x : string | string[] | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
if (typeof x === "object") {
>typeof x === "object" : boolean
>typeof x : string
->x : string | string[] | Color
+>x : string | string[] | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>"object" : string
var y = x;
->y : string[]
->x : string[]
+>y : string[], Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 15, 11), Decl(TypeGuardWithEnumUnion.ts, 16, 11))
+>x : string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var y: string[];
->y : string[]
+>y : string[], Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 15, 11), Decl(TypeGuardWithEnumUnion.ts, 16, 11))
}
if (typeof x === "number") {
>typeof x === "number" : boolean
>typeof x : string
->x : string | string[] | Color
+>x : string | string[] | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>"number" : string
var z = x;
->z : Color
->x : Color
+>z : Color, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 19, 11), Decl(TypeGuardWithEnumUnion.ts, 20, 11))
+>x : Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var z: Color;
->z : Color
->Color : Color
+>z : Color, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 19, 11), Decl(TypeGuardWithEnumUnion.ts, 20, 11))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
}
else {
var w = x;
->w : string | string[]
->x : string | string[]
+>w : string | string[], Symbol(w, Decl(TypeGuardWithEnumUnion.ts, 23, 11), Decl(TypeGuardWithEnumUnion.ts, 24, 11))
+>x : string | string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var w: string | string[];
->w : string | string[]
+>w : string | string[], Symbol(w, Decl(TypeGuardWithEnumUnion.ts, 23, 11), Decl(TypeGuardWithEnumUnion.ts, 24, 11))
}
if (typeof x === "string") {
>typeof x === "string" : boolean
>typeof x : string
->x : string | string[] | Color
+>x : string | string[] | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>"string" : string
var a = x;
->a : string
->x : string
+>a : string, Symbol(a, Decl(TypeGuardWithEnumUnion.ts, 27, 11), Decl(TypeGuardWithEnumUnion.ts, 28, 11))
+>x : string, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var a: string;
->a : string
+>a : string, Symbol(a, Decl(TypeGuardWithEnumUnion.ts, 27, 11), Decl(TypeGuardWithEnumUnion.ts, 28, 11))
}
else {
var b = x;
->b : string[] | Color
->x : string[] | Color
+>b : string[] | Color, Symbol(b, Decl(TypeGuardWithEnumUnion.ts, 31, 11), Decl(TypeGuardWithEnumUnion.ts, 32, 11))
+>x : string[] | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var b: Color | string[];
->b : string[] | Color
->Color : Color
+>b : string[] | Color, Symbol(b, Decl(TypeGuardWithEnumUnion.ts, 31, 11), Decl(TypeGuardWithEnumUnion.ts, 32, 11))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
}
}
diff --git a/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull b/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull
index 33a40762445..d98eaa13192 100644
--- a/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull
+++ b/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull
@@ -1,96 +1,100 @@
=== tests/cases/conformance/expressions/typeGuards/TypeGuardWithEnumUnion.ts ===
enum Color { R, G, B }
->Color : Color
->R : Color
->G : Color
->B : Color
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
+>R : Color, Symbol(Color.R, Decl(TypeGuardWithEnumUnion.ts, 0, 12))
+>G : Color, Symbol(Color.G, Decl(TypeGuardWithEnumUnion.ts, 0, 15))
+>B : Color, Symbol(Color.B, Decl(TypeGuardWithEnumUnion.ts, 0, 18))
function f1(x: Color | string) {
->f1 : (x: string | Color) => void
->x : string | Color
->Color : Color
+>f1 : (x: string | Color) => void, Symbol(f1, Decl(TypeGuardWithEnumUnion.ts, 0, 22))
+>x : string | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
if (typeof x === "number") {
>typeof x === "number" : boolean
>typeof x : string
->x : string | Color
+>x : string | Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
+>"number" : string
var y = x;
->y : Color
->x : Color
+>y : Color, Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 4, 11), Decl(TypeGuardWithEnumUnion.ts, 5, 11))
+>x : Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
var y: Color;
->y : Color
->Color : Color
+>y : Color, Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 4, 11), Decl(TypeGuardWithEnumUnion.ts, 5, 11))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
}
else {
var z = x;
->z : string
->x : string
+>z : string, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 8, 11), Decl(TypeGuardWithEnumUnion.ts, 9, 11))
+>x : string, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 2, 12))
var z: string;
->z : string
+>z : string, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 8, 11), Decl(TypeGuardWithEnumUnion.ts, 9, 11))
}
}
function f2(x: Color | string | string[]) {
->f2 : (x: string | Color | string[]) => void
->x : string | Color | string[]
->Color : Color
+>f2 : (x: string | Color | string[]) => void, Symbol(f2, Decl(TypeGuardWithEnumUnion.ts, 11, 1))
+>x : string | Color | string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
if (typeof x === "object") {
>typeof x === "object" : boolean
>typeof x : string
->x : string | Color | string[]
+>x : string | Color | string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>"object" : string
var y = x;
->y : string[]
->x : string[]
+>y : string[], Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 15, 11), Decl(TypeGuardWithEnumUnion.ts, 16, 11))
+>x : string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var y: string[];
->y : string[]
+>y : string[], Symbol(y, Decl(TypeGuardWithEnumUnion.ts, 15, 11), Decl(TypeGuardWithEnumUnion.ts, 16, 11))
}
if (typeof x === "number") {
>typeof x === "number" : boolean
>typeof x : string
->x : string | Color | string[]
+>x : string | Color | string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>"number" : string
var z = x;
->z : Color
->x : Color
+>z : Color, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 19, 11), Decl(TypeGuardWithEnumUnion.ts, 20, 11))
+>x : Color, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var z: Color;
->z : Color
->Color : Color
+>z : Color, Symbol(z, Decl(TypeGuardWithEnumUnion.ts, 19, 11), Decl(TypeGuardWithEnumUnion.ts, 20, 11))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
}
else {
var w = x;
->w : string | string[]
->x : string | string[]
+>w : string | string[], Symbol(w, Decl(TypeGuardWithEnumUnion.ts, 23, 11), Decl(TypeGuardWithEnumUnion.ts, 24, 11))
+>x : string | string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var w: string | string[];
->w : string | string[]
+>w : string | string[], Symbol(w, Decl(TypeGuardWithEnumUnion.ts, 23, 11), Decl(TypeGuardWithEnumUnion.ts, 24, 11))
}
if (typeof x === "string") {
>typeof x === "string" : boolean
>typeof x : string
->x : string | Color | string[]
+>x : string | Color | string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
+>"string" : string
var a = x;
->a : string
->x : string
+>a : string, Symbol(a, Decl(TypeGuardWithEnumUnion.ts, 27, 11), Decl(TypeGuardWithEnumUnion.ts, 28, 11))
+>x : string, Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var a: string;
->a : string
+>a : string, Symbol(a, Decl(TypeGuardWithEnumUnion.ts, 27, 11), Decl(TypeGuardWithEnumUnion.ts, 28, 11))
}
else {
var b = x;
->b : Color | string[]
->x : Color | string[]
+>b : Color | string[], Symbol(b, Decl(TypeGuardWithEnumUnion.ts, 31, 11), Decl(TypeGuardWithEnumUnion.ts, 32, 11))
+>x : Color | string[], Symbol(x, Decl(TypeGuardWithEnumUnion.ts, 13, 12))
var b: Color | string[];
->b : Color | string[]
->Color : Color
+>b : Color | string[], Symbol(b, Decl(TypeGuardWithEnumUnion.ts, 31, 11), Decl(TypeGuardWithEnumUnion.ts, 32, 11))
+>Color : Color, Symbol(Color, Decl(TypeGuardWithEnumUnion.ts, 0, 0))
}
}
diff --git a/tests/baselines/reference/VariableDeclaration10_es6.types b/tests/baselines/reference/VariableDeclaration10_es6.types
index 47238fdd5a8..dc61a2a5431 100644
--- a/tests/baselines/reference/VariableDeclaration10_es6.types
+++ b/tests/baselines/reference/VariableDeclaration10_es6.types
@@ -1,4 +1,5 @@
=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration10_es6.ts ===
let a: number = 1
->a : number
+>a : number, Symbol(a, Decl(VariableDeclaration10_es6.ts, 0, 3))
+>1 : number
diff --git a/tests/baselines/reference/VariableDeclaration3_es6.types b/tests/baselines/reference/VariableDeclaration3_es6.types
index a172c8114cb..dd0bdfc8cc2 100644
--- a/tests/baselines/reference/VariableDeclaration3_es6.types
+++ b/tests/baselines/reference/VariableDeclaration3_es6.types
@@ -1,4 +1,5 @@
=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration3_es6.ts ===
const a = 1
->a : number
+>a : number, Symbol(a, Decl(VariableDeclaration3_es6.ts, 0, 5))
+>1 : number
diff --git a/tests/baselines/reference/VariableDeclaration5_es6.types b/tests/baselines/reference/VariableDeclaration5_es6.types
index a07894d533d..d063fc53a12 100644
--- a/tests/baselines/reference/VariableDeclaration5_es6.types
+++ b/tests/baselines/reference/VariableDeclaration5_es6.types
@@ -1,4 +1,5 @@
=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration5_es6.ts ===
const a: number = 1
->a : number
+>a : number, Symbol(a, Decl(VariableDeclaration5_es6.ts, 0, 5))
+>1 : number
diff --git a/tests/baselines/reference/VariableDeclaration7_es6.types b/tests/baselines/reference/VariableDeclaration7_es6.types
index 321c1b07bbc..00aabe32e65 100644
--- a/tests/baselines/reference/VariableDeclaration7_es6.types
+++ b/tests/baselines/reference/VariableDeclaration7_es6.types
@@ -1,4 +1,4 @@
=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration7_es6.ts ===
let a
->a : any
+>a : any, Symbol(a, Decl(VariableDeclaration7_es6.ts, 0, 3))
diff --git a/tests/baselines/reference/VariableDeclaration8_es6.types b/tests/baselines/reference/VariableDeclaration8_es6.types
index 530b147136d..ce6bb6f9bb7 100644
--- a/tests/baselines/reference/VariableDeclaration8_es6.types
+++ b/tests/baselines/reference/VariableDeclaration8_es6.types
@@ -1,4 +1,5 @@
=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration8_es6.ts ===
let a = 1
->a : number
+>a : number, Symbol(a, Decl(VariableDeclaration8_es6.ts, 0, 3))
+>1 : number
diff --git a/tests/baselines/reference/VariableDeclaration9_es6.types b/tests/baselines/reference/VariableDeclaration9_es6.types
index 6b29a04281b..e51fc72eece 100644
--- a/tests/baselines/reference/VariableDeclaration9_es6.types
+++ b/tests/baselines/reference/VariableDeclaration9_es6.types
@@ -1,4 +1,4 @@
=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration9_es6.ts ===
let a: number
->a : number
+>a : number, Symbol(a, Decl(VariableDeclaration9_es6.ts, 0, 3))
diff --git a/tests/baselines/reference/acceptableAlias1.types b/tests/baselines/reference/acceptableAlias1.types
index 213e5ad5bc3..7aae99a57b2 100644
--- a/tests/baselines/reference/acceptableAlias1.types
+++ b/tests/baselines/reference/acceptableAlias1.types
@@ -1,17 +1,17 @@
=== tests/cases/compiler/acceptableAlias1.ts ===
module M {
->M : typeof M
+>M : typeof M, Symbol(M, Decl(acceptableAlias1.ts, 0, 0))
export module N {
->N : unknown
+>N : any, Symbol(N, Decl(acceptableAlias1.ts, 0, 10))
}
export import X = N;
->X : unknown
->N : unknown
+>X : any, Symbol(X, Decl(acceptableAlias1.ts, 2, 5))
+>N : any, Symbol(N, Decl(acceptableAlias1.ts, 0, 10))
}
import r = M.X;
->r : unknown
->M : typeof M
->X : unknown
+>r : any, Symbol(r, Decl(acceptableAlias1.ts, 4, 1))
+>M : typeof M, Symbol(M, Decl(acceptableAlias1.ts, 0, 0))
+>X : any, Symbol(r, Decl(acceptableAlias1.ts, 0, 10))
diff --git a/tests/baselines/reference/accessOverriddenBaseClassMember1.types b/tests/baselines/reference/accessOverriddenBaseClassMember1.types
index 15007cebf4c..4ba32e3ff65 100644
--- a/tests/baselines/reference/accessOverriddenBaseClassMember1.types
+++ b/tests/baselines/reference/accessOverriddenBaseClassMember1.types
@@ -1,54 +1,57 @@
=== tests/cases/compiler/accessOverriddenBaseClassMember1.ts ===
class Point {
->Point : Point
+>Point : Point, Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0))
constructor(public x: number, public y: number) { }
->x : number
->y : number
+>x : number, Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16))
+>y : number, Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33))
public toString() {
->toString : () => string
+>toString : () => string, Symbol(toString, Decl(accessOverriddenBaseClassMember1.ts, 1, 55))
return "x=" + this.x + " y=" + this.y;
>"x=" + this.x + " y=" + this.y : string
>"x=" + this.x + " y=" : string
>"x=" + this.x : string
->this.x : number
->this : Point
->x : number
->this.y : number
->this : Point
->y : number
+>"x=" : string
+>this.x : number, Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16))
+>this : Point, Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0))
+>x : number, Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16))
+>" y=" : string
+>this.y : number, Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33))
+>this : Point, Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0))
+>y : number, Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33))
}
}
class ColoredPoint extends Point {
->ColoredPoint : ColoredPoint
->Point : Point
+>ColoredPoint : ColoredPoint, Symbol(ColoredPoint, Decl(accessOverriddenBaseClassMember1.ts, 5, 1))
+>Point : Point, Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0))
constructor(x: number, y: number, public color: string) {
->x : number
->y : number
->color : string
+>x : number, Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 7, 16))
+>y : number, Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 7, 26))
+>color : string, Symbol(color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37))
super(x, y);
>super(x, y) : void
->super : typeof Point
->x : number
->y : number
+>super : typeof Point, Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0))
+>x : number, Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 7, 16))
+>y : number, Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 7, 26))
}
public toString() {
->toString : () => string
+>toString : () => string, Symbol(toString, Decl(accessOverriddenBaseClassMember1.ts, 9, 5))
return super.toString() + " color=" + this.color;
>super.toString() + " color=" + this.color : string
>super.toString() + " color=" : string
>super.toString() : string
->super.toString : () => string
->super : Point
->toString : () => string
->this.color : string
->this : ColoredPoint
->color : string
+>super.toString : () => string, Symbol(Point.toString, Decl(accessOverriddenBaseClassMember1.ts, 1, 55))
+>super : Point, Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0))
+>toString : () => string, Symbol(Point.toString, Decl(accessOverriddenBaseClassMember1.ts, 1, 55))
+>" color=" : string
+>this.color : string, Symbol(color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37))
+>this : ColoredPoint, Symbol(ColoredPoint, Decl(accessOverriddenBaseClassMember1.ts, 5, 1))
+>color : string, Symbol(color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37))
}
}
diff --git a/tests/baselines/reference/accessorWithES5.types b/tests/baselines/reference/accessorWithES5.types
index 9d4976dd91a..9bbfadce48c 100644
--- a/tests/baselines/reference/accessorWithES5.types
+++ b/tests/baselines/reference/accessorWithES5.types
@@ -1,37 +1,39 @@
=== tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithES5.ts ===
class C {
->C : C
+>C : C, Symbol(C, Decl(accessorWithES5.ts, 0, 0))
get x() {
->x : number
+>x : number, Symbol(x, Decl(accessorWithES5.ts, 1, 9))
return 1;
+>1 : number
}
}
class D {
->D : D
+>D : D, Symbol(D, Decl(accessorWithES5.ts, 5, 1))
set x(v) {
->x : any
->v : any
+>x : any, Symbol(x, Decl(accessorWithES5.ts, 7, 9))
+>v : any, Symbol(v, Decl(accessorWithES5.ts, 8, 10))
}
}
var x = {
->x : { a: number; }
+>x : { a: number; }, Symbol(x, Decl(accessorWithES5.ts, 12, 3))
>{ get a() { return 1 }} : { a: number; }
get a() { return 1 }
->a : number
+>a : number, Symbol(a, Decl(accessorWithES5.ts, 12, 9))
+>1 : number
}
var y = {
->y : { b: any; }
+>y : { b: any; }, Symbol(y, Decl(accessorWithES5.ts, 16, 3))
>{ set b(v) { }} : { b: any; }
set b(v) { }
->b : any
->v : any
+>b : any, Symbol(b, Decl(accessorWithES5.ts, 16, 9))
+>v : any, Symbol(v, Decl(accessorWithES5.ts, 17, 10))
}
diff --git a/tests/baselines/reference/addMoreCallSignaturesToBaseSignature.types b/tests/baselines/reference/addMoreCallSignaturesToBaseSignature.types
index 212186ace77..da8dcb4d0be 100644
--- a/tests/baselines/reference/addMoreCallSignaturesToBaseSignature.types
+++ b/tests/baselines/reference/addMoreCallSignaturesToBaseSignature.types
@@ -1,24 +1,24 @@
=== tests/cases/compiler/addMoreCallSignaturesToBaseSignature.ts ===
interface Foo {
->Foo : Foo
+>Foo : Foo, Symbol(Foo, Decl(addMoreCallSignaturesToBaseSignature.ts, 0, 0))
(): string;
}
interface Bar extends Foo {
->Bar : Bar
->Foo : Foo
+>Bar : Bar, Symbol(Bar, Decl(addMoreCallSignaturesToBaseSignature.ts, 2, 1))
+>Foo : Foo, Symbol(Foo, Decl(addMoreCallSignaturesToBaseSignature.ts, 0, 0))
(key: string): string;
->key : string
+>key : string, Symbol(key, Decl(addMoreCallSignaturesToBaseSignature.ts, 5, 5))
}
var a: Bar;
->a : Bar
->Bar : Bar
+>a : Bar, Symbol(a, Decl(addMoreCallSignaturesToBaseSignature.ts, 8, 3))
+>Bar : Bar, Symbol(Bar, Decl(addMoreCallSignaturesToBaseSignature.ts, 2, 1))
var kitty = a();
->kitty : string
+>kitty : string, Symbol(kitty, Decl(addMoreCallSignaturesToBaseSignature.ts, 9, 3))
>a() : string
->a : Bar
+>a : Bar, Symbol(a, Decl(addMoreCallSignaturesToBaseSignature.ts, 8, 3))
diff --git a/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types b/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types
index a80986c8cd1..ed187a820cc 100644
--- a/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types
+++ b/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types
@@ -1,25 +1,26 @@
=== tests/cases/compiler/addMoreCallSignaturesToBaseSignature2.ts ===
interface Foo {
->Foo : Foo
+>Foo : Foo, Symbol(Foo, Decl(addMoreCallSignaturesToBaseSignature2.ts, 0, 0))
(bar:number): string;
->bar : number
+>bar : number, Symbol(bar, Decl(addMoreCallSignaturesToBaseSignature2.ts, 1, 5))
}
interface Bar extends Foo {
->Bar : Bar
->Foo : Foo
+>Bar : Bar, Symbol(Bar, Decl(addMoreCallSignaturesToBaseSignature2.ts, 2, 1))
+>Foo : Foo, Symbol(Foo, Decl(addMoreCallSignaturesToBaseSignature2.ts, 0, 0))
(key: string): string;
->key : string
+>key : string, Symbol(key, Decl(addMoreCallSignaturesToBaseSignature2.ts, 5, 5))
}
var a: Bar;
->a : Bar
->Bar : Bar
+>a : Bar, Symbol(a, Decl(addMoreCallSignaturesToBaseSignature2.ts, 8, 3))
+>Bar : Bar, Symbol(Bar, Decl(addMoreCallSignaturesToBaseSignature2.ts, 2, 1))
var kitty = a(1);
->kitty : string
+>kitty : string, Symbol(kitty, Decl(addMoreCallSignaturesToBaseSignature2.ts, 9, 3))
>a(1) : string
->a : Bar
+>a : Bar, Symbol(a, Decl(addMoreCallSignaturesToBaseSignature2.ts, 8, 3))
+>1 : number
diff --git a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types
index da534c68ad6..e4571680a9b 100644
--- a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types
+++ b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types
@@ -1,168 +1,171 @@
=== tests/cases/conformance/expressions/binaryOperators/additionOperator/additionOperatorWithAnyAndEveryType.ts ===
function foo() { }
->foo : () => void
+>foo : () => void, Symbol(foo, Decl(additionOperatorWithAnyAndEveryType.ts, 0, 0))
class C {
->C : C
+>C : C, Symbol(C, Decl(additionOperatorWithAnyAndEveryType.ts, 0, 18))
public a: string;
->a : string
+>a : string, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 1, 9))
static foo() { }
->foo : () => void
+>foo : () => void, Symbol(C.foo, Decl(additionOperatorWithAnyAndEveryType.ts, 2, 21))
}
enum E { a, b, c }
->E : E
->a : E
->b : E
->c : E
+>E : E, Symbol(E, Decl(additionOperatorWithAnyAndEveryType.ts, 4, 1))
+>a : E, Symbol(E.a, Decl(additionOperatorWithAnyAndEveryType.ts, 5, 8))
+>b : E, Symbol(E.b, Decl(additionOperatorWithAnyAndEveryType.ts, 5, 11))
+>c : E, Symbol(E.c, Decl(additionOperatorWithAnyAndEveryType.ts, 5, 14))
module M { export var a }
->M : typeof M
->a : any
+>M : typeof M, Symbol(M, Decl(additionOperatorWithAnyAndEveryType.ts, 5, 18))
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 6, 21))
var a: any;
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
var b: boolean;
->b : boolean
+>b : boolean, Symbol(b, Decl(additionOperatorWithAnyAndEveryType.ts, 9, 3))
var c: number;
->c : number
+>c : number, Symbol(c, Decl(additionOperatorWithAnyAndEveryType.ts, 10, 3))
var d: string;
->d : string
+>d : string, Symbol(d, Decl(additionOperatorWithAnyAndEveryType.ts, 11, 3))
var e: Object;
->e : Object
->Object : Object
+>e : Object, Symbol(e, Decl(additionOperatorWithAnyAndEveryType.ts, 12, 3))
+>Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11))
// any as left operand, result is type Any except plusing string
var r1 = a + a;
->r1 : any
+>r1 : any, Symbol(r1, Decl(additionOperatorWithAnyAndEveryType.ts, 15, 3))
>a + a : any
->a : any
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
var r2 = a + b;
->r2 : any
+>r2 : any, Symbol(r2, Decl(additionOperatorWithAnyAndEveryType.ts, 16, 3))
>a + b : any
->a : any
->b : boolean
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>b : boolean, Symbol(b, Decl(additionOperatorWithAnyAndEveryType.ts, 9, 3))
var r3 = a + c;
->r3 : any
+>r3 : any, Symbol(r3, Decl(additionOperatorWithAnyAndEveryType.ts, 17, 3))
>a + c : any
->a : any
->c : number
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>c : number, Symbol(c, Decl(additionOperatorWithAnyAndEveryType.ts, 10, 3))
var r4 = a + d;
->r4 : string
+>r4 : string, Symbol(r4, Decl(additionOperatorWithAnyAndEveryType.ts, 18, 3))
>a + d : string
->a : any
->d : string
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>d : string, Symbol(d, Decl(additionOperatorWithAnyAndEveryType.ts, 11, 3))
var r5 = a + e;
->r5 : any
+>r5 : any, Symbol(r5, Decl(additionOperatorWithAnyAndEveryType.ts, 19, 3))
>a + e : any
->a : any
->e : Object
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>e : Object, Symbol(e, Decl(additionOperatorWithAnyAndEveryType.ts, 12, 3))
// any as right operand, result is type Any except plusing string
var r6 = b + a;
->r6 : any
+>r6 : any, Symbol(r6, Decl(additionOperatorWithAnyAndEveryType.ts, 22, 3))
>b + a : any
->b : boolean
->a : any
+>b : boolean, Symbol(b, Decl(additionOperatorWithAnyAndEveryType.ts, 9, 3))
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
var r7 = c + a;
->r7 : any
+>r7 : any, Symbol(r7, Decl(additionOperatorWithAnyAndEveryType.ts, 23, 3))
>c + a : any
->c : number
->a : any
+>c : number, Symbol(c, Decl(additionOperatorWithAnyAndEveryType.ts, 10, 3))
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
var r8 = d + a;
->r8 : string
+>r8 : string, Symbol(r8, Decl(additionOperatorWithAnyAndEveryType.ts, 24, 3))
>d + a : string
->d : string
->a : any
+>d : string, Symbol(d, Decl(additionOperatorWithAnyAndEveryType.ts, 11, 3))
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
var r9 = e + a;
->r9 : any
+>r9 : any, Symbol(r9, Decl(additionOperatorWithAnyAndEveryType.ts, 25, 3))
>e + a : any
->e : Object
->a : any
+>e : Object, Symbol(e, Decl(additionOperatorWithAnyAndEveryType.ts, 12, 3))
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
// other cases
var r10 = a + foo;
->r10 : any
+>r10 : any, Symbol(r10, Decl(additionOperatorWithAnyAndEveryType.ts, 28, 3))
>a + foo : any
->a : any
->foo : () => void
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>foo : () => void, Symbol(foo, Decl(additionOperatorWithAnyAndEveryType.ts, 0, 0))
var r11 = a + foo();
->r11 : any
+>r11 : any, Symbol(r11, Decl(additionOperatorWithAnyAndEveryType.ts, 29, 3))
>a + foo() : any
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
>foo() : void
->foo : () => void
+>foo : () => void, Symbol(foo, Decl(additionOperatorWithAnyAndEveryType.ts, 0, 0))
var r12 = a + C;
->r12 : any
+>r12 : any, Symbol(r12, Decl(additionOperatorWithAnyAndEveryType.ts, 30, 3))
>a + C : any
->a : any
->C : typeof C
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>C : typeof C, Symbol(C, Decl(additionOperatorWithAnyAndEveryType.ts, 0, 18))
var r13 = a + new C();
->r13 : any
+>r13 : any, Symbol(r13, Decl(additionOperatorWithAnyAndEveryType.ts, 31, 3))
>a + new C() : any
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
>new C() : C
->C : typeof C
+>C : typeof C, Symbol(C, Decl(additionOperatorWithAnyAndEveryType.ts, 0, 18))
var r14 = a + E;
->r14 : any
+>r14 : any, Symbol(r14, Decl(additionOperatorWithAnyAndEveryType.ts, 32, 3))
>a + E : any
->a : any
->E : typeof E
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithAnyAndEveryType.ts, 4, 1))
var r15 = a + E.a;
->r15 : any
+>r15 : any, Symbol(r15, Decl(additionOperatorWithAnyAndEveryType.ts, 33, 3))
>a + E.a : any
->a : any
->E.a : E
->E : typeof E
->a : E
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithAnyAndEveryType.ts, 5, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithAnyAndEveryType.ts, 4, 1))
+>a : E, Symbol(E.a, Decl(additionOperatorWithAnyAndEveryType.ts, 5, 8))
var r16 = a + M;
->r16 : any
+>r16 : any, Symbol(r16, Decl(additionOperatorWithAnyAndEveryType.ts, 34, 3))
>a + M : any
->a : any
->M : typeof M
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>M : typeof M, Symbol(M, Decl(additionOperatorWithAnyAndEveryType.ts, 5, 18))
var r17 = a + '';
->r17 : string
+>r17 : string, Symbol(r17, Decl(additionOperatorWithAnyAndEveryType.ts, 35, 3))
>a + '' : string
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>'' : string
var r18 = a + 123;
->r18 : any
+>r18 : any, Symbol(r18, Decl(additionOperatorWithAnyAndEveryType.ts, 36, 3))
>a + 123 : any
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
+>123 : number
var r19 = a + { a: '' };
->r19 : any
+>r19 : any, Symbol(r19, Decl(additionOperatorWithAnyAndEveryType.ts, 37, 3))
>a + { a: '' } : any
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
>{ a: '' } : { a: string; }
->a : string
+>a : string, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 37, 15))
+>'' : string
var r20 = a + ((a: string) => { return a });
->r20 : any
+>r20 : any, Symbol(r20, Decl(additionOperatorWithAnyAndEveryType.ts, 38, 3))
>a + ((a: string) => { return a }) : any
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 8, 3))
>((a: string) => { return a }) : (a: string) => string
>(a: string) => { return a } : (a: string) => string
->a : string
->a : string
+>a : string, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 38, 16))
+>a : string, Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 38, 16))
diff --git a/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types b/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types
index 4dade89f5e4..62db775555a 100644
--- a/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types
+++ b/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types
@@ -2,106 +2,128 @@
// If one operand is the null or undefined value, it is treated as having the type of the other operand.
enum E { a, b, c }
->E : E
->a : E
->b : E
->c : E
+>E : E, Symbol(E, Decl(additionOperatorWithNullValueAndValidOperator.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 8))
+>b : E, Symbol(E.b, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 11))
+>c : E, Symbol(E.c, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 14))
var a: any;
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 4, 3))
var b: number;
->b : number
+>b : number, Symbol(b, Decl(additionOperatorWithNullValueAndValidOperator.ts, 5, 3))
var c: E;
->c : E
->E : E
+>c : E, Symbol(c, Decl(additionOperatorWithNullValueAndValidOperator.ts, 6, 3))
+>E : E, Symbol(E, Decl(additionOperatorWithNullValueAndValidOperator.ts, 0, 0))
var d: string;
->d : string
+>d : string, Symbol(d, Decl(additionOperatorWithNullValueAndValidOperator.ts, 7, 3))
// null + any
var r1: any = null + a;
->r1 : any
+>r1 : any, Symbol(r1, Decl(additionOperatorWithNullValueAndValidOperator.ts, 10, 3))
>null + a : any
->a : any
+>null : null
+>a : any, Symbol(a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 4, 3))
var r2: any = a + null;
->r2 : any
+>r2 : any, Symbol(r2, Decl(additionOperatorWithNullValueAndValidOperator.ts, 11, 3))
>a + null : any
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 4, 3))
+>null : null
// null + number/enum
var r3 = null + b;
->r3 : number
+>r3 : number, Symbol(r3, Decl(additionOperatorWithNullValueAndValidOperator.ts, 14, 3))
>null + b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(additionOperatorWithNullValueAndValidOperator.ts, 5, 3))
var r4 = null + 1;
->r4 : number
+>r4 : number, Symbol(r4, Decl(additionOperatorWithNullValueAndValidOperator.ts, 15, 3))
>null + 1 : number
+>null : null
+>1 : number
var r5 = null + c;
->r5 : number
+>r5 : number, Symbol(r5, Decl(additionOperatorWithNullValueAndValidOperator.ts, 16, 3))
>null + c : number
->c : E
+>null : null
+>c : E, Symbol(c, Decl(additionOperatorWithNullValueAndValidOperator.ts, 6, 3))
var r6 = null + E.a;
->r6 : number
+>r6 : number, Symbol(r6, Decl(additionOperatorWithNullValueAndValidOperator.ts, 17, 3))
>null + E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNullValueAndValidOperator.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 8))
var r7 = null + E['a'];
->r7 : number
+>r7 : number, Symbol(r7, Decl(additionOperatorWithNullValueAndValidOperator.ts, 18, 3))
>null + E['a'] : number
+>null : null
>E['a'] : E
->E : typeof E
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNullValueAndValidOperator.ts, 0, 0))
+>'a' : string, Symbol(E.a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 8))
var r8 = b + null;
->r8 : number
+>r8 : number, Symbol(r8, Decl(additionOperatorWithNullValueAndValidOperator.ts, 19, 3))
>b + null : number
->b : number
+>b : number, Symbol(b, Decl(additionOperatorWithNullValueAndValidOperator.ts, 5, 3))
+>null : null
var r9 = 1 + null;
->r9 : number
+>r9 : number, Symbol(r9, Decl(additionOperatorWithNullValueAndValidOperator.ts, 20, 3))
>1 + null : number
+>1 : number
+>null : null
var r10 = c + null
->r10 : number
+>r10 : number, Symbol(r10, Decl(additionOperatorWithNullValueAndValidOperator.ts, 21, 3))
>c + null : number
->c : E
+>c : E, Symbol(c, Decl(additionOperatorWithNullValueAndValidOperator.ts, 6, 3))
+>null : null
var r11 = E.a + null;
->r11 : number
+>r11 : number, Symbol(r11, Decl(additionOperatorWithNullValueAndValidOperator.ts, 22, 3))
>E.a + null : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNullValueAndValidOperator.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 8))
+>null : null
var r12 = E['a'] + null;
->r12 : number
+>r12 : number, Symbol(r12, Decl(additionOperatorWithNullValueAndValidOperator.ts, 23, 3))
>E['a'] + null : number
>E['a'] : E
->E : typeof E
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNullValueAndValidOperator.ts, 0, 0))
+>'a' : string, Symbol(E.a, Decl(additionOperatorWithNullValueAndValidOperator.ts, 2, 8))
+>null : null
// null + string
var r13 = null + d;
->r13 : string
+>r13 : string, Symbol(r13, Decl(additionOperatorWithNullValueAndValidOperator.ts, 26, 3))
>null + d : string
->d : string
+>null : null
+>d : string, Symbol(d, Decl(additionOperatorWithNullValueAndValidOperator.ts, 7, 3))
var r14 = null + '';
->r14 : string
+>r14 : string, Symbol(r14, Decl(additionOperatorWithNullValueAndValidOperator.ts, 27, 3))
>null + '' : string
+>null : null
+>'' : string
var r15 = d + null;
->r15 : string
+>r15 : string, Symbol(r15, Decl(additionOperatorWithNullValueAndValidOperator.ts, 28, 3))
>d + null : string
->d : string
+>d : string, Symbol(d, Decl(additionOperatorWithNullValueAndValidOperator.ts, 7, 3))
+>null : null
var r16 = '' + null;
->r16 : string
+>r16 : string, Symbol(r16, Decl(additionOperatorWithNullValueAndValidOperator.ts, 29, 3))
>'' + null : string
+>'' : string
+>null : null
diff --git a/tests/baselines/reference/additionOperatorWithNumberAndEnum.types b/tests/baselines/reference/additionOperatorWithNumberAndEnum.types
index c22939ffd98..ffca2d5d5cd 100644
--- a/tests/baselines/reference/additionOperatorWithNumberAndEnum.types
+++ b/tests/baselines/reference/additionOperatorWithNumberAndEnum.types
@@ -1,115 +1,121 @@
=== tests/cases/conformance/expressions/binaryOperators/additionOperator/additionOperatorWithNumberAndEnum.ts ===
enum E { a, b }
->E : E
->a : E
->b : E
+>E : E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithNumberAndEnum.ts, 0, 8))
+>b : E, Symbol(E.b, Decl(additionOperatorWithNumberAndEnum.ts, 0, 11))
enum F { c, d }
->F : F
->c : F
->d : F
+>F : F, Symbol(F, Decl(additionOperatorWithNumberAndEnum.ts, 0, 15))
+>c : F, Symbol(F.c, Decl(additionOperatorWithNumberAndEnum.ts, 1, 8))
+>d : F, Symbol(F.d, Decl(additionOperatorWithNumberAndEnum.ts, 1, 11))
var a: number;
->a : number
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
var b: E;
->b : E
->E : E
+>b : E, Symbol(b, Decl(additionOperatorWithNumberAndEnum.ts, 4, 3))
+>E : E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
var c: E | F;
->c : E | F
->E : E
->F : F
+>c : E | F, Symbol(c, Decl(additionOperatorWithNumberAndEnum.ts, 5, 3))
+>E : E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>F : F, Symbol(F, Decl(additionOperatorWithNumberAndEnum.ts, 0, 15))
var r1 = a + a;
->r1 : number
+>r1 : number, Symbol(r1, Decl(additionOperatorWithNumberAndEnum.ts, 7, 3))
>a + a : number
->a : number
->a : number
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
var r2 = a + b;
->r2 : number
+>r2 : number, Symbol(r2, Decl(additionOperatorWithNumberAndEnum.ts, 8, 3))
>a + b : number
->a : number
->b : E
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
+>b : E, Symbol(b, Decl(additionOperatorWithNumberAndEnum.ts, 4, 3))
var r3 = b + a;
->r3 : number
+>r3 : number, Symbol(r3, Decl(additionOperatorWithNumberAndEnum.ts, 9, 3))
>b + a : number
->b : E
->a : number
+>b : E, Symbol(b, Decl(additionOperatorWithNumberAndEnum.ts, 4, 3))
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
var r4 = b + b;
->r4 : number
+>r4 : number, Symbol(r4, Decl(additionOperatorWithNumberAndEnum.ts, 10, 3))
>b + b : number
->b : E
->b : E
+>b : E, Symbol(b, Decl(additionOperatorWithNumberAndEnum.ts, 4, 3))
+>b : E, Symbol(b, Decl(additionOperatorWithNumberAndEnum.ts, 4, 3))
var r5 = 0 + a;
->r5 : number
+>r5 : number, Symbol(r5, Decl(additionOperatorWithNumberAndEnum.ts, 12, 3))
>0 + a : number
->a : number
+>0 : number
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
var r6 = E.a + 0;
->r6 : number
+>r6 : number, Symbol(r6, Decl(additionOperatorWithNumberAndEnum.ts, 13, 3))
>E.a + 0 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithNumberAndEnum.ts, 0, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithNumberAndEnum.ts, 0, 8))
+>0 : number
var r7 = E.a + E.b;
->r7 : number
+>r7 : number, Symbol(r7, Decl(additionOperatorWithNumberAndEnum.ts, 14, 3))
>E.a + E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithNumberAndEnum.ts, 0, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithNumberAndEnum.ts, 0, 8))
+>E.b : E, Symbol(E.b, Decl(additionOperatorWithNumberAndEnum.ts, 0, 11))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(additionOperatorWithNumberAndEnum.ts, 0, 11))
var r8 = E['a'] + E['b'];
->r8 : number
+>r8 : number, Symbol(r8, Decl(additionOperatorWithNumberAndEnum.ts, 15, 3))
>E['a'] + E['b'] : number
>E['a'] : E
->E : typeof E
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>'a' : string, Symbol(E.a, Decl(additionOperatorWithNumberAndEnum.ts, 0, 8))
>E['b'] : E
->E : typeof E
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>'b' : string, Symbol(E.b, Decl(additionOperatorWithNumberAndEnum.ts, 0, 11))
var r9 = E['a'] + F['c'];
->r9 : number
+>r9 : number, Symbol(r9, Decl(additionOperatorWithNumberAndEnum.ts, 16, 3))
>E['a'] + F['c'] : number
>E['a'] : E
->E : typeof E
+>E : typeof E, Symbol(E, Decl(additionOperatorWithNumberAndEnum.ts, 0, 0))
+>'a' : string, Symbol(E.a, Decl(additionOperatorWithNumberAndEnum.ts, 0, 8))
>F['c'] : F
->F : typeof F
+>F : typeof F, Symbol(F, Decl(additionOperatorWithNumberAndEnum.ts, 0, 15))
+>'c' : string, Symbol(F.c, Decl(additionOperatorWithNumberAndEnum.ts, 1, 8))
var r10 = a + c;
->r10 : number
+>r10 : number, Symbol(r10, Decl(additionOperatorWithNumberAndEnum.ts, 18, 3))
>a + c : number
->a : number
->c : E | F
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
+>c : E | F, Symbol(c, Decl(additionOperatorWithNumberAndEnum.ts, 5, 3))
var r11 = c + a;
->r11 : number
+>r11 : number, Symbol(r11, Decl(additionOperatorWithNumberAndEnum.ts, 19, 3))
>c + a : number
->c : E | F
->a : number
+>c : E | F, Symbol(c, Decl(additionOperatorWithNumberAndEnum.ts, 5, 3))
+>a : number, Symbol(a, Decl(additionOperatorWithNumberAndEnum.ts, 3, 3))
var r12 = b + c;
->r12 : number
+>r12 : number, Symbol(r12, Decl(additionOperatorWithNumberAndEnum.ts, 20, 3))
>b + c : number
->b : E
->c : E | F
+>b : E, Symbol(b, Decl(additionOperatorWithNumberAndEnum.ts, 4, 3))
+>c : E | F, Symbol(c, Decl(additionOperatorWithNumberAndEnum.ts, 5, 3))
var r13 = c + b;
->r13 : number
+>r13 : number, Symbol(r13, Decl(additionOperatorWithNumberAndEnum.ts, 21, 3))
>c + b : number
->c : E | F
->b : E
+>c : E | F, Symbol(c, Decl(additionOperatorWithNumberAndEnum.ts, 5, 3))
+>b : E, Symbol(b, Decl(additionOperatorWithNumberAndEnum.ts, 4, 3))
var r14 = c + c;
->r14 : number
+>r14 : number, Symbol(r14, Decl(additionOperatorWithNumberAndEnum.ts, 22, 3))
>c + c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(additionOperatorWithNumberAndEnum.ts, 5, 3))
+>c : E | F, Symbol(c, Decl(additionOperatorWithNumberAndEnum.ts, 5, 3))
diff --git a/tests/baselines/reference/additionOperatorWithStringAndEveryType.types b/tests/baselines/reference/additionOperatorWithStringAndEveryType.types
index 9d5a926c427..31fa60a2562 100644
--- a/tests/baselines/reference/additionOperatorWithStringAndEveryType.types
+++ b/tests/baselines/reference/additionOperatorWithStringAndEveryType.types
@@ -1,158 +1,161 @@
=== tests/cases/conformance/expressions/binaryOperators/additionOperator/additionOperatorWithStringAndEveryType.ts ===
enum E { a, b, c }
->E : E
->a : E
->b : E
->c : E
+>E : E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithStringAndEveryType.ts, 0, 8))
+>b : E, Symbol(E.b, Decl(additionOperatorWithStringAndEveryType.ts, 0, 11))
+>c : E, Symbol(E.c, Decl(additionOperatorWithStringAndEveryType.ts, 0, 14))
var a: any;
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 2, 3))
var b: boolean;
->b : boolean
+>b : boolean, Symbol(b, Decl(additionOperatorWithStringAndEveryType.ts, 3, 3))
var c: number;
->c : number
+>c : number, Symbol(c, Decl(additionOperatorWithStringAndEveryType.ts, 4, 3))
var d: string;
->d : string
+>d : string, Symbol(d, Decl(additionOperatorWithStringAndEveryType.ts, 5, 3))
var e: Object;
->e : Object
->Object : Object
+>e : Object, Symbol(e, Decl(additionOperatorWithStringAndEveryType.ts, 6, 3))
+>Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11))
var f: void;
->f : void
+>f : void, Symbol(f, Decl(additionOperatorWithStringAndEveryType.ts, 7, 3))
var g: E;
->g : E
->E : E
+>g : E, Symbol(g, Decl(additionOperatorWithStringAndEveryType.ts, 8, 3))
+>E : E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0))
var x: string;
->x : string
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
// string could plus every type, and the result is always string
// string as left operand
var r1 = x + a;
->r1 : string
+>r1 : string, Symbol(r1, Decl(additionOperatorWithStringAndEveryType.ts, 14, 3))
>x + a : string
->x : string
->a : any
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>a : any, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 2, 3))
var r2 = x + b;
->r2 : string
+>r2 : string, Symbol(r2, Decl(additionOperatorWithStringAndEveryType.ts, 15, 3))
>x + b : string
->x : string
->b : boolean
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>b : boolean, Symbol(b, Decl(additionOperatorWithStringAndEveryType.ts, 3, 3))
var r3 = x + c;
->r3 : string
+>r3 : string, Symbol(r3, Decl(additionOperatorWithStringAndEveryType.ts, 16, 3))
>x + c : string
->x : string
->c : number
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>c : number, Symbol(c, Decl(additionOperatorWithStringAndEveryType.ts, 4, 3))
var r4 = x + d;
->r4 : string
+>r4 : string, Symbol(r4, Decl(additionOperatorWithStringAndEveryType.ts, 17, 3))
>x + d : string
->x : string
->d : string
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>d : string, Symbol(d, Decl(additionOperatorWithStringAndEveryType.ts, 5, 3))
var r5 = x + e;
->r5 : string
+>r5 : string, Symbol(r5, Decl(additionOperatorWithStringAndEveryType.ts, 18, 3))
>x + e : string
->x : string
->e : Object
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>e : Object, Symbol(e, Decl(additionOperatorWithStringAndEveryType.ts, 6, 3))
var r6 = x + f;
->r6 : string
+>r6 : string, Symbol(r6, Decl(additionOperatorWithStringAndEveryType.ts, 19, 3))
>x + f : string
->x : string
->f : void
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>f : void, Symbol(f, Decl(additionOperatorWithStringAndEveryType.ts, 7, 3))
var r7 = x + g;
->r7 : string
+>r7 : string, Symbol(r7, Decl(additionOperatorWithStringAndEveryType.ts, 20, 3))
>x + g : string
->x : string
->g : E
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>g : E, Symbol(g, Decl(additionOperatorWithStringAndEveryType.ts, 8, 3))
// string as right operand
var r8 = a + x;
->r8 : string
+>r8 : string, Symbol(r8, Decl(additionOperatorWithStringAndEveryType.ts, 23, 3))
>a + x : string
->a : any
->x : string
+>a : any, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 2, 3))
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
var r9 = b + x;
->r9 : string
+>r9 : string, Symbol(r9, Decl(additionOperatorWithStringAndEveryType.ts, 24, 3))
>b + x : string
->b : boolean
->x : string
+>b : boolean, Symbol(b, Decl(additionOperatorWithStringAndEveryType.ts, 3, 3))
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
var r10 = c + x;
->r10 : string
+>r10 : string, Symbol(r10, Decl(additionOperatorWithStringAndEveryType.ts, 25, 3))
>c + x : string
->c : number
->x : string
+>c : number, Symbol(c, Decl(additionOperatorWithStringAndEveryType.ts, 4, 3))
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
var r11 = d + x;
->r11 : string
+>r11 : string, Symbol(r11, Decl(additionOperatorWithStringAndEveryType.ts, 26, 3))
>d + x : string
->d : string
->x : string
+>d : string, Symbol(d, Decl(additionOperatorWithStringAndEveryType.ts, 5, 3))
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
var r12 = e + x;
->r12 : string
+>r12 : string, Symbol(r12, Decl(additionOperatorWithStringAndEveryType.ts, 27, 3))
>e + x : string
->e : Object
->x : string
+>e : Object, Symbol(e, Decl(additionOperatorWithStringAndEveryType.ts, 6, 3))
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
var r13 = f + x;
->r13 : string
+>r13 : string, Symbol(r13, Decl(additionOperatorWithStringAndEveryType.ts, 28, 3))
>f + x : string
->f : void
->x : string
+>f : void, Symbol(f, Decl(additionOperatorWithStringAndEveryType.ts, 7, 3))
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
var r14 = g + x;
->r14 : string
+>r14 : string, Symbol(r14, Decl(additionOperatorWithStringAndEveryType.ts, 29, 3))
>g + x : string
->g : E
->x : string
+>g : E, Symbol(g, Decl(additionOperatorWithStringAndEveryType.ts, 8, 3))
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
// other cases
var r15 = x + E;
->r15 : string
+>r15 : string, Symbol(r15, Decl(additionOperatorWithStringAndEveryType.ts, 32, 3))
>x + E : string
->x : string
->E : typeof E
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0))
var r16 = x + E.a;
->r16 : string
+>r16 : string, Symbol(r16, Decl(additionOperatorWithStringAndEveryType.ts, 33, 3))
>x + E.a : string
->x : string
->E.a : E
->E : typeof E
->a : E
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithStringAndEveryType.ts, 0, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithStringAndEveryType.ts, 0, 8))
var r17 = x + '';
->r17 : string
+>r17 : string, Symbol(r17, Decl(additionOperatorWithStringAndEveryType.ts, 34, 3))
>x + '' : string
->x : string
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>'' : string
var r18 = x + 0;
->r18 : string
+>r18 : string, Symbol(r18, Decl(additionOperatorWithStringAndEveryType.ts, 35, 3))
>x + 0 : string
->x : string
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
+>0 : number
var r19 = x + { a: '' };
->r19 : string
+>r19 : string, Symbol(r19, Decl(additionOperatorWithStringAndEveryType.ts, 36, 3))
>x + { a: '' } : string
->x : string
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
>{ a: '' } : { a: string; }
->a : string
+>a : string, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 36, 15))
+>'' : string
var r20 = x + [];
->r20 : string
+>r20 : string, Symbol(r20, Decl(additionOperatorWithStringAndEveryType.ts, 37, 3))
>x + [] : string
->x : string
+>x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3))
>[] : undefined[]
diff --git a/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types b/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types
index 9a67b25024c..966c19aa8c4 100644
--- a/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types
+++ b/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types
@@ -2,122 +2,128 @@
// If one operand is the null or undefined value, it is treated as having the type of the other operand.
enum E { a, b, c }
->E : E
->a : E
->b : E
->c : E
+>E : E, Symbol(E, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 8))
+>b : E, Symbol(E.b, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 11))
+>c : E, Symbol(E.c, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 14))
var a: any;
->a : any
+>a : any, Symbol(a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 4, 3))
var b: number;
->b : number
+>b : number, Symbol(b, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 5, 3))
var c: E;
->c : E
->E : E
+>c : E, Symbol(c, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 6, 3))
+>E : E, Symbol(E, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 0, 0))
var d: string;
->d : string
+>d : string, Symbol(d, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 7, 3))
// undefined + any
var r1: any = undefined + a;
->r1 : any
+>r1 : any, Symbol(r1, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 10, 3))
>undefined + a : any
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 4, 3))
var r2: any = a + undefined;
->r2 : any
+>r2 : any, Symbol(r2, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 11, 3))
>a + undefined : any
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 4, 3))
+>undefined : undefined, Symbol(undefined)
// undefined + number/enum
var r3 = undefined + b;
->r3 : number
+>r3 : number, Symbol(r3, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 14, 3))
>undefined + b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 5, 3))
var r4 = undefined + 1;
->r4 : number
+>r4 : number, Symbol(r4, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 15, 3))
>undefined + 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var r5 = undefined + c;
->r5 : number
+>r5 : number, Symbol(r5, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 16, 3))
>undefined + c : number
->undefined : undefined
->c : E
+>undefined : undefined, Symbol(undefined)
+>c : E, Symbol(c, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 6, 3))
var r6 = undefined + E.a;
->r6 : number
+>r6 : number, Symbol(r6, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 17, 3))
>undefined + E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 8))
var r7 = undefined + E['a'];
->r7 : number
+>r7 : number, Symbol(r7, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 18, 3))
>undefined + E['a'] : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
>E['a'] : E
->E : typeof E
+>E : typeof E, Symbol(E, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 0, 0))
+>'a' : string, Symbol(E.a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 8))
var r8 = b + undefined;
->r8 : number
+>r8 : number, Symbol(r8, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 19, 3))
>b + undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 5, 3))
+>undefined : undefined, Symbol(undefined)
var r9 = 1 + undefined;
->r9 : number
+>r9 : number, Symbol(r9, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 20, 3))
>1 + undefined : number
->undefined : undefined
+>1 : number
+>undefined : undefined, Symbol(undefined)
var r10 = c + undefined
->r10 : number
+>r10 : number, Symbol(r10, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 21, 3))
>c + undefined : number
->c : E
->undefined : undefined
+>c : E, Symbol(c, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 6, 3))
+>undefined : undefined, Symbol(undefined)
var r11 = E.a + undefined;
->r11 : number
+>r11 : number, Symbol(r11, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 22, 3))
>E.a + undefined : number
->E.a : E
->E : typeof E
->a : E
->undefined : undefined
+>E.a : E, Symbol(E.a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 8))
+>undefined : undefined, Symbol(undefined)
var r12 = E['a'] + undefined;
->r12 : number
+>r12 : number, Symbol(r12, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 23, 3))
>E['a'] + undefined : number
>E['a'] : E
->E : typeof E
->undefined : undefined
+>E : typeof E, Symbol(E, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 0, 0))
+>'a' : string, Symbol(E.a, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 2, 8))
+>undefined : undefined, Symbol(undefined)
// undefined + string
var r13 = undefined + d;
->r13 : string
+>r13 : string, Symbol(r13, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 26, 3))
>undefined + d : string
->undefined : undefined
->d : string
+>undefined : undefined, Symbol(undefined)
+>d : string, Symbol(d, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 7, 3))
var r14 = undefined + '';
->r14 : string
+>r14 : string, Symbol(r14, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 27, 3))
>undefined + '' : string
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>'' : string
var r15 = d + undefined;
->r15 : string
+>r15 : string, Symbol(r15, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 28, 3))
>d + undefined : string
->d : string
->undefined : undefined
+>d : string, Symbol(d, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 7, 3))
+>undefined : undefined, Symbol(undefined)
var r16 = '' + undefined;
->r16 : string
+>r16 : string, Symbol(r16, Decl(additionOperatorWithUndefinedValueAndValidOperator.ts, 29, 3))
>'' + undefined : string
->undefined : undefined
+>'' : string
+>undefined : undefined, Symbol(undefined)
diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types
index a666d2cee98..0a580a47b16 100644
--- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types
+++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types
@@ -1,59 +1,61 @@
=== tests/cases/compiler/aliasUsage1_main.ts ===
import Backbone = require("aliasUsage1_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsage1_main.ts, 0, 0))
import moduleA = require("aliasUsage1_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsage1_main.ts, 0, 50))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 48))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsage1_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsage1_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0))
}
class C2 {
->C2 : C2
+>C2 : C2, Symbol(C2, Decl(aliasUsage1_main.ts, 4, 1))
x: IHasVisualizationModel;
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsage1_main.ts, 5, 10))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 48))
get A() {
->A : IHasVisualizationModel
+>A : IHasVisualizationModel, Symbol(A, Decl(aliasUsage1_main.ts, 6, 30), Decl(aliasUsage1_main.ts, 9, 5))
return this.x;
->this.x : IHasVisualizationModel
->this : C2
->x : IHasVisualizationModel
+>this.x : IHasVisualizationModel, Symbol(x, Decl(aliasUsage1_main.ts, 5, 10))
+>this : C2, Symbol(C2, Decl(aliasUsage1_main.ts, 4, 1))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsage1_main.ts, 5, 10))
}
set A(x) {
->A : IHasVisualizationModel
->x : IHasVisualizationModel
+>A : IHasVisualizationModel, Symbol(A, Decl(aliasUsage1_main.ts, 6, 30), Decl(aliasUsage1_main.ts, 9, 5))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsage1_main.ts, 10, 10))
x = moduleA;
>x = moduleA : typeof moduleA
->x : IHasVisualizationModel
->moduleA : typeof moduleA
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsage1_main.ts, 10, 10))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsage1_main.ts, 0, 50))
}
}
=== tests/cases/compiler/aliasUsage1_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsage1_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsage1_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsage1_moduleA.ts ===
import Backbone = require("aliasUsage1_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsage1_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsage1_moduleA.ts, 0, 50))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsage1_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInArray.types b/tests/baselines/reference/aliasUsageInArray.types
index f7e2beb49dd..b7ff2670cd2 100644
--- a/tests/baselines/reference/aliasUsageInArray.types
+++ b/tests/baselines/reference/aliasUsageInArray.types
@@ -1,47 +1,49 @@
=== tests/cases/compiler/aliasUsageInArray_main.ts ===
import Backbone = require("aliasUsageInArray_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInArray_main.ts, 0, 0))
import moduleA = require("aliasUsageInArray_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInArray_main.ts, 1, 54))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInArray_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInArray_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0))
}
var xs: IHasVisualizationModel[] = [moduleA];
->xs : IHasVisualizationModel[]
->IHasVisualizationModel : IHasVisualizationModel
+>xs : IHasVisualizationModel[], Symbol(xs, Decl(aliasUsageInArray_main.ts, 6, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInArray_main.ts, 1, 54))
>[moduleA] : typeof moduleA[]
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56))
var xs2: typeof moduleA[] = [moduleA];
->xs2 : typeof moduleA[]
->moduleA : typeof moduleA
+>xs2 : typeof moduleA[], Symbol(xs2, Decl(aliasUsageInArray_main.ts, 7, 3))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56))
>[moduleA] : typeof moduleA[]
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInArray_main.ts, 0, 56))
=== tests/cases/compiler/aliasUsageInArray_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInArray_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInArray_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInArray_moduleA.ts ===
import Backbone = require("aliasUsageInArray_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInArray_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInArray_moduleA.ts, 0, 56))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInArray_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.types b/tests/baselines/reference/aliasUsageInFunctionExpression.types
index 392481d2d02..46ca7a9a76c 100644
--- a/tests/baselines/reference/aliasUsageInFunctionExpression.types
+++ b/tests/baselines/reference/aliasUsageInFunctionExpression.types
@@ -1,48 +1,50 @@
=== tests/cases/compiler/aliasUsageInFunctionExpression_main.ts ===
import Backbone = require("aliasUsageInFunctionExpression_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInFunctionExpression_main.ts, 0, 0))
import moduleA = require("aliasUsageInFunctionExpression_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInFunctionExpression_main.ts, 0, 69))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 1, 67))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInFunctionExpression_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0))
}
var f = (x: IHasVisualizationModel) => x;
->f : (x: IHasVisualizationModel) => IHasVisualizationModel
+>f : (x: IHasVisualizationModel) => IHasVisualizationModel, Symbol(f, Decl(aliasUsageInFunctionExpression_main.ts, 5, 3))
>(x: IHasVisualizationModel) => x : (x: IHasVisualizationModel) => IHasVisualizationModel
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
->x : IHasVisualizationModel
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInFunctionExpression_main.ts, 5, 9))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 1, 67))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInFunctionExpression_main.ts, 5, 9))
f = (x) => moduleA;
>f = (x) => moduleA : (x: IHasVisualizationModel) => typeof moduleA
->f : (x: IHasVisualizationModel) => IHasVisualizationModel
+>f : (x: IHasVisualizationModel) => IHasVisualizationModel, Symbol(f, Decl(aliasUsageInFunctionExpression_main.ts, 5, 3))
>(x) => moduleA : (x: IHasVisualizationModel) => typeof moduleA
->x : IHasVisualizationModel
->moduleA : typeof moduleA
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInFunctionExpression_main.ts, 6, 5))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInFunctionExpression_main.ts, 0, 69))
=== tests/cases/compiler/aliasUsageInFunctionExpression_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInFunctionExpression_moduleA.ts ===
import Backbone = require("aliasUsageInFunctionExpression_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInFunctionExpression_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInFunctionExpression_moduleA.ts, 0, 69))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInFunctionExpression_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.types b/tests/baselines/reference/aliasUsageInGenericFunction.types
index 568e885f51f..b32eb87fb19 100644
--- a/tests/baselines/reference/aliasUsageInGenericFunction.types
+++ b/tests/baselines/reference/aliasUsageInGenericFunction.types
@@ -1,62 +1,65 @@
=== tests/cases/compiler/aliasUsageInGenericFunction_main.ts ===
import Backbone = require("aliasUsageInGenericFunction_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInGenericFunction_main.ts, 0, 0))
import moduleA = require("aliasUsageInGenericFunction_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInGenericFunction_main.ts, 0, 66))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 64))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInGenericFunction_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0))
}
function foo(x: T) {
->foo : (x: T) => T
->T : T
->a : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
->x : T
->T : T
+>foo : (x: T) => T, Symbol(foo, Decl(aliasUsageInGenericFunction_main.ts, 4, 1))
+>T : T, Symbol(T, Decl(aliasUsageInGenericFunction_main.ts, 5, 13))
+>a : IHasVisualizationModel, Symbol(a, Decl(aliasUsageInGenericFunction_main.ts, 5, 24))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 64))
+>x : T, Symbol(x, Decl(aliasUsageInGenericFunction_main.ts, 5, 54))
+>T : T, Symbol(T, Decl(aliasUsageInGenericFunction_main.ts, 5, 13))
return x;
->x : T
+>x : T, Symbol(x, Decl(aliasUsageInGenericFunction_main.ts, 5, 54))
}
var r = foo({ a: moduleA });
->r : { a: typeof moduleA; }
+>r : { a: typeof moduleA; }, Symbol(r, Decl(aliasUsageInGenericFunction_main.ts, 8, 3))
>foo({ a: moduleA }) : { a: typeof moduleA; }
->foo : (x: T) => T
+>foo : (x: T) => T, Symbol(foo, Decl(aliasUsageInGenericFunction_main.ts, 4, 1))
>{ a: moduleA } : { a: typeof moduleA; }
->a : typeof moduleA
->moduleA : typeof moduleA
+>a : typeof moduleA, Symbol(a, Decl(aliasUsageInGenericFunction_main.ts, 8, 13))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInGenericFunction_main.ts, 0, 66))
var r2 = foo({ a: null });
->r2 : { a: IHasVisualizationModel; }
+>r2 : { a: IHasVisualizationModel; }, Symbol(r2, Decl(aliasUsageInGenericFunction_main.ts, 9, 3))
>foo({ a: null }) : { a: IHasVisualizationModel; }
->foo : (x: T) => T
+>foo : (x: T) => T, Symbol(foo, Decl(aliasUsageInGenericFunction_main.ts, 4, 1))
>{ a: null } : { a: IHasVisualizationModel; }
->a : IHasVisualizationModel
+>a : IHasVisualizationModel, Symbol(a, Decl(aliasUsageInGenericFunction_main.ts, 9, 14))
>null : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 64))
+>null : null
=== tests/cases/compiler/aliasUsageInGenericFunction_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInGenericFunction_moduleA.ts ===
import Backbone = require("aliasUsageInGenericFunction_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInGenericFunction_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInGenericFunction_moduleA.ts, 0, 66))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInGenericFunction_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.types b/tests/baselines/reference/aliasUsageInIndexerOfClass.types
index e968abe597f..af3a88e9762 100644
--- a/tests/baselines/reference/aliasUsageInIndexerOfClass.types
+++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.types
@@ -1,56 +1,58 @@
=== tests/cases/compiler/aliasUsageInIndexerOfClass_main.ts ===
import Backbone = require("aliasUsageInIndexerOfClass_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 0))
import moduleA = require("aliasUsageInIndexerOfClass_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 65))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 63))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0))
}
class N {
->N : N
+>N : N, Symbol(N, Decl(aliasUsageInIndexerOfClass_main.ts, 4, 1))
[idx: string]: IHasVisualizationModel
->idx : string
->IHasVisualizationModel : IHasVisualizationModel
+>idx : string, Symbol(idx, Decl(aliasUsageInIndexerOfClass_main.ts, 6, 5))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 63))
x = moduleA;
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInIndexerOfClass_main.ts, 6, 41))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 65))
}
class N2 {
->N2 : N2
+>N2 : N2, Symbol(N2, Decl(aliasUsageInIndexerOfClass_main.ts, 8, 1))
[idx: string]: typeof moduleA
->idx : string
->moduleA : typeof moduleA
+>idx : string, Symbol(idx, Decl(aliasUsageInIndexerOfClass_main.ts, 10, 5))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 65))
x: IHasVisualizationModel;
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInIndexerOfClass_main.ts, 10, 33))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 63))
}
=== tests/cases/compiler/aliasUsageInIndexerOfClass_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInIndexerOfClass_moduleA.ts ===
import Backbone = require("aliasUsageInIndexerOfClass_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInIndexerOfClass_moduleA.ts, 0, 65))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.types b/tests/baselines/reference/aliasUsageInObjectLiteral.types
index 2e631a41cdf..8d5eed3ca7b 100644
--- a/tests/baselines/reference/aliasUsageInObjectLiteral.types
+++ b/tests/baselines/reference/aliasUsageInObjectLiteral.types
@@ -1,61 +1,63 @@
=== tests/cases/compiler/aliasUsageInObjectLiteral_main.ts ===
import Backbone = require("aliasUsageInObjectLiteral_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInObjectLiteral_main.ts, 0, 0))
import moduleA = require("aliasUsageInObjectLiteral_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 62))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInObjectLiteral_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0))
}
var a: { x: typeof moduleA } = { x: moduleA };
->a : { x: typeof moduleA; }
->x : typeof moduleA
->moduleA : typeof moduleA
+>a : { x: typeof moduleA; }, Symbol(a, Decl(aliasUsageInObjectLiteral_main.ts, 5, 3))
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 5, 8))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64))
>{ x: moduleA } : { x: typeof moduleA; }
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 5, 32))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64))
var b: { x: IHasVisualizationModel } = { x: moduleA };
->b : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>b : { x: IHasVisualizationModel; }, Symbol(b, Decl(aliasUsageInObjectLiteral_main.ts, 6, 3))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 6, 8))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 62))
>{ x: moduleA } : { x: typeof moduleA; }
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInObjectLiteral_main.ts, 6, 40))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64))
var c: { y: { z: IHasVisualizationModel } } = { y: { z: moduleA } };
->c : { y: { z: IHasVisualizationModel; }; }
->y : { z: IHasVisualizationModel; }
->z : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>c : { y: { z: IHasVisualizationModel; }; }, Symbol(c, Decl(aliasUsageInObjectLiteral_main.ts, 7, 3))
+>y : { z: IHasVisualizationModel; }, Symbol(y, Decl(aliasUsageInObjectLiteral_main.ts, 7, 8))
+>z : IHasVisualizationModel, Symbol(z, Decl(aliasUsageInObjectLiteral_main.ts, 7, 13))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 62))
>{ y: { z: moduleA } } : { y: { z: typeof moduleA; }; }
->y : { z: typeof moduleA; }
+>y : { z: typeof moduleA; }, Symbol(y, Decl(aliasUsageInObjectLiteral_main.ts, 7, 47))
>{ z: moduleA } : { z: typeof moduleA; }
->z : typeof moduleA
->moduleA : typeof moduleA
+>z : typeof moduleA, Symbol(z, Decl(aliasUsageInObjectLiteral_main.ts, 7, 52))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInObjectLiteral_main.ts, 0, 64))
=== tests/cases/compiler/aliasUsageInObjectLiteral_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInObjectLiteral_moduleA.ts ===
import Backbone = require("aliasUsageInObjectLiteral_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInObjectLiteral_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInObjectLiteral_moduleA.ts, 0, 64))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInObjectLiteral_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types b/tests/baselines/reference/aliasUsageInOrExpression.types
index 1a4dae90356..dace1e1f7fa 100644
--- a/tests/baselines/reference/aliasUsageInOrExpression.types
+++ b/tests/baselines/reference/aliasUsageInOrExpression.types
@@ -1,82 +1,87 @@
=== tests/cases/compiler/aliasUsageInOrExpression_main.ts ===
import Backbone = require("aliasUsageInOrExpression_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_main.ts, 0, 0))
import moduleA = require("aliasUsageInOrExpression_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
}
var i: IHasVisualizationModel;
->i : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
var d1 = i || moduleA;
->d1 : IHasVisualizationModel
+>d1 : IHasVisualizationModel, Symbol(d1, Decl(aliasUsageInOrExpression_main.ts, 6, 3))
>i || moduleA : IHasVisualizationModel
->i : IHasVisualizationModel
->moduleA : typeof moduleA
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
var d2: IHasVisualizationModel = i || moduleA;
->d2 : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>d2 : IHasVisualizationModel, Symbol(d2, Decl(aliasUsageInOrExpression_main.ts, 7, 3), Decl(aliasUsageInOrExpression_main.ts, 8, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
>i || moduleA : IHasVisualizationModel
->i : IHasVisualizationModel
->moduleA : typeof moduleA
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
var d2: IHasVisualizationModel = moduleA || i;
->d2 : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>d2 : IHasVisualizationModel, Symbol(d2, Decl(aliasUsageInOrExpression_main.ts, 7, 3), Decl(aliasUsageInOrExpression_main.ts, 8, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
>moduleA || i : IHasVisualizationModel
->moduleA : typeof moduleA
->i : IHasVisualizationModel
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
var e: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null || { x: moduleA };
->e : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>e : { x: IHasVisualizationModel; }, Symbol(e, Decl(aliasUsageInOrExpression_main.ts, 9, 3))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 8))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
><{ x: IHasVisualizationModel }>null || { x: moduleA } : { x: IHasVisualizationModel; }
><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 41))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
+>null : null
>{ x: moduleA } : { x: typeof moduleA; }
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 79))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
var f: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null ? { x: moduleA } : null;
->f : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>f : { x: IHasVisualizationModel; }, Symbol(f, Decl(aliasUsageInOrExpression_main.ts, 10, 3))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 8))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
><{ x: IHasVisualizationModel }>null ? { x: moduleA } : null : { x: typeof moduleA; }
><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 41))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
+>null : null
>{ x: moduleA } : { x: typeof moduleA; }
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 78))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
+>null : null
=== tests/cases/compiler/aliasUsageInOrExpression_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInOrExpression_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInOrExpression_moduleA.ts ===
import Backbone = require("aliasUsageInOrExpression_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 63))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types.pull b/tests/baselines/reference/aliasUsageInOrExpression.types.pull
index 3b138d1404a..37fc6d54f33 100644
--- a/tests/baselines/reference/aliasUsageInOrExpression.types.pull
+++ b/tests/baselines/reference/aliasUsageInOrExpression.types.pull
@@ -1,82 +1,87 @@
=== tests/cases/compiler/aliasUsageInOrExpression_main.ts ===
import Backbone = require("aliasUsageInOrExpression_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_main.ts, 0, 0))
import moduleA = require("aliasUsageInOrExpression_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
}
var i: IHasVisualizationModel;
->i : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
var d1 = i || moduleA;
->d1 : typeof moduleA
+>d1 : typeof moduleA, Symbol(d1, Decl(aliasUsageInOrExpression_main.ts, 6, 3))
>i || moduleA : typeof moduleA
->i : IHasVisualizationModel
->moduleA : typeof moduleA
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
var d2: IHasVisualizationModel = i || moduleA;
->d2 : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>d2 : IHasVisualizationModel, Symbol(d2, Decl(aliasUsageInOrExpression_main.ts, 7, 3), Decl(aliasUsageInOrExpression_main.ts, 8, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
>i || moduleA : typeof moduleA
->i : IHasVisualizationModel
->moduleA : typeof moduleA
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
var d2: IHasVisualizationModel = moduleA || i;
->d2 : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>d2 : IHasVisualizationModel, Symbol(d2, Decl(aliasUsageInOrExpression_main.ts, 7, 3), Decl(aliasUsageInOrExpression_main.ts, 8, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
>moduleA || i : typeof moduleA
->moduleA : typeof moduleA
->i : IHasVisualizationModel
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInOrExpression_main.ts, 5, 3))
var e: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null || { x: moduleA };
->e : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>e : { x: IHasVisualizationModel; }, Symbol(e, Decl(aliasUsageInOrExpression_main.ts, 9, 3))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 8))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
><{ x: IHasVisualizationModel }>null || { x: moduleA } : { x: IHasVisualizationModel; }
><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 41))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
+>null : null
>{ x: moduleA } : { x: typeof moduleA; }
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 9, 79))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
var f: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null ? { x: moduleA } : null;
->f : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>f : { x: IHasVisualizationModel; }, Symbol(f, Decl(aliasUsageInOrExpression_main.ts, 10, 3))
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 8))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
><{ x: IHasVisualizationModel }>null ? { x: moduleA } : null : { x: typeof moduleA; }
><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; }
->x : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>x : IHasVisualizationModel, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 41))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 61))
+>null : null
>{ x: moduleA } : { x: typeof moduleA; }
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInOrExpression_main.ts, 10, 78))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInOrExpression_main.ts, 0, 63))
+>null : null
=== tests/cases/compiler/aliasUsageInOrExpression_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInOrExpression_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInOrExpression_moduleA.ts ===
import Backbone = require("aliasUsageInOrExpression_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 63))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInOrExpression_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types
index 72f0aaf9e20..aef12f4fb23 100644
--- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types
+++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types
@@ -1,52 +1,54 @@
=== tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_main.ts ===
import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 0))
import moduleA = require("aliasUsageInTypeArgumentOfExtendsClause_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 78))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 76))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0))
}
class C {
->C : C
->T : T
->IHasVisualizationModel : IHasVisualizationModel
+>C : C, Symbol(C, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 4, 1))
+>T : T, Symbol(T, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 8))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 76))
x: T;
->x : T
->T : T
+>x : T, Symbol(x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 43))
+>T : T, Symbol(T, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 8))
}
class D extends C {
->D : D
->C : C
->IHasVisualizationModel : IHasVisualizationModel
+>D : D, Symbol(D, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 7, 1))
+>C : C, Symbol(C, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 4, 1))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 76))
x = moduleA;
->x : typeof moduleA
->moduleA : typeof moduleA
+>x : typeof moduleA, Symbol(x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 8, 43))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 78))
}
=== tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts ===
import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts, 0, 78))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.types b/tests/baselines/reference/aliasUsageInVarAssignment.types
index 6b1c097ad97..b31cd522978 100644
--- a/tests/baselines/reference/aliasUsageInVarAssignment.types
+++ b/tests/baselines/reference/aliasUsageInVarAssignment.types
@@ -1,43 +1,45 @@
=== tests/cases/compiler/aliasUsageInVarAssignment_main.ts ===
import Backbone = require("aliasUsageInVarAssignment_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInVarAssignment_main.ts, 0, 0))
import moduleA = require("aliasUsageInVarAssignment_moduleA");
->moduleA : typeof moduleA
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInVarAssignment_main.ts, 0, 64))
interface IHasVisualizationModel {
->IHasVisualizationModel : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 1, 62))
VisualizationModel: typeof Backbone.Model;
->VisualizationModel : typeof Backbone.Model
->Backbone : typeof Backbone
->Model : typeof Backbone.Model
+>VisualizationModel : typeof Backbone.Model, Symbol(VisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 2, 34))
+>Backbone.Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInVarAssignment_main.ts, 0, 0))
+>Model : typeof Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0))
}
var i: IHasVisualizationModel;
->i : IHasVisualizationModel
->IHasVisualizationModel : IHasVisualizationModel
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInVarAssignment_main.ts, 5, 3))
+>IHasVisualizationModel : IHasVisualizationModel, Symbol(IHasVisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 1, 62))
var m: typeof moduleA = i;
->m : typeof moduleA
->moduleA : typeof moduleA
->i : IHasVisualizationModel
+>m : typeof moduleA, Symbol(m, Decl(aliasUsageInVarAssignment_main.ts, 6, 3))
+>moduleA : typeof moduleA, Symbol(moduleA, Decl(aliasUsageInVarAssignment_main.ts, 0, 64))
+>i : IHasVisualizationModel, Symbol(i, Decl(aliasUsageInVarAssignment_main.ts, 5, 3))
=== tests/cases/compiler/aliasUsageInVarAssignment_backbone.ts ===
export class Model {
->Model : Model
+>Model : Model, Symbol(Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0))
public someData: string;
->someData : string
+>someData : string, Symbol(someData, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 20))
}
=== tests/cases/compiler/aliasUsageInVarAssignment_moduleA.ts ===
import Backbone = require("aliasUsageInVarAssignment_backbone");
->Backbone : typeof Backbone
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInVarAssignment_moduleA.ts, 0, 0))
export class VisualizationModel extends Backbone.Model {
->VisualizationModel : VisualizationModel
->Backbone : typeof Backbone
->Model : Backbone.Model
+>VisualizationModel : VisualizationModel, Symbol(VisualizationModel, Decl(aliasUsageInVarAssignment_moduleA.ts, 0, 64))
+>Backbone.Model : any, Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0))
+>Backbone : typeof Backbone, Symbol(Backbone, Decl(aliasUsageInVarAssignment_moduleA.ts, 0, 0))
+>Model : Backbone.Model, Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0))
// interesting stuff here
}
diff --git a/tests/baselines/reference/aliasUsedAsNameValue.types b/tests/baselines/reference/aliasUsedAsNameValue.types
index b8d92f28496..fc006f03a1b 100644
--- a/tests/baselines/reference/aliasUsedAsNameValue.types
+++ b/tests/baselines/reference/aliasUsedAsNameValue.types
@@ -2,30 +2,31 @@
///
///
import mod = require("aliasUsedAsNameValue_0");
->mod : typeof mod
+>mod : typeof mod, Symbol(mod, Decl(aliasUsedAsNameValue_2.ts, 0, 0))
import b = require("aliasUsedAsNameValue_1");
->b : typeof b
+>b : typeof b, Symbol(b, Decl(aliasUsedAsNameValue_2.ts, 2, 47))
export var a = function () {
->a : () => void
+>a : () => void, Symbol(a, Decl(aliasUsedAsNameValue_2.ts, 5, 10))
>function () { //var x = mod.id; // TODO needed hack that mod is loaded b.b(mod);} : () => void
//var x = mod.id; // TODO needed hack that mod is loaded
b.b(mod);
>b.b(mod) : any
->b.b : (a: any) => any
->b : typeof b
->b : (a: any) => any
->mod : typeof mod
+>b.b : (a: any) => any, Symbol(b.b, Decl(aliasUsedAsNameValue_1.ts, 0, 0))
+>b : typeof b, Symbol(b, Decl(aliasUsedAsNameValue_2.ts, 2, 47))
+>b : (a: any) => any, Symbol(b.b, Decl(aliasUsedAsNameValue_1.ts, 0, 0))
+>mod : typeof mod, Symbol(mod, Decl(aliasUsedAsNameValue_2.ts, 0, 0))
}
=== tests/cases/compiler/aliasUsedAsNameValue_0.ts ===
export var id: number;
->id : number
+>id : number, Symbol(id, Decl(aliasUsedAsNameValue_0.ts, 0, 10))
=== tests/cases/compiler/aliasUsedAsNameValue_1.ts ===
export function b(a: any): any { return null; }
->b : (a: any) => any
->a : any
+>b : (a: any) => any, Symbol(b, Decl(aliasUsedAsNameValue_1.ts, 0, 0))
+>a : any, Symbol(a, Decl(aliasUsedAsNameValue_1.ts, 0, 18))
+>null : null
diff --git a/tests/baselines/reference/ambientClassDeclarationWithExtends.types b/tests/baselines/reference/ambientClassDeclarationWithExtends.types
index 7609856882b..b8d3df42f2b 100644
--- a/tests/baselines/reference/ambientClassDeclarationWithExtends.types
+++ b/tests/baselines/reference/ambientClassDeclarationWithExtends.types
@@ -1,8 +1,8 @@
=== tests/cases/compiler/ambientClassDeclarationWithExtends.ts ===
declare class A { }
->A : A
+>A : A, Symbol(A, Decl(ambientClassDeclarationWithExtends.ts, 0, 0))
declare class B extends A { }
->B : B
->A : A
+>B : B, Symbol(B, Decl(ambientClassDeclarationWithExtends.ts, 0, 19))
+>A : A, Symbol(A, Decl(ambientClassDeclarationWithExtends.ts, 0, 0))
diff --git a/tests/baselines/reference/ambientDeclarations.types b/tests/baselines/reference/ambientDeclarations.types
index 38814405521..0bc407c7ef4 100644
--- a/tests/baselines/reference/ambientDeclarations.types
+++ b/tests/baselines/reference/ambientDeclarations.types
@@ -1,168 +1,170 @@
=== tests/cases/conformance/ambient/ambientDeclarations.ts ===
// Ambient variable without type annotation
declare var n;
->n : any
+>n : any, Symbol(n, Decl(ambientDeclarations.ts, 1, 11))
// Ambient variable with type annotation
declare var m: string;
->m : string
+>m : string, Symbol(m, Decl(ambientDeclarations.ts, 4, 11))
// Ambient function with no type annotations
declare function fn1();
->fn1 : () => any
+>fn1 : () => any, Symbol(fn1, Decl(ambientDeclarations.ts, 4, 22))
// Ambient function with type annotations
declare function fn2(n: string): number;
->fn2 : (n: string) => number
->n : string
+>fn2 : (n: string) => number, Symbol(fn2, Decl(ambientDeclarations.ts, 7, 23))
+>n : string, Symbol(n, Decl(ambientDeclarations.ts, 10, 21))
// Ambient function with valid overloads
declare function fn3(n: string): number;
->fn3 : (n: string) => number
->n : string
+>fn3 : (n: string) => number, Symbol(fn3, Decl(ambientDeclarations.ts, 10, 40))
+>n : string, Symbol(n, Decl(ambientDeclarations.ts, 13, 21))
declare function fn4(n: number, y: number): string;
->fn4 : (n: number, y: number) => string
->n : number
->y : number
+>fn4 : (n: number, y: number) => string, Symbol(fn4, Decl(ambientDeclarations.ts, 13, 40))
+>n : number, Symbol(n, Decl(ambientDeclarations.ts, 14, 21))
+>y : number, Symbol(y, Decl(ambientDeclarations.ts, 14, 31))
// Ambient function with optional parameters
declare function fn5(x, y?);
->fn5 : (x: any, y?: any) => any
->x : any
->y : any
+>fn5 : (x: any, y?: any) => any, Symbol(fn5, Decl(ambientDeclarations.ts, 14, 51))
+>x : any, Symbol(x, Decl(ambientDeclarations.ts, 17, 21))
+>y : any, Symbol(y, Decl(ambientDeclarations.ts, 17, 23))
declare function fn6(e?);
->fn6 : (e?: any) => any
->e : any
+>fn6 : (e?: any) => any, Symbol(fn6, Decl(ambientDeclarations.ts, 17, 28))
+>e : any, Symbol(e, Decl(ambientDeclarations.ts, 18, 21))
declare function fn7(x, y?, ...z);
->fn7 : (x: any, y?: any, ...z: any[]) => any
->x : any
->y : any
->z : any[]
+>fn7 : (x: any, y?: any, ...z: any[]) => any, Symbol(fn7, Decl(ambientDeclarations.ts, 18, 25))
+>x : any, Symbol(x, Decl(ambientDeclarations.ts, 19, 21))
+>y : any, Symbol(y, Decl(ambientDeclarations.ts, 19, 23))
+>z : any[], Symbol(z, Decl(ambientDeclarations.ts, 19, 27))
declare function fn8(y?, ...z: number[]);
->fn8 : (y?: any, ...z: number[]) => any
->y : any
->z : number[]
+>fn8 : (y?: any, ...z: number[]) => any, Symbol(fn8, Decl(ambientDeclarations.ts, 19, 34))
+>y : any, Symbol(y, Decl(ambientDeclarations.ts, 20, 21))
+>z : number[], Symbol(z, Decl(ambientDeclarations.ts, 20, 24))
declare function fn9(...q: {}[]);
->fn9 : (...q: {}[]) => any
->q : {}[]
+>fn9 : (...q: {}[]) => any, Symbol(fn9, Decl(ambientDeclarations.ts, 20, 41))
+>q : {}[], Symbol(q, Decl(ambientDeclarations.ts, 21, 21))
declare function fn10(...q: T[]);
->fn10 : (...q: T[]) => any
->T : T
->q : T[]
->T : T
+>fn10 : (...q: T[]) => any, Symbol(fn10, Decl(ambientDeclarations.ts, 21, 33))
+>T : T, Symbol(T, Decl(ambientDeclarations.ts, 22, 22))
+>q : T[], Symbol(q, Decl(ambientDeclarations.ts, 22, 25))
+>T : T, Symbol(T, Decl(ambientDeclarations.ts, 22, 22))
// Ambient class
declare class cls {
->cls : cls
+>cls : cls, Symbol(cls, Decl(ambientDeclarations.ts, 22, 36))
constructor();
method(): cls;
->method : () => cls
->cls : cls
+>method : () => cls, Symbol(method, Decl(ambientDeclarations.ts, 26, 18))
+>cls : cls, Symbol(cls, Decl(ambientDeclarations.ts, 22, 36))
static static(p): number;
->static : (p: any) => number
->p : any
+>static : (p: any) => number, Symbol(cls.static, Decl(ambientDeclarations.ts, 27, 18))
+>p : any, Symbol(p, Decl(ambientDeclarations.ts, 28, 18))
static q;
->q : any
+>q : any, Symbol(cls.q, Decl(ambientDeclarations.ts, 28, 29))
private fn();
->fn : () => any
+>fn : () => any, Symbol(fn, Decl(ambientDeclarations.ts, 29, 13))
private static fns();
->fns : () => any
+>fns : () => any, Symbol(cls.fns, Decl(ambientDeclarations.ts, 30, 17))
}
// Ambient enum
declare enum E1 {
->E1 : E1
+>E1 : E1, Symbol(E1, Decl(ambientDeclarations.ts, 32, 1))
x,
->x : E1
+>x : E1, Symbol(E1.x, Decl(ambientDeclarations.ts, 35, 17))
y,
->y : E1
+>y : E1, Symbol(E1.y, Decl(ambientDeclarations.ts, 36, 6))
z
->z : E1
+>z : E1, Symbol(E1.z, Decl(ambientDeclarations.ts, 37, 6))
}
// Ambient enum with integer literal initializer
declare enum E2 {
->E2 : E2
+>E2 : E2, Symbol(E2, Decl(ambientDeclarations.ts, 39, 1))
q,
->q : E2
+>q : E2, Symbol(E2.q, Decl(ambientDeclarations.ts, 42, 17))
a = 1,
->a : E2
+>a : E2, Symbol(E2.a, Decl(ambientDeclarations.ts, 43, 6))
+>1 : number
b,
->b : E2
+>b : E2, Symbol(E2.b, Decl(ambientDeclarations.ts, 44, 10))
c = 2,
->c : E2
+>c : E2, Symbol(E2.c, Decl(ambientDeclarations.ts, 45, 6))
+>2 : number
d
->d : E2
+>d : E2, Symbol(E2.d, Decl(ambientDeclarations.ts, 46, 10))
}
// Ambient enum members are always exported with or without export keyword
declare enum E3 {
->E3 : E3
+>E3 : E3, Symbol(E3, Decl(ambientDeclarations.ts, 48, 1), Decl(ambientDeclarations.ts, 53, 1))
A
->A : E3
+>A : E3, Symbol(E3.A, Decl(ambientDeclarations.ts, 51, 17))
}
declare module E3 {
->E3 : typeof E3
+>E3 : typeof E3, Symbol(E3, Decl(ambientDeclarations.ts, 48, 1), Decl(ambientDeclarations.ts, 53, 1))
var B;
->B : any
+>B : any, Symbol(B, Decl(ambientDeclarations.ts, 55, 7))
}
var x = E3.B;
->x : any
->E3.B : any
->E3 : typeof E3
->B : any
+>x : any, Symbol(x, Decl(ambientDeclarations.ts, 57, 3))
+>E3.B : any, Symbol(E3.B, Decl(ambientDeclarations.ts, 55, 7))
+>E3 : typeof E3, Symbol(E3, Decl(ambientDeclarations.ts, 48, 1), Decl(ambientDeclarations.ts, 53, 1))
+>B : any, Symbol(E3.B, Decl(ambientDeclarations.ts, 55, 7))
// Ambient module
declare module M1 {
->M1 : typeof M1
+>M1 : typeof M1, Symbol(M1, Decl(ambientDeclarations.ts, 57, 13))
var x;
->x : any
+>x : any, Symbol(x, Decl(ambientDeclarations.ts, 61, 7))
function fn(): number;
->fn : () => number
+>fn : () => number, Symbol(fn, Decl(ambientDeclarations.ts, 61, 10))
}
// Ambient module members are always exported with or without export keyword
var p = M1.x;
->p : any
->M1.x : any
->M1 : typeof M1
->x : any
+>p : any, Symbol(p, Decl(ambientDeclarations.ts, 66, 3))
+>M1.x : any, Symbol(M1.x, Decl(ambientDeclarations.ts, 61, 7))
+>M1 : typeof M1, Symbol(M1, Decl(ambientDeclarations.ts, 57, 13))
+>x : any, Symbol(M1.x, Decl(ambientDeclarations.ts, 61, 7))
var q = M1.fn();
->q : number
+>q : number, Symbol(q, Decl(ambientDeclarations.ts, 67, 3))
>M1.fn() : number
->M1.fn : () => number
->M1 : typeof M1
->fn : () => number
+>M1.fn : () => number, Symbol(M1.fn, Decl(ambientDeclarations.ts, 61, 10))
+>M1 : typeof M1, Symbol(M1, Decl(ambientDeclarations.ts, 57, 13))
+>fn : () => number, Symbol(M1.fn, Decl(ambientDeclarations.ts, 61, 10))
// Ambient external module in the global module
// Ambient external module with a string literal name that is a top level external module name
declare module 'external1' {
var q;
->q : any
+>q : any, Symbol(q, Decl(ambientDeclarations.ts, 72, 7))
}
diff --git a/tests/baselines/reference/ambientEnumElementInitializer1.types b/tests/baselines/reference/ambientEnumElementInitializer1.types
index da80015cbd5..7239ccac246 100644
--- a/tests/baselines/reference/ambientEnumElementInitializer1.types
+++ b/tests/baselines/reference/ambientEnumElementInitializer1.types
@@ -1,7 +1,8 @@
=== tests/cases/compiler/ambientEnumElementInitializer1.ts ===
declare enum E {
->E : E
+>E : E, Symbol(E, Decl(ambientEnumElementInitializer1.ts, 0, 0))
e = 3
->e : E
+>e : E, Symbol(E.e, Decl(ambientEnumElementInitializer1.ts, 0, 16))
+>3 : number
}
diff --git a/tests/baselines/reference/ambientEnumElementInitializer2.types b/tests/baselines/reference/ambientEnumElementInitializer2.types
index cb1414630b9..61ef74cb6bf 100644
--- a/tests/baselines/reference/ambientEnumElementInitializer2.types
+++ b/tests/baselines/reference/ambientEnumElementInitializer2.types
@@ -1,8 +1,9 @@
=== tests/cases/compiler/ambientEnumElementInitializer2.ts ===
declare enum E {
->E : E
+>E : E, Symbol(E, Decl(ambientEnumElementInitializer2.ts, 0, 0))
e = -3 // Negative
->e : E
+>e : E, Symbol(E.e, Decl(ambientEnumElementInitializer2.ts, 0, 16))
>-3 : number
+>3 : number
}
diff --git a/tests/baselines/reference/ambientEnumElementInitializer4.types b/tests/baselines/reference/ambientEnumElementInitializer4.types
index 566c03103a1..ea7664ae6c6 100644
--- a/tests/baselines/reference/ambientEnumElementInitializer4.types
+++ b/tests/baselines/reference/ambientEnumElementInitializer4.types
@@ -1,7 +1,8 @@
=== tests/cases/compiler/ambientEnumElementInitializer4.ts ===
declare enum E {
->E : E
+>E : E, Symbol(E, Decl(ambientEnumElementInitializer4.ts, 0, 0))
e = 0xA
->e : E
+>e : E, Symbol(E.e, Decl(ambientEnumElementInitializer4.ts, 0, 16))
+>0xA : number
}
diff --git a/tests/baselines/reference/ambientEnumElementInitializer5.types b/tests/baselines/reference/ambientEnumElementInitializer5.types
index 3b6198f0e24..cb6fdc29fc1 100644
--- a/tests/baselines/reference/ambientEnumElementInitializer5.types
+++ b/tests/baselines/reference/ambientEnumElementInitializer5.types
@@ -1,8 +1,9 @@
=== tests/cases/compiler/ambientEnumElementInitializer5.ts ===
declare enum E {
->E : E
+>E : E, Symbol(E, Decl(ambientEnumElementInitializer5.ts, 0, 0))
e = -0xA
->e : E
+>e : E, Symbol(E.e, Decl(ambientEnumElementInitializer5.ts, 0, 16))
>-0xA : number
+>0xA : number
}
diff --git a/tests/baselines/reference/ambientEnumElementInitializer6.types b/tests/baselines/reference/ambientEnumElementInitializer6.types
index 3a38fd6912d..1756629e4f2 100644
--- a/tests/baselines/reference/ambientEnumElementInitializer6.types
+++ b/tests/baselines/reference/ambientEnumElementInitializer6.types
@@ -1,11 +1,12 @@
=== tests/cases/compiler/ambientEnumElementInitializer6.ts ===
declare module M {
->M : typeof M
+>M : typeof M, Symbol(M, Decl(ambientEnumElementInitializer6.ts, 0, 0))
enum E {
->E : E
+>E : E, Symbol(E, Decl(ambientEnumElementInitializer6.ts, 0, 18))
e = 3
->e : E
+>e : E, Symbol(E.e, Decl(ambientEnumElementInitializer6.ts, 1, 12))
+>3 : number
}
}
diff --git a/tests/baselines/reference/ambientExternalModuleMerging.types b/tests/baselines/reference/ambientExternalModuleMerging.types
index 1c1be0fd256..716cc64f248 100644
--- a/tests/baselines/reference/ambientExternalModuleMerging.types
+++ b/tests/baselines/reference/ambientExternalModuleMerging.types
@@ -1,28 +1,28 @@
=== tests/cases/conformance/ambient/ambientExternalModuleMerging_use.ts ===
import M = require("M");
->M : typeof M
+>M : typeof M, Symbol(M, Decl(ambientExternalModuleMerging_use.ts, 0, 0))
// Should be strings
var x = M.x;
->x : string
->M.x : string
->M : typeof M
->x : string
+>x : string, Symbol(x, Decl(ambientExternalModuleMerging_use.ts, 2, 3))
+>M.x : string, Symbol(M.x, Decl(ambientExternalModuleMerging_declare.ts, 1, 14))
+>M : typeof M, Symbol(M, Decl(ambientExternalModuleMerging_use.ts, 0, 0))
+>x : string, Symbol(M.x, Decl(ambientExternalModuleMerging_declare.ts, 1, 14))
var y = M.y;
->y : string
->M.y : string
->M : typeof M
->y : string
+>y : string, Symbol(y, Decl(ambientExternalModuleMerging_use.ts, 3, 3))
+>M.y : string, Symbol(M.y, Decl(ambientExternalModuleMerging_declare.ts, 6, 14))
+>M : typeof M, Symbol(M, Decl(ambientExternalModuleMerging_use.ts, 0, 0))
+>y : string, Symbol(M.y, Decl(ambientExternalModuleMerging_declare.ts, 6, 14))
=== tests/cases/conformance/ambient/ambientExternalModuleMerging_declare.ts ===
declare module "M" {
export var x: string;
->x : string
+>x : string, Symbol(x, Decl(ambientExternalModuleMerging_declare.ts, 1, 14))
}
// Merge
declare module "M" {
export var y: string;
->y : string
+>y : string, Symbol(y, Decl(ambientExternalModuleMerging_declare.ts, 6, 14))
}
diff --git a/tests/baselines/reference/ambientExternalModuleReopen.types b/tests/baselines/reference/ambientExternalModuleReopen.types
index 842d634344c..fdc40f4cd4b 100644
--- a/tests/baselines/reference/ambientExternalModuleReopen.types
+++ b/tests/baselines/reference/ambientExternalModuleReopen.types
@@ -1,9 +1,9 @@
=== tests/cases/compiler/ambientExternalModuleReopen.ts ===
declare module "fs" {
var x: string;
->x : string
+>x : string, Symbol(x, Decl(ambientExternalModuleReopen.ts, 1, 7))
}
declare module 'fs' {
var y: number;
->y : number
+>y : number, Symbol(y, Decl(ambientExternalModuleReopen.ts, 4, 7))
}
diff --git a/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types b/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types
index 4e9043d1b75..2bd3929e286 100644
--- a/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types
+++ b/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types
@@ -1,33 +1,33 @@
=== tests/cases/compiler/ambientExternalModuleWithInternalImportDeclaration_1.ts ===
///
import A = require('M');
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ambientExternalModuleWithInternalImportDeclaration_1.ts, 0, 0))
var c = new A();
->c : A
+>c : A, Symbol(c, Decl(ambientExternalModuleWithInternalImportDeclaration_1.ts, 2, 3))
>new A() : A
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ambientExternalModuleWithInternalImportDeclaration_1.ts, 0, 0))
=== tests/cases/compiler/ambientExternalModuleWithInternalImportDeclaration_0.ts ===
declare module 'M' {
module C {
->C : typeof C
+>C : typeof C, Symbol(C, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 3, 5))
export var f: number;
->f : number
+>f : number, Symbol(f, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 2, 18))
}
class C {
->C : C
+>C : C, Symbol(C, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 3, 5))
foo(): void;
->foo : () => void
+>foo : () => void, Symbol(foo, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 4, 13))
}
import X = C;
->X : typeof C
->C : C
+>X : typeof C, Symbol(X, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 6, 5))
+>C : C, Symbol(C, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 3, 5))
export = X;
->X : C
+>X : C, Symbol(X, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 6, 5))
}
diff --git a/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.types b/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.types
index 0029817400b..7131f7bbe8b 100644
--- a/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.types
+++ b/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.types
@@ -1,29 +1,29 @@
=== tests/cases/compiler/ambientExternalModuleWithoutInternalImportDeclaration_1.ts ===
///
import A = require('M');
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ambientExternalModuleWithoutInternalImportDeclaration_1.ts, 0, 0))
var c = new A();
->c : A
+>c : A, Symbol(c, Decl(ambientExternalModuleWithoutInternalImportDeclaration_1.ts, 2, 3))
>new A() : A
->A : typeof A
+>A : typeof A, Symbol(A, Decl(ambientExternalModuleWithoutInternalImportDeclaration_1.ts, 0, 0))
=== tests/cases/compiler/ambientExternalModuleWithoutInternalImportDeclaration_0.ts ===
declare module 'M' {
module C {
->C : typeof C
+>C : typeof C, Symbol(C, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 3, 5))
export var f: number;
->f : number
+>f : number, Symbol(f, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 2, 18))
}
class C {
->C : C
+>C : C, Symbol(C, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 3, 5))
foo(): void;
->foo : () => void
+>foo : () => void, Symbol(foo, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 4, 13))
}
export = C;
->C : C
+>C : C, Symbol(C, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 3, 5))
}
diff --git a/tests/baselines/reference/ambientFundule.types b/tests/baselines/reference/ambientFundule.types
index edd2290859c..686c7c6fb85 100644
--- a/tests/baselines/reference/ambientFundule.types
+++ b/tests/baselines/reference/ambientFundule.types
@@ -1,12 +1,12 @@
=== tests/cases/compiler/ambientFundule.ts ===
declare function f();
->f : typeof f
+>f : typeof f, Symbol(f, Decl(ambientFundule.ts, 0, 0), Decl(ambientFundule.ts, 0, 21), Decl(ambientFundule.ts, 1, 26))
declare module f { var x }
->f : typeof f
->x : any
+>f : typeof f, Symbol(f, Decl(ambientFundule.ts, 0, 0), Decl(ambientFundule.ts, 0, 21), Decl(ambientFundule.ts, 1, 26))
+>x : any, Symbol(x, Decl(ambientFundule.ts, 1, 22))
declare function f(x);
->f : typeof f
->x : any
+>f : typeof f, Symbol(f, Decl(ambientFundule.ts, 0, 0), Decl(ambientFundule.ts, 0, 21), Decl(ambientFundule.ts, 1, 26))
+>x : any, Symbol(x, Decl(ambientFundule.ts, 2, 19))
diff --git a/tests/baselines/reference/ambientInsideNonAmbient.types b/tests/baselines/reference/ambientInsideNonAmbient.types
index ee654aee333..6ccc20aba93 100644
--- a/tests/baselines/reference/ambientInsideNonAmbient.types
+++ b/tests/baselines/reference/ambientInsideNonAmbient.types
@@ -1,38 +1,38 @@
=== tests/cases/conformance/ambient/ambientInsideNonAmbient.ts ===
module M {
->M : typeof M
+>M : typeof M, Symbol(M, Decl(ambientInsideNonAmbient.ts, 0, 0))
export declare var x;
->x : any
+>x : any, Symbol(x, Decl(ambientInsideNonAmbient.ts, 1, 22))
export declare function f();
->f : () => any
+>f : () => any, Symbol(f, Decl(ambientInsideNonAmbient.ts, 1, 25))
export declare class C { }
->C : C
+>C : C, Symbol(C, Decl(ambientInsideNonAmbient.ts, 2, 32))
export declare enum E { }
->E : E
+>E : E, Symbol(E, Decl(ambientInsideNonAmbient.ts, 3, 30))
export declare module M { }
->M : unknown
+>M : any, Symbol(M, Decl(ambientInsideNonAmbient.ts, 4, 29))
}
module M2 {
->M2 : typeof M2
+>M2 : typeof M2, Symbol(M2, Decl(ambientInsideNonAmbient.ts, 6, 1))
declare var x;
->x : any
+>x : any, Symbol(x, Decl(ambientInsideNonAmbient.ts, 9, 15))
declare function f();
->f : () => any
+>f : () => any, Symbol(f, Decl(ambientInsideNonAmbient.ts, 9, 18))
declare class C { }
->C : C
+>C : C, Symbol(C, Decl(ambientInsideNonAmbient.ts, 10, 25))
declare enum E { }
->E : E
+>E : E, Symbol(E, Decl(ambientInsideNonAmbient.ts, 11, 23))
declare module M { }
->M : unknown
+>M : any, Symbol(M, Decl(ambientInsideNonAmbient.ts, 12, 22))
}
diff --git a/tests/baselines/reference/ambientInsideNonAmbientExternalModule.types b/tests/baselines/reference/ambientInsideNonAmbientExternalModule.types
index bda7a61a7f3..698b963c78d 100644
--- a/tests/baselines/reference/ambientInsideNonAmbientExternalModule.types
+++ b/tests/baselines/reference/ambientInsideNonAmbientExternalModule.types
@@ -1,16 +1,16 @@
=== tests/cases/conformance/ambient/ambientInsideNonAmbientExternalModule.ts ===
export declare var x;
->x : any
+>x : any, Symbol(x, Decl(ambientInsideNonAmbientExternalModule.ts, 0, 18))
export declare function f();
->f : () => any
+>f : () => any, Symbol(f, Decl(ambientInsideNonAmbientExternalModule.ts, 0, 21))
export declare class C { }
->C : C
+>C : C, Symbol(C, Decl(ambientInsideNonAmbientExternalModule.ts, 1, 28))
export declare enum E { }
->E : E
+>E : E, Symbol(E, Decl(ambientInsideNonAmbientExternalModule.ts, 2, 26))
export declare module M { }
->M : unknown
+>M : any, Symbol(M, Decl(ambientInsideNonAmbientExternalModule.ts, 3, 25))
diff --git a/tests/baselines/reference/ambientModuleExports.types b/tests/baselines/reference/ambientModuleExports.types
index 3f096afa838..8149ab0c5f9 100644
--- a/tests/baselines/reference/ambientModuleExports.types
+++ b/tests/baselines/reference/ambientModuleExports.types
@@ -1,63 +1,63 @@
=== tests/cases/compiler/ambientModuleExports.ts ===
declare module Foo {
->Foo : typeof Foo
+>Foo : typeof Foo, Symbol(Foo, Decl(ambientModuleExports.ts, 0, 0))
function a():void;
->a : () => void
+>a : () => void, Symbol(a, Decl(ambientModuleExports.ts, 0, 20))
var b:number;
->b : number
+>b : number, Symbol(b, Decl(ambientModuleExports.ts, 2, 4))
class C {}
->C : C
+>C : C, Symbol(C, Decl(ambientModuleExports.ts, 2, 14))
}
Foo.a();
>Foo.a() : void
->Foo.a : () => void
->Foo : typeof Foo
->a : () => void
+>Foo.a : () => void, Symbol(Foo.a, Decl(ambientModuleExports.ts, 0, 20))
+>Foo : typeof Foo, Symbol(Foo, Decl(ambientModuleExports.ts, 0, 0))
+>a : () => void, Symbol(Foo.a, Decl(ambientModuleExports.ts, 0, 20))
Foo.b;
->Foo.b : number
->Foo : typeof Foo
->b : number
+>Foo.b : number, Symbol(Foo.b, Decl(ambientModuleExports.ts, 2, 4))
+>Foo : typeof Foo, Symbol(Foo, Decl(ambientModuleExports.ts, 0, 0))
+>b : number, Symbol(Foo.b, Decl(ambientModuleExports.ts, 2, 4))
var c = new Foo.C();
->c : Foo.C
+>c : Foo.C, Symbol(c, Decl(ambientModuleExports.ts, 8, 3))
>new Foo.C() : Foo.C
->Foo.C : typeof Foo.C
->Foo : typeof Foo
->C : typeof Foo.C
+>Foo.C : typeof Foo.C, Symbol(Foo.C, Decl(ambientModuleExports.ts, 2, 14))
+>Foo : typeof Foo, Symbol(Foo, Decl(ambientModuleExports.ts, 0, 0))
+>C : typeof Foo.C, Symbol(Foo.C, Decl(ambientModuleExports.ts, 2, 14))
declare module Foo2 {
->Foo2 : typeof Foo2
+>Foo2 : typeof Foo2, Symbol(Foo2, Decl(ambientModuleExports.ts, 8, 20))
export function a(): void;
->a : () => void
+>a : () => void, Symbol(a, Decl(ambientModuleExports.ts, 10, 21))
export var b: number;
->b : number
+>b : number, Symbol(b, Decl(ambientModuleExports.ts, 12, 14))
export class C { }
->C : C
+>C : C, Symbol(C, Decl(ambientModuleExports.ts, 12, 25))
}
Foo2.a();
>Foo2.a() : void
->Foo2.a : () => void
->Foo2 : typeof Foo2
->a : () => void
+>Foo2.a : () => void, Symbol(Foo2.a, Decl(ambientModuleExports.ts, 10, 21))
+>Foo2 : typeof Foo2, Symbol(Foo2, Decl(ambientModuleExports.ts, 8, 20))
+>a : () => void, Symbol(Foo2.a, Decl(ambientModuleExports.ts, 10, 21))
Foo2.b;
->Foo2.b : number
->Foo2 : typeof Foo2
->b : number
+>Foo2.b : number, Symbol(Foo2.b, Decl(ambientModuleExports.ts, 12, 14))
+>Foo2 : typeof Foo2, Symbol(Foo2, Decl(ambientModuleExports.ts, 8, 20))
+>b : number, Symbol(Foo2.b, Decl(ambientModuleExports.ts, 12, 14))
var c2 = new Foo2.C();
->c2 : Foo2.C
+>c2 : Foo2.C, Symbol(c2, Decl(ambientModuleExports.ts, 18, 3))
>new Foo2.C() : Foo2.C
->Foo2.C : typeof Foo2.C
->Foo2 : typeof Foo2
->C : typeof Foo2.C
+>Foo2.C : typeof Foo2.C, Symbol(Foo2.C, Decl(ambientModuleExports.ts, 12, 25))
+>Foo2 : typeof Foo2, Symbol(Foo2, Decl(ambientModuleExports.ts, 8, 20))
+>C : typeof Foo2.C, Symbol(Foo2.C, Decl(ambientModuleExports.ts, 12, 25))
diff --git a/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types b/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types
index 2708946518f..c2036fd70ae 100644
--- a/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types
+++ b/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types
@@ -1,11 +1,11 @@
=== tests/cases/compiler/ambientModuleWithClassDeclarationWithExtends.ts ===
declare module foo {
->foo : typeof foo
+>foo : typeof foo, Symbol(foo, Decl(ambientModuleWithClassDeclarationWithExtends.ts, 0, 0))
class A { }
->A : A
+>A : A, Symbol(A, Decl(ambientModuleWithClassDeclarationWithExtends.ts, 0, 20))
class B extends A { }
->B : B
->A : A
+>B : B, Symbol(B, Decl(ambientModuleWithClassDeclarationWithExtends.ts, 1, 15))
+>A : A, Symbol(A, Decl(ambientModuleWithClassDeclarationWithExtends.ts, 0, 20))
}
diff --git a/tests/baselines/reference/ambientModules.types b/tests/baselines/reference/ambientModules.types
index fe0aceef810..1484888e14e 100644
--- a/tests/baselines/reference/ambientModules.types
+++ b/tests/baselines/reference/ambientModules.types
@@ -1,14 +1,15 @@
=== tests/cases/compiler/ambientModules.ts ===
declare module Foo.Bar { export var foo; };
->Foo : typeof Foo
->Bar : typeof Bar
->foo : any
+>Foo : typeof Foo, Symbol(Foo, Decl(ambientModules.ts, 0, 0))
+>Bar : typeof Bar, Symbol(Bar, Decl(ambientModules.ts, 0, 19))
+>foo : any, Symbol(foo, Decl(ambientModules.ts, 0, 35))
Foo.Bar.foo = 5;
>Foo.Bar.foo = 5 : number
->Foo.Bar.foo : any
->Foo.Bar : typeof Foo.Bar
->Foo : typeof Foo
->Bar : typeof Foo.Bar
->foo : any
+>Foo.Bar.foo : any, Symbol(Foo.Bar.foo, Decl(ambientModules.ts, 0, 35))
+>Foo.Bar : typeof Foo.Bar, Symbol(Foo.Bar, Decl(ambientModules.ts, 0, 19))
+>Foo : typeof Foo, Symbol(Foo, Decl(ambientModules.ts, 0, 0))
+>Bar : typeof Foo.Bar, Symbol(Foo.Bar, Decl(ambientModules.ts, 0, 19))
+>foo : any, Symbol(Foo.Bar.foo, Decl(ambientModules.ts, 0, 35))
+>5 : number
diff --git a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types
index 4e508ba2df5..16d4d6f7d40 100644
--- a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types
+++ b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types
@@ -1,78 +1,79 @@
=== tests/cases/compiler/ambiguousCallsWhereReturnTypesAgree.ts ===
class TestClass {
->TestClass : TestClass
+>TestClass : TestClass, Symbol(TestClass, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 0))
public bar(x: string): void;
->bar : { (x: string): void; (x: string[]): void; }
->x : string
+>bar : { (x: string): void; (x: string[]): void; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34))
+>x : string, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 15))
public bar(x: string[]): void;
->bar : { (x: string): void; (x: string[]): void; }
->x : string[]
+>bar : { (x: string): void; (x: string[]): void; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34))
+>x : string[], Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 15))
public bar(x: any): void {
->bar : { (x: string): void; (x: string[]): void; }
->x : any
+>bar : { (x: string): void; (x: string[]): void; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34))
+>x : any, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 3, 15))
}
public foo(x: string): void;
->foo : { (x: string): void; (x: string[]): void; }
->x : string
+>foo : { (x: string): void; (x: string[]): void; }, Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34))
+>x : string, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 15))
public foo(x: string[]): void;
->foo : { (x: string): void; (x: string[]): void; }
->x : string[]
+>foo : { (x: string): void; (x: string[]): void; }, Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34))
+>x : string[], Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 15))
public foo(x: any): void {
->foo : { (x: string): void; (x: string[]): void; }
->x : any
+>foo : { (x: string): void; (x: string[]): void; }, Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34))
+>x : any, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 9, 15))
this.bar(x); // should not error
>this.bar(x) : void
->this.bar : { (x: string): void; (x: string[]): void; }
->this : TestClass
->bar : { (x: string): void; (x: string[]): void; }
->x : any
+>this.bar : { (x: string): void; (x: string[]): void; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34))
+>this : TestClass, Symbol(TestClass, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 0))
+>bar : { (x: string): void; (x: string[]): void; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34))
+>x : any, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 9, 15))
}
}
class TestClass2 {
->TestClass2 : TestClass2
+>TestClass2 : TestClass2, Symbol(TestClass2, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 12, 1))
public bar(x: string): number;
->bar : { (x: string): number; (x: string[]): number; }
->x : string
+>bar : { (x: string): number; (x: string[]): number; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36))
+>x : string, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 15))
public bar(x: string[]): number;
->bar : { (x: string): number; (x: string[]): number; }
->x : string[]
+>bar : { (x: string): number; (x: string[]): number; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36))
+>x : string[], Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 15))
public bar(x: any): number {
->bar : { (x: string): number; (x: string[]): number; }
->x : any
+>bar : { (x: string): number; (x: string[]): number; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36))
+>x : any, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 17, 15))
return 0;
+>0 : number
}
public foo(x: string): number;
->foo : { (x: string): number; (x: string[]): number; }
->x : string
+>foo : { (x: string): number; (x: string[]): number; }, Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36))
+>x : string, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 15))
public foo(x: string[]): number;
->foo : { (x: string): number; (x: string[]): number; }
->x : string[]
+>foo : { (x: string): number; (x: string[]): number; }, Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36))
+>x : string[], Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 15))
public foo(x: any): number {
->foo : { (x: string): number; (x: string[]): number; }
->x : any
+>foo : { (x: string): number; (x: string[]): number; }, Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36))
+>x : any, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 23, 15))
return this.bar(x); // should not error
>this.bar(x) : number
->this.bar : { (x: string): number; (x: string[]): number; }
->this : TestClass2
->bar : { (x: string): number; (x: string[]): number; }
->x : any
+>this.bar : { (x: string): number; (x: string[]): number; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36))
+>this : TestClass2, Symbol(TestClass2, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 12, 1))
+>bar : { (x: string): number; (x: string[]): number; }, Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36))
+>x : any, Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 23, 15))
}
}
diff --git a/tests/baselines/reference/ambiguousOverloadResolution.types b/tests/baselines/reference/ambiguousOverloadResolution.types
index dd42b44d7c3..94d8a590155 100644
--- a/tests/baselines/reference/ambiguousOverloadResolution.types
+++ b/tests/baselines/reference/ambiguousOverloadResolution.types
@@ -1,34 +1,34 @@
=== tests/cases/compiler/ambiguousOverloadResolution.ts ===
class A { }
->A : A
+>A : A, Symbol(A, Decl(ambiguousOverloadResolution.ts, 0, 0))
class B extends A { x: number; }
->B : B
->A : A
->x : number
+>B : B, Symbol(B, Decl(ambiguousOverloadResolution.ts, 0, 11))
+>A : A, Symbol(A, Decl(ambiguousOverloadResolution.ts, 0, 0))
+>x : number, Symbol(x, Decl(ambiguousOverloadResolution.ts, 1, 19))
declare function f(p: A, q: B): number;
->f : { (p: A, q: B): number; (p: B, q: A): string; }
->p : A
->A : A
->q : B
->B : B
+>f : { (p: A, q: B): number; (p: B, q: A): string; }, Symbol(f, Decl(ambiguousOverloadResolution.ts, 1, 32), Decl(ambiguousOverloadResolution.ts, 3, 39))
+>p : A, Symbol(p, Decl(ambiguousOverloadResolution.ts, 3, 19))
+>A : A, Symbol(A, Decl(ambiguousOverloadResolution.ts, 0, 0))
+>q : B, Symbol(q, Decl(ambiguousOverloadResolution.ts, 3, 24))
+>B : B, Symbol(B, Decl(ambiguousOverloadResolution.ts, 0, 11))
declare function f(p: B, q: A): string;
->f : { (p: A, q: B): number; (p: B, q: A): string; }
->p : B
->B : B
->q : A
->A : A
+>f : { (p: A, q: B): number; (p: B, q: A): string; }, Symbol(f, Decl(ambiguousOverloadResolution.ts, 1, 32), Decl(ambiguousOverloadResolution.ts, 3, 39))
+>p : B, Symbol(p, Decl(ambiguousOverloadResolution.ts, 4, 19))
+>B : B, Symbol(B, Decl(ambiguousOverloadResolution.ts, 0, 11))
+>q : A, Symbol(q, Decl(ambiguousOverloadResolution.ts, 4, 24))
+>A : A, Symbol(A, Decl(ambiguousOverloadResolution.ts, 0, 0))
var x: B;
->x : B
->B : B
+>x : B, Symbol(x, Decl(ambiguousOverloadResolution.ts, 6, 3))
+>B : B, Symbol(B, Decl(ambiguousOverloadResolution.ts, 0, 11))
var t: number = f(x, x); // Not an error
->t : number
+>t : number, Symbol(t, Decl(ambiguousOverloadResolution.ts, 7, 3))
>f(x, x) : number
->f : { (p: A, q: B): number; (p: B, q: A): string; }
->x : B
->x : B
+>f : { (p: A, q: B): number; (p: B, q: A): string; }, Symbol(f, Decl(ambiguousOverloadResolution.ts, 1, 32), Decl(ambiguousOverloadResolution.ts, 3, 39))
+>x : B, Symbol(x, Decl(ambiguousOverloadResolution.ts, 6, 3))
+>x : B, Symbol(x, Decl(ambiguousOverloadResolution.ts, 6, 3))
diff --git a/tests/baselines/reference/amdImportAsPrimaryExpression.types b/tests/baselines/reference/amdImportAsPrimaryExpression.types
index f88bc9a1ffe..f055c162d09 100644
--- a/tests/baselines/reference/amdImportAsPrimaryExpression.types
+++ b/tests/baselines/reference/amdImportAsPrimaryExpression.types
@@ -1,25 +1,26 @@
=== tests/cases/conformance/externalModules/foo_1.ts ===
import foo = require("./foo_0");
->foo : typeof foo
+>foo : typeof foo, Symbol(foo, Decl(foo_1.ts, 0, 0))
if(foo.E1.A === 0){
>foo.E1.A === 0 : boolean
->foo.E1.A : foo.E1
->foo.E1 : typeof foo.E1
->foo : typeof foo
->E1 : typeof foo.E1
->A : foo.E1
+>foo.E1.A : foo.E1, Symbol(foo.E1.A, Decl(foo_0.ts, 0, 16))
+>foo.E1 : typeof foo.E1, Symbol(foo.E1, Decl(foo_0.ts, 0, 0))
+>foo : typeof foo, Symbol(foo, Decl(foo_1.ts, 0, 0))
+>E1 : typeof foo.E1, Symbol(foo.E1, Decl(foo_0.ts, 0, 0))
+>A : foo.E1, Symbol(foo.E1.A, Decl(foo_0.ts, 0, 16))
+>0 : number
// Should cause runtime import - interesting optimization possibility, as gets inlined to 0.
}
=== tests/cases/conformance/externalModules/foo_0.ts ===
export enum E1 {
->E1 : E1
+>E1 : E1, Symbol(E1, Decl(foo_0.ts, 0, 0))
A,B,C
->A : E1
->B : E1
->C : E1
+>A : E1, Symbol(E1.A, Decl(foo_0.ts, 0, 16))
+>B : E1, Symbol(E1.B, Decl(foo_0.ts, 1, 3))
+>C : E1, Symbol(E1.C, Decl(foo_0.ts, 1, 5))
}
diff --git a/tests/baselines/reference/amdImportNotAsPrimaryExpression.types b/tests/baselines/reference/amdImportNotAsPrimaryExpression.types
index bde0cb02b1e..61a55d73b0c 100644
--- a/tests/baselines/reference/amdImportNotAsPrimaryExpression.types
+++ b/tests/baselines/reference/amdImportNotAsPrimaryExpression.types
@@ -1,82 +1,88 @@
=== tests/cases/conformance/externalModules/foo_1.ts ===
import foo = require("./foo_0");
->foo : typeof foo
+>foo : typeof foo, Symbol(foo, Decl(foo_1.ts, 0, 0))
// None of the below should cause a runtime dependency on foo_0
import f = foo.M1;
->f : unknown
->foo : typeof foo
->M1 : unknown
+>f : any, Symbol(f, Decl(foo_1.ts, 0, 32))
+>foo : typeof foo, Symbol(foo, Decl(foo_0.ts, 0, 0))
+>M1 : any, Symbol(foo.M1, Decl(foo_0.ts, 8, 1))
var i: f.I2;
->i : f.I2
->f : unknown
->I2 : f.I2
+>i : f.I2, Symbol(i, Decl(foo_1.ts, 3, 3))
+>f : any, Symbol(f, Decl(foo_1.ts, 0, 32))
+>I2 : f.I2, Symbol(f.I2, Decl(foo_0.ts, 10, 18))
var x: foo.C1 = <{m1: number}>{};
->x : foo.C1
->foo : unknown
->C1 : foo.C1
+>x : foo.C1, Symbol(x, Decl(foo_1.ts, 4, 3))
+>foo : any, Symbol(foo, Decl(foo_1.ts, 0, 0))
+>C1 : foo.C1, Symbol(foo.C1, Decl(foo_0.ts, 0, 0))
><{m1: number}>{} : { m1: number; }
->m1 : number
+>m1 : number, Symbol(m1, Decl(foo_1.ts, 4, 18))
>{} : {}
var y: typeof foo.C1.s1 = false;
->y : boolean
->foo : typeof foo
->C1 : typeof foo.C1
->s1 : boolean
+>y : boolean, Symbol(y, Decl(foo_1.ts, 5, 3))
+>foo.C1.s1 : boolean, Symbol(foo.C1.s1, Decl(foo_0.ts, 1, 9))
+>foo.C1 : typeof foo.C1, Symbol(foo.C1, Decl(foo_0.ts, 0, 0))
+>foo : typeof foo, Symbol(foo, Decl(foo_1.ts, 0, 0))
+>C1 : typeof foo.C1, Symbol(foo.C1, Decl(foo_0.ts, 0, 0))
+>s1 : boolean, Symbol(foo.C1.s1, Decl(foo_0.ts, 1, 9))
+>false : boolean
var z: foo.M1.I2;
->z : f.I2
->foo : unknown
->M1 : unknown
->I2 : f.I2
+>z : f.I2, Symbol(z, Decl(foo_1.ts, 6, 3))
+>foo : any, Symbol(foo, Decl(foo_1.ts, 0, 0))
+>M1 : any, Symbol(foo.M1, Decl(foo_0.ts, 8, 1))
+>I2 : f.I2, Symbol(f.I2, Decl(foo_0.ts, 10, 18))
var e: number = 0;
->e : number
+>e : number, Symbol(e, Decl(foo_1.ts, 7, 3))
>0 : foo.E1
->foo : unknown
->E1 : foo.E1
+>foo : any, Symbol(foo, Decl(foo_1.ts, 0, 0))
+>E1 : foo.E1, Symbol(foo.E1, Decl(foo_0.ts, 14, 1))
+>0 : number
=== tests/cases/conformance/externalModules/foo_0.ts ===
export class C1 {
->C1 : C1
+>C1 : C1, Symbol(C1, Decl(foo_0.ts, 0, 0))
m1 = 42;
->m1 : number
+>m1 : number, Symbol(m1, Decl(foo_0.ts, 0, 17))
+>42 : number
static s1 = true;
->s1 : boolean
+>s1 : boolean, Symbol(C1.s1, Decl(foo_0.ts, 1, 9))
+>true : boolean
}
export interface I1 {
->I1 : I1
+>I1 : I1, Symbol(I1, Decl(foo_0.ts, 3, 1))
name: string;
->name : string
+>name : string, Symbol(name, Decl(foo_0.ts, 5, 21))
age: number;
->age : number
+>age : number, Symbol(age, Decl(foo_0.ts, 6, 14))
}
export module M1 {
->M1 : unknown
+>M1 : any, Symbol(M1, Decl(foo_0.ts, 8, 1))
export interface I2 {
->I2 : I2
+>I2 : I2, Symbol(I2, Decl(foo_0.ts, 10, 18))
foo: string;
->foo : string
+>foo : string, Symbol(foo, Decl(foo_0.ts, 11, 22))
}
}
export enum E1 {
->E1 : E1
+>E1 : E1, Symbol(E1, Decl(foo_0.ts, 14, 1))
A,B,C
->A : E1
->B : E1
->C : E1
+>A : E1, Symbol(E1.A, Decl(foo_0.ts, 16, 16))
+>B : E1, Symbol(E1.B, Decl(foo_0.ts, 17, 3))
+>C : E1, Symbol(E1.C, Decl(foo_0.ts, 17, 5))
}
diff --git a/tests/baselines/reference/amdModuleName1.types b/tests/baselines/reference/amdModuleName1.types
index 02ad9472354..90fdfcc9aa8 100644
--- a/tests/baselines/reference/amdModuleName1.types
+++ b/tests/baselines/reference/amdModuleName1.types
@@ -1,19 +1,20 @@
=== tests/cases/compiler/amdModuleName1.ts ===
///
class Foo {
->Foo : Foo
+>Foo : Foo, Symbol(Foo, Decl(amdModuleName1.ts, 0, 0))
x: number;
->x : number
+>x : number, Symbol(x, Decl(amdModuleName1.ts, 1, 11))
constructor() {
this.x = 5;
>this.x = 5 : number
->this.x : number
->this : Foo
->x : number
+>this.x : number, Symbol(x, Decl(amdModuleName1.ts, 1, 11))
+>this : Foo, Symbol(Foo, Decl(amdModuleName1.ts, 0, 0))
+>x : number, Symbol(x, Decl(amdModuleName1.ts, 1, 11))
+>5 : number
}
}
export = Foo;
->Foo : Foo
+>Foo : Foo, Symbol(Foo, Decl(amdModuleName1.ts, 0, 0))
diff --git a/tests/baselines/reference/anonterface.types b/tests/baselines/reference/anonterface.types
index 7b5b1401cac..1d84fe8f8e0 100644
--- a/tests/baselines/reference/anonterface.types
+++ b/tests/baselines/reference/anonterface.types
@@ -1,40 +1,42 @@
=== tests/cases/compiler/anonterface.ts ===
module M {
->M : typeof M
+>M : typeof M, Symbol(M, Decl(anonterface.ts, 0, 0))
export class C {
->C : C
+>C : C, Symbol(C, Decl(anonterface.ts, 0, 10))
m(fn:{ (n:number):string; },n2:number):string {
->m : (fn: (n: number) => string, n2: number) => string
->fn : (n: number) => string
->n : number
->n2 : number
+>m : (fn: (n: number) => string, n2: number) => string, Symbol(m, Decl(anonterface.ts, 1, 20))
+>fn : (n: number) => string, Symbol(fn, Decl(anonterface.ts, 2, 10))
+>n : number, Symbol(n, Decl(anonterface.ts, 2, 16))
+>n2 : number, Symbol(n2, Decl(anonterface.ts, 2, 36))
return fn(n2);
>fn(n2) : string
->fn : (n: number) => string
->n2 : number
+>fn : (n: number) => string, Symbol(fn, Decl(anonterface.ts, 2, 10))
+>n2 : number, Symbol(n2, Decl(anonterface.ts, 2, 36))
}
}
}
var c=new M.C();
->c : M.C
+>c : M.C, Symbol(c, Decl(anonterface.ts, 8, 3))
>new M.C() : M.C
->M.C : typeof M.C
->M : typeof M
->C : typeof M.C
+>M.C : typeof M.C, Symbol(M.C, Decl(anonterface.ts, 0, 10))
+>M : typeof M, Symbol(M, Decl(anonterface.ts, 0, 0))
+>C : typeof M.C, Symbol(M.C, Decl(anonterface.ts, 0, 10))
c.m(function(n) { return "hello: "+n; },18);
>c.m(function(n) { return "hello: "+n; },18) : string
->c.m : (fn: (n: number) => string, n2: number) => string
->c : M.C
->m : (fn: (n: number) => string, n2: number) => string
+>c.m : (fn: (n: number) => string, n2: number) => string, Symbol(M.C.m, Decl(anonterface.ts, 1, 20))
+>c : M.C, Symbol(c, Decl(anonterface.ts, 8, 3))
+>m : (fn: (n: number) => string, n2: number) => string, Symbol(M.C.m, Decl(anonterface.ts, 1, 20))
>function(n) { return "hello: "+n; } : (n: number) => string
->n : number
+>n : number, Symbol(n, Decl(anonterface.ts, 9, 13))
>"hello: "+n : string
->n : number
+>"hello: " : string
+>n : number, Symbol(n, Decl(anonterface.ts, 9, 13))
+>18 : number
diff --git a/tests/baselines/reference/anyAsFunctionCall.types b/tests/baselines/reference/anyAsFunctionCall.types
index 6492dce37d2..80e039f76dd 100644
--- a/tests/baselines/reference/anyAsFunctionCall.types
+++ b/tests/baselines/reference/anyAsFunctionCall.types
@@ -3,21 +3,22 @@
// can be called except with type arguments which is an error
var x: any;
->x : any
+>x : any, Symbol(x, Decl(anyAsFunctionCall.ts, 3, 3))
var a = x();
->a : any
+>a : any, Symbol(a, Decl(anyAsFunctionCall.ts, 4, 3))
>x() : any
->x : any
+>x : any, Symbol(x, Decl(anyAsFunctionCall.ts, 3, 3))
var b = x('hello');
->b : any
+>b : any, Symbol(b, Decl(anyAsFunctionCall.ts, 5, 3))
>x('hello') : any
->x : any
+>x : any, Symbol(x, Decl(anyAsFunctionCall.ts, 3, 3))
+>'hello' : string
var c = x(x);
->c : any
+>c : any, Symbol(c, Decl(anyAsFunctionCall.ts, 6, 3))
>x(x) : any
->x : any
->x : any
+>x : any, Symbol(x, Decl(anyAsFunctionCall.ts, 3, 3))
+>x : any, Symbol(x, Decl(anyAsFunctionCall.ts, 3, 3))
diff --git a/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types b/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types
index f25cd57831b..2abdb1cbeda 100644
--- a/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types
+++ b/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types
@@ -1,34 +1,36 @@
=== tests/cases/compiler/anyAsReturnTypeForNewOnCall.ts ===
function Point(x, y) {
->Point : (x: any, y: any) => void
->x : any
->y : any
+>Point : (x: any, y: any) => void, Symbol(Point, Decl(anyAsReturnTypeForNewOnCall.ts, 0, 0))
+>x : any, Symbol(x, Decl(anyAsReturnTypeForNewOnCall.ts, 0, 15))
+>y : any, Symbol(y, Decl(anyAsReturnTypeForNewOnCall.ts, 0, 17))
this.x = x;
>this.x = x : any
>this.x : any
>this : any
>x : any
->x : any
+>x : any, Symbol(x, Decl(anyAsReturnTypeForNewOnCall.ts, 0, 15))
this.y = y;
>this.y = y : any
>this.y : any
>this : any
>y : any
->y : any
+>y : any, Symbol(y, Decl(anyAsReturnTypeForNewOnCall.ts, 0, 17))
}
var o = new Point(3, 4);
->o : any
+>o : any, Symbol(o, Decl(anyAsReturnTypeForNewOnCall.ts, 8, 3))
>new Point(3, 4) : any
->Point : (x: any, y: any) => void
+>Point : (x: any, y: any) => void, Symbol(Point, Decl(anyAsReturnTypeForNewOnCall.ts, 0, 0))
+>3 : number
+>4 : number
var xx = o.x;
->xx : any
+>xx : any, Symbol(xx, Decl(anyAsReturnTypeForNewOnCall.ts, 10, 3))
>o.x : any
->o : any
+>o : any, Symbol(o, Decl(anyAsReturnTypeForNewOnCall.ts, 8, 3))
>x : any
diff --git a/tests/baselines/reference/anyAssignabilityInInheritance.types b/tests/baselines/reference/anyAssignabilityInInheritance.types
index f5a4f22ef3f..8f54b6761c8 100644
--- a/tests/baselines/reference/anyAssignabilityInInheritance.types
+++ b/tests/baselines/reference/anyAssignabilityInInheritance.types
@@ -2,320 +2,322 @@
// any is not a subtype of any other types, errors expected on all the below derived classes unless otherwise noted
interface I {
->I : I
+>I : I, Symbol(I, Decl(anyAssignabilityInInheritance.ts, 0, 0))
[x: string]: any;
->x : string
+>x : string, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 3, 5))
foo: any; // ok, any identical to itself
->foo : any
+>foo : any, Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 3, 21))
}
var a: any;
->a : any
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo2(x: number): number;
->foo2 : { (x: number): number; (x: any): any; }
->x : number
+>foo2 : { (x: number): number; (x: any): any; }, Symbol(foo2, Decl(anyAssignabilityInInheritance.ts, 7, 11), Decl(anyAssignabilityInInheritance.ts, 9, 41))
+>x : number, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 9, 22))
declare function foo2(x: any): any;
->foo2 : { (x: number): number; (x: any): any; }
->x : any
+>foo2 : { (x: number): number; (x: any): any; }, Symbol(foo2, Decl(anyAssignabilityInInheritance.ts, 7, 11), Decl(anyAssignabilityInInheritance.ts, 9, 41))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 10, 22))
var r3 = foo2(a); // any, not a subtype of number so it skips that overload, is a subtype of itself so it picks second (if truly ambiguous it would pick first overload)
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo2(a) : any
->foo2 : { (x: number): number; (x: any): any; }
->a : any
+>foo2 : { (x: number): number; (x: any): any; }, Symbol(foo2, Decl(anyAssignabilityInInheritance.ts, 7, 11), Decl(anyAssignabilityInInheritance.ts, 9, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo3(x: string): string;
->foo3 : { (x: string): string; (x: any): any; }
->x : string
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>x : string, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 13, 22))
declare function foo3(x: any): any;
->foo3 : { (x: string): string; (x: any): any; }
->x : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 14, 22))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo4(x: boolean): boolean;
->foo4 : { (x: boolean): boolean; (x: any): any; }
->x : boolean
+>foo4 : { (x: boolean): boolean; (x: any): any; }, Symbol(foo4, Decl(anyAssignabilityInInheritance.ts, 15, 17), Decl(anyAssignabilityInInheritance.ts, 17, 43))
+>x : boolean, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 17, 22))
declare function foo4(x: any): any;
->foo4 : { (x: boolean): boolean; (x: any): any; }
->x : any
+>foo4 : { (x: boolean): boolean; (x: any): any; }, Symbol(foo4, Decl(anyAssignabilityInInheritance.ts, 15, 17), Decl(anyAssignabilityInInheritance.ts, 17, 43))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 18, 22))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo5(x: Date): Date;
->foo5 : { (x: Date): Date; (x: any): any; }
->x : Date
->Date : Date
->Date : Date
+>foo5 : { (x: Date): Date; (x: any): any; }, Symbol(foo5, Decl(anyAssignabilityInInheritance.ts, 19, 17), Decl(anyAssignabilityInInheritance.ts, 21, 37))
+>x : Date, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 21, 22))
+>Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11))
+>Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11))
declare function foo5(x: any): any;
->foo5 : { (x: Date): Date; (x: any): any; }
->x : any
+>foo5 : { (x: Date): Date; (x: any): any; }, Symbol(foo5, Decl(anyAssignabilityInInheritance.ts, 19, 17), Decl(anyAssignabilityInInheritance.ts, 21, 37))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 22, 22))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo6(x: RegExp): RegExp;
->foo6 : { (x: RegExp): RegExp; (x: any): any; }
->x : RegExp
->RegExp : RegExp
->RegExp : RegExp
+>foo6 : { (x: RegExp): RegExp; (x: any): any; }, Symbol(foo6, Decl(anyAssignabilityInInheritance.ts, 23, 17), Decl(anyAssignabilityInInheritance.ts, 25, 41))
+>x : RegExp, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 25, 22))
+>RegExp : RegExp, Symbol(RegExp, Decl(lib.d.ts, 825, 1), Decl(lib.d.ts, 876, 11))
+>RegExp : RegExp, Symbol(RegExp, Decl(lib.d.ts, 825, 1), Decl(lib.d.ts, 876, 11))
declare function foo6(x: any): any;
->foo6 : { (x: RegExp): RegExp; (x: any): any; }
->x : any
+>foo6 : { (x: RegExp): RegExp; (x: any): any; }, Symbol(foo6, Decl(anyAssignabilityInInheritance.ts, 23, 17), Decl(anyAssignabilityInInheritance.ts, 25, 41))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 26, 22))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo7(x: { bar: number }): { bar: number };
->foo7 : { (x: { bar: number; }): { bar: number; }; (x: any): any; }
->x : { bar: number; }
->bar : number
->bar : number
+>foo7 : { (x: { bar: number; }): { bar: number; }; (x: any): any; }, Symbol(foo7, Decl(anyAssignabilityInInheritance.ts, 27, 17), Decl(anyAssignabilityInInheritance.ts, 29, 59))
+>x : { bar: number; }, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 29, 22))
+>bar : number, Symbol(bar, Decl(anyAssignabilityInInheritance.ts, 29, 26))
+>bar : number, Symbol(bar, Decl(anyAssignabilityInInheritance.ts, 29, 44))
declare function foo7(x: any): any;
->foo7 : { (x: { bar: number; }): { bar: number; }; (x: any): any; }
->x : any
+>foo7 : { (x: { bar: number; }): { bar: number; }; (x: any): any; }, Symbol(foo7, Decl(anyAssignabilityInInheritance.ts, 27, 17), Decl(anyAssignabilityInInheritance.ts, 29, 59))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 30, 22))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo8(x: number[]): number[];
->foo8 : { (x: number[]): number[]; (x: any): any; }
->x : number[]
+>foo8 : { (x: number[]): number[]; (x: any): any; }, Symbol(foo8, Decl(anyAssignabilityInInheritance.ts, 31, 17), Decl(anyAssignabilityInInheritance.ts, 33, 45))
+>x : number[], Symbol(x, Decl(anyAssignabilityInInheritance.ts, 33, 22))
declare function foo8(x: any): any;
->foo8 : { (x: number[]): number[]; (x: any): any; }
->x : any
+>foo8 : { (x: number[]): number[]; (x: any): any; }, Symbol(foo8, Decl(anyAssignabilityInInheritance.ts, 31, 17), Decl(anyAssignabilityInInheritance.ts, 33, 45))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 34, 22))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
interface I8 { foo: string }
->I8 : I8
->foo : string
+>I8 : I8, Symbol(I8, Decl(anyAssignabilityInInheritance.ts, 35, 17))
+>foo : string, Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 37, 14))
declare function foo9(x: I8): I8;
->foo9 : { (x: I8): I8; (x: any): any; }
->x : I8
->I8 : I8
->I8 : I8
+>foo9 : { (x: I8): I8; (x: any): any; }, Symbol(foo9, Decl(anyAssignabilityInInheritance.ts, 37, 28), Decl(anyAssignabilityInInheritance.ts, 38, 33))
+>x : I8, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 38, 22))
+>I8 : I8, Symbol(I8, Decl(anyAssignabilityInInheritance.ts, 35, 17))
+>I8 : I8, Symbol(I8, Decl(anyAssignabilityInInheritance.ts, 35, 17))
declare function foo9(x: any): any;
->foo9 : { (x: I8): I8; (x: any): any; }
->x : any
+>foo9 : { (x: I8): I8; (x: any): any; }, Symbol(foo9, Decl(anyAssignabilityInInheritance.ts, 37, 28), Decl(anyAssignabilityInInheritance.ts, 38, 33))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 39, 22))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
class A { foo: number; }
->A : A
->foo : number
+>A : A, Symbol(A, Decl(anyAssignabilityInInheritance.ts, 40, 17))
+>foo : number, Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 42, 9))
declare function foo10(x: A): A;
->foo10 : { (x: A): A; (x: any): any; }
->x : A
->A : A
->A : A
+>foo10 : { (x: A): A; (x: any): any; }, Symbol(foo10, Decl(anyAssignabilityInInheritance.ts, 42, 24), Decl(anyAssignabilityInInheritance.ts, 43, 32))
+>x : A, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 43, 23))
+>A : A, Symbol(A, Decl(anyAssignabilityInInheritance.ts, 40, 17))
+>A : A, Symbol(A, Decl(anyAssignabilityInInheritance.ts, 40, 17))
declare function foo10(x: any): any;
->foo10 : { (x: A): A; (x: any): any; }
->x : any
+>foo10 : { (x: A): A; (x: any): any; }, Symbol(foo10, Decl(anyAssignabilityInInheritance.ts, 42, 24), Decl(anyAssignabilityInInheritance.ts, 43, 32))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 44, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
class A2 { foo: T; }
->A2 : A2
->T : T
->foo : T
->T : T
+>A2 : A2, Symbol(A2, Decl(anyAssignabilityInInheritance.ts, 45, 17))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 47, 9))
+>foo : T, Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 47, 13))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 47, 9))
declare function foo11(x: A2): A2;
->foo11 : { (x: A2): A2; (x: any): any; }
->x : A2
->A2 : A2
->A2 : A2
+>foo11 : { (x: A2): A2; (x: any): any; }, Symbol(foo11, Decl(anyAssignabilityInInheritance.ts, 47, 23), Decl(anyAssignabilityInInheritance.ts, 48, 50))
+>x : A2, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 48, 23))
+>A2 : A2, Symbol(A2, Decl(anyAssignabilityInInheritance.ts, 45, 17))
+>A2 : A2, Symbol(A2, Decl(anyAssignabilityInInheritance.ts, 45, 17))
declare function foo11(x: any): any;
->foo11 : { (x: A2): A2; (x: any): any; }
->x : any
+>foo11 : { (x: A2): A2; (x: any): any; }, Symbol(foo11, Decl(anyAssignabilityInInheritance.ts, 47, 23), Decl(anyAssignabilityInInheritance.ts, 48, 50))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 49, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo12(x: (x) => number): (x) => number;
->foo12 : { (x: (x: any) => number): (x: any) => number; (x: any): any; }
->x : (x: any) => number
->x : any
->x : any
+>foo12 : { (x: (x: any) => number): (x: any) => number; (x: any): any; }, Symbol(foo12, Decl(anyAssignabilityInInheritance.ts, 50, 17), Decl(anyAssignabilityInInheritance.ts, 52, 56))
+>x : (x: any) => number, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 52, 23))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 52, 27))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 52, 43))
declare function foo12(x: any): any;
->foo12 : { (x: (x: any) => number): (x: any) => number; (x: any): any; }
->x : any
+>foo12 : { (x: (x: any) => number): (x: any) => number; (x: any): any; }, Symbol(foo12, Decl(anyAssignabilityInInheritance.ts, 50, 17), Decl(anyAssignabilityInInheritance.ts, 52, 56))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 53, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo13(x: (x: T) => T): (x: T) => T;
->foo13 : { (x: (x: T) => T): (x: T) => T; (x: any): any; }
->x : (x: T) => T
->T : T
->x : T
->T : T
->T : T
->T : T
->x : T
->T : T
->T : T
+>foo13 : { (x: (x: T) => T): (x: T) => T; (x: any): any; }, Symbol(foo13, Decl(anyAssignabilityInInheritance.ts, 54, 17), Decl(anyAssignabilityInInheritance.ts, 56, 58))
+>x : (x: T) => T, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 56, 23))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 56, 27))
+>x : T, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 56, 30))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 56, 27))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 56, 27))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 56, 44))
+>x : T, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 56, 47))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 56, 44))
+>T : T, Symbol(T, Decl(anyAssignabilityInInheritance.ts, 56, 44))
declare function foo13(x: any): any;
->foo13 : { (x: (x: T) => T): (x: T) => T; (x: any): any; }
->x : any
+>foo13 : { (x: (x: T) => T): (x: T) => T; (x: any): any; }, Symbol(foo13, Decl(anyAssignabilityInInheritance.ts, 54, 17), Decl(anyAssignabilityInInheritance.ts, 56, 58))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 57, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
enum E { A }
->E : E
->A : E
+>E : E, Symbol(E, Decl(anyAssignabilityInInheritance.ts, 58, 17))
+>A : E, Symbol(E.A, Decl(anyAssignabilityInInheritance.ts, 60, 8))
declare function foo14(x: E): E;
->foo14 : { (x: E): E; (x: any): any; }
->x : E
->E : E
->E : E
+>foo14 : { (x: E): E; (x: any): any; }, Symbol(foo14, Decl(anyAssignabilityInInheritance.ts, 60, 12), Decl(anyAssignabilityInInheritance.ts, 61, 32))
+>x : E, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 61, 23))
+>E : E, Symbol(E, Decl(anyAssignabilityInInheritance.ts, 58, 17))
+>E : E, Symbol(E, Decl(anyAssignabilityInInheritance.ts, 58, 17))
declare function foo14(x: any): any;
->foo14 : { (x: E): E; (x: any): any; }
->x : any
+>foo14 : { (x: E): E; (x: any): any; }, Symbol(foo14, Decl(anyAssignabilityInInheritance.ts, 60, 12), Decl(anyAssignabilityInInheritance.ts, 61, 32))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 62, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
function f() { }
->f : typeof f
+>f : typeof f, Symbol(f, Decl(anyAssignabilityInInheritance.ts, 63, 17), Decl(anyAssignabilityInInheritance.ts, 65, 16))
module f {
->f : typeof f
+>f : typeof f, Symbol(f, Decl(anyAssignabilityInInheritance.ts, 63, 17), Decl(anyAssignabilityInInheritance.ts, 65, 16))
export var bar = 1;
->bar : number
+>bar : number, Symbol(bar, Decl(anyAssignabilityInInheritance.ts, 67, 14))
+>1 : number
}
declare function foo15(x: typeof f): typeof f;
->foo15 : { (x: typeof f): typeof f; (x: any): any; }
->x : typeof f
->f : typeof f
->f : typeof f
+>foo15 : { (x: typeof f): typeof f; (x: any): any; }, Symbol(foo15, Decl(anyAssignabilityInInheritance.ts, 68, 1), Decl(anyAssignabilityInInheritance.ts, 69, 46))
+>x : typeof f, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 69, 23))
+>f : typeof f, Symbol(f, Decl(anyAssignabilityInInheritance.ts, 63, 17), Decl(anyAssignabilityInInheritance.ts, 65, 16))
+>f : typeof f, Symbol(f, Decl(anyAssignabilityInInheritance.ts, 63, 17), Decl(anyAssignabilityInInheritance.ts, 65, 16))
declare function foo15(x: any): any;
->foo15 : { (x: typeof f): typeof f; (x: any): any; }
->x : any
+>foo15 : { (x: typeof f): typeof f; (x: any): any; }, Symbol(foo15, Decl(anyAssignabilityInInheritance.ts, 68, 1), Decl(anyAssignabilityInInheritance.ts, 69, 46))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 70, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
class CC { baz: string }
->CC : CC
->baz : string
+>CC : CC, Symbol(CC, Decl(anyAssignabilityInInheritance.ts, 71, 17), Decl(anyAssignabilityInInheritance.ts, 73, 24))
+>baz : string, Symbol(baz, Decl(anyAssignabilityInInheritance.ts, 73, 10))
module CC {
->CC : typeof CC
+>CC : typeof CC, Symbol(CC, Decl(anyAssignabilityInInheritance.ts, 71, 17), Decl(anyAssignabilityInInheritance.ts, 73, 24))
export var bar = 1;
->bar : number
+>bar : number, Symbol(bar, Decl(anyAssignabilityInInheritance.ts, 75, 14))
+>1 : number
}
declare function foo16(x: CC): CC;
->foo16 : { (x: CC): CC; (x: any): any; }
->x : CC
->CC : CC
->CC : CC
+>foo16 : { (x: CC): CC; (x: any): any; }, Symbol(foo16, Decl(anyAssignabilityInInheritance.ts, 76, 1), Decl(anyAssignabilityInInheritance.ts, 77, 34))
+>x : CC, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 77, 23))
+>CC : CC, Symbol(CC, Decl(anyAssignabilityInInheritance.ts, 71, 17), Decl(anyAssignabilityInInheritance.ts, 73, 24))
+>CC : CC, Symbol(CC, Decl(anyAssignabilityInInheritance.ts, 71, 17), Decl(anyAssignabilityInInheritance.ts, 73, 24))
declare function foo16(x: any): any;
->foo16 : { (x: CC): CC; (x: any): any; }
->x : any
+>foo16 : { (x: CC): CC; (x: any): any; }, Symbol(foo16, Decl(anyAssignabilityInInheritance.ts, 76, 1), Decl(anyAssignabilityInInheritance.ts, 77, 34))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 78, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo17(x: Object): Object;
->foo17 : { (x: Object): Object; (x: any): any; }
->x : Object
->Object : Object
->Object : Object
+>foo17 : { (x: Object): Object; (x: any): any; }, Symbol(foo17, Decl(anyAssignabilityInInheritance.ts, 79, 17), Decl(anyAssignabilityInInheritance.ts, 81, 42))
+>x : Object, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 81, 23))
+>Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11))
+>Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11))
declare function foo17(x: any): any;
->foo17 : { (x: Object): Object; (x: any): any; }
->x : any
+>foo17 : { (x: Object): Object; (x: any): any; }, Symbol(foo17, Decl(anyAssignabilityInInheritance.ts, 79, 17), Decl(anyAssignabilityInInheritance.ts, 81, 42))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 82, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
declare function foo18(x: {}): {};
->foo18 : { (x: {}): {}; (x: any): any; }
->x : {}
+>foo18 : { (x: {}): {}; (x: any): any; }, Symbol(foo18, Decl(anyAssignabilityInInheritance.ts, 83, 17), Decl(anyAssignabilityInInheritance.ts, 85, 34))
+>x : {}, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 85, 23))
declare function foo18(x: any): any;
->foo18 : { (x: {}): {}; (x: any): any; }
->x : any
+>foo18 : { (x: {}): {}; (x: any): any; }, Symbol(foo18, Decl(anyAssignabilityInInheritance.ts, 83, 17), Decl(anyAssignabilityInInheritance.ts, 85, 34))
+>x : any, Symbol(x, Decl(anyAssignabilityInInheritance.ts, 86, 23))
var r3 = foo3(a); // any
->r3 : any
+>r3 : any, Symbol(r3, Decl(anyAssignabilityInInheritance.ts, 11, 3), Decl(anyAssignabilityInInheritance.ts, 15, 3), Decl(anyAssignabilityInInheritance.ts, 19, 3), Decl(anyAssignabilityInInheritance.ts, 23, 3), Decl(anyAssignabilityInInheritance.ts, 27, 3), Decl(anyAssignabilityInInheritance.ts, 31, 3), Decl(anyAssignabilityInInheritance.ts, 35, 3), Decl(anyAssignabilityInInheritance.ts, 40, 3), Decl(anyAssignabilityInInheritance.ts, 45, 3), Decl(anyAssignabilityInInheritance.ts, 50, 3), Decl(anyAssignabilityInInheritance.ts, 54, 3), Decl(anyAssignabilityInInheritance.ts, 58, 3), Decl(anyAssignabilityInInheritance.ts, 63, 3), Decl(anyAssignabilityInInheritance.ts, 71, 3), Decl(anyAssignabilityInInheritance.ts, 79, 3), Decl(anyAssignabilityInInheritance.ts, 83, 3), Decl(anyAssignabilityInInheritance.ts, 87, 3))
>foo3(a) : any
->foo3 : { (x: string): string; (x: any): any; }
->a : any
+>foo3 : { (x: string): string; (x: any): any; }, Symbol(foo3, Decl(anyAssignabilityInInheritance.ts, 11, 17), Decl(anyAssignabilityInInheritance.ts, 13, 41))
+>a : any, Symbol(a, Decl(anyAssignabilityInInheritance.ts, 7, 3))
diff --git a/tests/baselines/reference/anyAssignableToEveryType.types b/tests/baselines/reference/anyAssignableToEveryType.types
index c2a9b324d96..b6e420facb2 100644
--- a/tests/baselines/reference/anyAssignableToEveryType.types
+++ b/tests/baselines/reference/anyAssignableToEveryType.types
@@ -1,152 +1,152 @@
=== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType.ts ===
var a: any;
->a : any
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
class C {
->C : C
+>C : C, Symbol(C, Decl(anyAssignableToEveryType.ts, 0, 11))
foo: string;
->foo : string
+>foo : string, Symbol(foo, Decl(anyAssignableToEveryType.ts, 2, 9))
}
var ac: C;
->ac : C
->C : C
+>ac : C, Symbol(ac, Decl(anyAssignableToEveryType.ts, 5, 3))
+>C : C, Symbol(C, Decl(anyAssignableToEveryType.ts, 0, 11))
interface I {
->I : I
+>I : I, Symbol(I, Decl(anyAssignableToEveryType.ts, 5, 10))
foo: string;
->foo : string
+>foo : string, Symbol(foo, Decl(anyAssignableToEveryType.ts, 6, 13))
}
var ai: I;
->ai : I
->I : I
+>ai : I, Symbol(ai, Decl(anyAssignableToEveryType.ts, 9, 3))
+>I : I, Symbol(I, Decl(anyAssignableToEveryType.ts, 5, 10))
enum E { A }
->E : E
->A : E
+>E : E, Symbol(E, Decl(anyAssignableToEveryType.ts, 9, 10))
+>A : E, Symbol(E.A, Decl(anyAssignableToEveryType.ts, 11, 8))
var ae: E;
->ae : E
->E : E
+>ae : E, Symbol(ae, Decl(anyAssignableToEveryType.ts, 12, 3))
+>E : E, Symbol(E, Decl(anyAssignableToEveryType.ts, 9, 10))
var b: number = a;
->b : number
->a : any
+>b : number, Symbol(b, Decl(anyAssignableToEveryType.ts, 14, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var c: string = a;
->c : string
->a : any
+>c : string, Symbol(c, Decl(anyAssignableToEveryType.ts, 15, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var d: boolean = a;
->d : boolean
->a : any
+>d : boolean, Symbol(d, Decl(anyAssignableToEveryType.ts, 16, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var e: Date = a;
->e : Date
->Date : Date
->a : any
+>e : Date, Symbol(e, Decl(anyAssignableToEveryType.ts, 17, 3))
+>Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var f: any = a;
->f : any
->a : any
+>f : any, Symbol(f, Decl(anyAssignableToEveryType.ts, 18, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var g: void = a;
->g : void
->a : any
+>g : void, Symbol(g, Decl(anyAssignableToEveryType.ts, 19, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var h: Object = a;
->h : Object
->Object : Object
->a : any
+>h : Object, Symbol(h, Decl(anyAssignableToEveryType.ts, 20, 3))
+>Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var i: {} = a;
->i : {}
->a : any
+>i : {}, Symbol(i, Decl(anyAssignableToEveryType.ts, 21, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var j: () => {} = a;
->j : () => {}
->a : any
+>j : () => {}, Symbol(j, Decl(anyAssignableToEveryType.ts, 22, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var k: Function = a;
->k : Function
->Function : Function
->a : any
+>k : Function, Symbol(k, Decl(anyAssignableToEveryType.ts, 23, 3))
+>Function : Function, Symbol(Function, Decl(lib.d.ts, 223, 38), Decl(lib.d.ts, 269, 11))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var l: (x: number) => string = a;
->l : (x: number) => string
->x : number
->a : any
+>l : (x: number) => string, Symbol(l, Decl(anyAssignableToEveryType.ts, 24, 3))
+>x : number, Symbol(x, Decl(anyAssignableToEveryType.ts, 24, 8))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
ac = a;
>ac = a : any
->ac : C
->a : any
+>ac : C, Symbol(ac, Decl(anyAssignableToEveryType.ts, 5, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
ai = a;
>ai = a : any
->ai : I
->a : any
+>ai : I, Symbol(ai, Decl(anyAssignableToEveryType.ts, 9, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
ae = a;
>ae = a : any
->ae : E
->a : any
+>ae : E, Symbol(ae, Decl(anyAssignableToEveryType.ts, 12, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var m: number[] = a;
->m : number[]
->a : any
+>m : number[], Symbol(m, Decl(anyAssignableToEveryType.ts, 28, 3))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var n: { foo: string } = a;
->n : { foo: string; }
->foo : string
->a : any
+>n : { foo: string; }, Symbol(n, Decl(anyAssignableToEveryType.ts, 29, 3))
+>foo : string, Symbol(foo, Decl(anyAssignableToEveryType.ts, 29, 8))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var o: (x: T) => T = a;
->o : (x: T) => T
->T : T
->x : T
->T : T
->T : T
->a : any
+>o : (x: T) => T, Symbol(o, Decl(anyAssignableToEveryType.ts, 30, 3))
+>T : T, Symbol(T, Decl(anyAssignableToEveryType.ts, 30, 8))
+>x : T, Symbol(x, Decl(anyAssignableToEveryType.ts, 30, 11))
+>T : T, Symbol(T, Decl(anyAssignableToEveryType.ts, 30, 8))
+>T : T, Symbol(T, Decl(anyAssignableToEveryType.ts, 30, 8))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var p: Number = a;
->p : Number
->Number : Number
->a : any
+>p : Number, Symbol(p, Decl(anyAssignableToEveryType.ts, 31, 3))
+>Number : Number, Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
var q: String = a;
->q : String
->String : String
->a : any
+>q : String, Symbol(q, Decl(anyAssignableToEveryType.ts, 32, 3))
+>String : String, Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
function foo(x: T, y: U, z: V) {
->foo : (x: T, y: U, z: V) => void
->T : T
->U : U
->V : V
->Date : Date
->x : T
->T : T
->y : U
->U : U
->z : V
->V : V
+>foo : (x: T, y: U, z: V) => void, Symbol(foo, Decl(anyAssignableToEveryType.ts, 32, 18))
+>T : T, Symbol(T, Decl(anyAssignableToEveryType.ts, 34, 13))
+>U : U, Symbol(U, Decl(anyAssignableToEveryType.ts, 34, 15))
+>V : V, Symbol(V, Decl(anyAssignableToEveryType.ts, 34, 32))
+>Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11))
+>x : T, Symbol(x, Decl(anyAssignableToEveryType.ts, 34, 49))
+>T : T, Symbol(T, Decl(anyAssignableToEveryType.ts, 34, 13))
+>y : U, Symbol(y, Decl(anyAssignableToEveryType.ts, 34, 54))
+>U : U, Symbol(U, Decl(anyAssignableToEveryType.ts, 34, 15))
+>z : V, Symbol(z, Decl(anyAssignableToEveryType.ts, 34, 60))
+>V : V, Symbol(V, Decl(anyAssignableToEveryType.ts, 34, 32))
x = a;
>x = a : any
->x : T
->a : any
+>x : T, Symbol(x, Decl(anyAssignableToEveryType.ts, 34, 49))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
y = a;
>y = a : any
->y : U
->a : any
+>y : U, Symbol(y, Decl(anyAssignableToEveryType.ts, 34, 54))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
z = a;
>z = a : any
->z : V
->a : any
+>z : V, Symbol(z, Decl(anyAssignableToEveryType.ts, 34, 60))
+>a : any, Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3))
}
//function foo(x: T, y: U, z: V) {
diff --git a/tests/baselines/reference/anyInferenceAnonymousFunctions.types b/tests/baselines/reference/anyInferenceAnonymousFunctions.types
index 8dc7fdcb90f..f434d147990 100644
--- a/tests/baselines/reference/anyInferenceAnonymousFunctions.types
+++ b/tests/baselines/reference/anyInferenceAnonymousFunctions.types
@@ -1,20 +1,20 @@
=== tests/cases/compiler/anyInferenceAnonymousFunctions.ts ===
var paired: any[];
->paired : any[]
+>paired : any[], Symbol(paired, Decl(anyInferenceAnonymousFunctions.ts, 0, 3))
paired.reduce(function (a1, a2) {
>paired.reduce(function (a1, a2) { return a1.concat({});} , []) : any
->paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }
->paired : any[]
->reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }
+>paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }, Symbol(Array.reduce, Decl(lib.d.ts, 1129, 93), Decl(lib.d.ts, 1136, 120))
+>paired : any[], Symbol(paired, Decl(anyInferenceAnonymousFunctions.ts, 0, 3))
+>reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }, Symbol(Array.reduce, Decl(lib.d.ts, 1129, 93), Decl(lib.d.ts, 1136, 120))
>function (a1, a2) { return a1.concat({});} : (a1: any, a2: any) => any
->a1 : any
->a2 : any
+>a1 : any, Symbol(a1, Decl(anyInferenceAnonymousFunctions.ts, 2, 24))
+>a2 : any, Symbol(a2, Decl(anyInferenceAnonymousFunctions.ts, 2, 27))
return a1.concat({});
>a1.concat({}) : any
>a1.concat : any
->a1 : any
+>a1 : any, Symbol(a1, Decl(anyInferenceAnonymousFunctions.ts, 2, 24))
>concat : any
>{} : {}
@@ -23,17 +23,17 @@ paired.reduce(function (a1, a2) {
paired.reduce((b1, b2) => {
>paired.reduce((b1, b2) => { return b1.concat({});} , []) : any
->paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }
->paired : any[]
->reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }
+>paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }, Symbol(Array.reduce, Decl(lib.d.ts, 1129, 93), Decl(lib.d.ts, 1136, 120))
+>paired : any[], Symbol(paired, Decl(anyInferenceAnonymousFunctions.ts, 0, 3))
+>reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }, Symbol(Array.reduce, Decl(lib.d.ts, 1129, 93), Decl(lib.d.ts, 1136, 120))
>(b1, b2) => { return b1.concat({});} : (b1: any, b2: any) => any
->b1 : any
->b2 : any
+>b1 : any, Symbol(b1, Decl(anyInferenceAnonymousFunctions.ts, 8, 15))
+>b2 : any, Symbol(b2, Decl(anyInferenceAnonymousFunctions.ts, 8, 18))
return b1.concat({});
>b1.concat({}) : any
>b1.concat : any
->b1 : any
+>b1 : any, Symbol(b1, Decl(anyInferenceAnonymousFunctions.ts, 8, 15))
>concat : any
>{} : {}
@@ -42,38 +42,38 @@ paired.reduce((b1, b2) => {
paired.reduce((b3, b4) => b3.concat({}), []);
>paired.reduce((b3, b4) => b3.concat({}), []) : any
->paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }
->paired : any[]
->reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }
+>paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }, Symbol(Array.reduce, Decl(lib.d.ts, 1129, 93), Decl(lib.d.ts, 1136, 120))
+>paired : any[], Symbol(paired, Decl(anyInferenceAnonymousFunctions.ts, 0, 3))
+>reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; }, Symbol(Array.reduce, Decl(lib.d.ts, 1129, 93), Decl(lib.d.ts, 1136, 120))
>(b3, b4) => b3.concat({}) : (b3: any, b4: any) => any
->b3 : any
->b4 : any
+>b3 : any, Symbol(b3, Decl(anyInferenceAnonymousFunctions.ts, 13, 15))
+>b4 : any, Symbol(b4, Decl(anyInferenceAnonymousFunctions.ts, 13, 18))
>b3.concat({}) : any
>b3.concat : any
->b3 : any
+>b3 : any, Symbol(b3, Decl(anyInferenceAnonymousFunctions.ts, 13, 15))
>concat : any
>{} : {}
>[] : undefined[]
paired.map((c1) => c1.count);
>paired.map((c1) => c1.count) : any[]
->paired.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[]
->paired : any[]
->map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[]
+>paired.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[], Symbol(Array.map, Decl(lib.d.ts, 1115, 92))
+>paired : any[], Symbol(paired, Decl(anyInferenceAnonymousFunctions.ts, 0, 3))
+>map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[], Symbol(Array.map, Decl(lib.d.ts, 1115, 92))
>(c1) => c1.count : (c1: any) => any
->c1 : any
+>c1 : any, Symbol(c1, Decl(anyInferenceAnonymousFunctions.ts, 15, 12))
>c1.count : any
->c1 : any
+>c1 : any, Symbol(c1, Decl(anyInferenceAnonymousFunctions.ts, 15, 12))
>count : any
paired.map(function (c2) { return c2.count; });
>paired.map(function (c2) { return c2.count; }) : any[]
->paired.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[]
->paired : any[]
->map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[]
+>paired.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[], Symbol(Array.map, Decl(lib.d.ts, 1115, 92))
+>paired : any[], Symbol(paired, Decl(anyInferenceAnonymousFunctions.ts, 0, 3))
+>map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[], Symbol(Array.map, Decl(lib.d.ts, 1115, 92))
>function (c2) { return c2.count; } : (c2: any) => any
->c2 : any
+>c2 : any, Symbol(c2, Decl(anyInferenceAnonymousFunctions.ts, 16, 21))
>c2.count : any
->c2 : any
+>c2 : any, Symbol(c2, Decl(anyInferenceAnonymousFunctions.ts, 16, 21))
>count : any
diff --git a/tests/baselines/reference/anyIsAssignableToObject.types b/tests/baselines/reference/anyIsAssignableToObject.types
index 5df5d3b345f..73e1ef8b8dc 100644
--- a/tests/baselines/reference/anyIsAssignableToObject.types
+++ b/tests/baselines/reference/anyIsAssignableToObject.types
@@ -1,15 +1,15 @@
=== tests/cases/compiler/anyIsAssignableToObject.ts ===
interface P {
->P : P
+>P : P, Symbol(P, Decl(anyIsAssignableToObject.ts, 0, 0))
p: {};
->p : {}
+>p : {}, Symbol(p, Decl(anyIsAssignableToObject.ts, 0, 13))
}
interface Q extends P { // Check assignability here. Any is assignable to {}
->Q : Q
->P : P
+>Q : Q, Symbol(Q, Decl(anyIsAssignableToObject.ts, 2, 1))
+>P : P, Symbol(P, Decl(anyIsAssignableToObject.ts, 0, 0))
p: any;
->p : any
+>p : any, Symbol(p, Decl(anyIsAssignableToObject.ts, 4, 23))
}
diff --git a/tests/baselines/reference/anyIsAssignableToVoid.types b/tests/baselines/reference/anyIsAssignableToVoid.types
index 0e1af90971f..33d2b35bef2 100644
--- a/tests/baselines/reference/anyIsAssignableToVoid.types
+++ b/tests/baselines/reference/anyIsAssignableToVoid.types
@@ -1,15 +1,15 @@
=== tests/cases/compiler/anyIsAssignableToVoid.ts ===
interface P {
->P : P
+>P : P, Symbol(P, Decl(anyIsAssignableToVoid.ts, 0, 0))
p: void;
->p : void
+>p : void, Symbol(p, Decl(anyIsAssignableToVoid.ts, 0, 13))
}
interface Q extends P { // check assignability here. any is assignable to void.
->Q : Q
->P : P
+>Q : Q, Symbol(Q, Decl(anyIsAssignableToVoid.ts, 2, 1))
+>P : P, Symbol(P, Decl(anyIsAssignableToVoid.ts, 0, 0))
p: any;
->p : any
+>p : any, Symbol(p, Decl(anyIsAssignableToVoid.ts, 4, 23))
}
diff --git a/tests/baselines/reference/anyPlusAny1.types b/tests/baselines/reference/anyPlusAny1.types
index aeda001eeaa..003781fb0f4 100644
--- a/tests/baselines/reference/anyPlusAny1.types
+++ b/tests/baselines/reference/anyPlusAny1.types
@@ -1,16 +1,17 @@
=== tests/cases/compiler/anyPlusAny1.ts ===
var x;
->x : any
+>x : any, Symbol(x, Decl(anyPlusAny1.ts, 0, 3))
x.name = "hello";
>x.name = "hello" : string
>x.name : any
->x : any
+>x : any, Symbol(x, Decl(anyPlusAny1.ts, 0, 3))
>name : any
+>"hello" : string
var z = x + x;
->z : any
+>z : any, Symbol(z, Decl(anyPlusAny1.ts, 2, 3))
>x + x : any
->x : any
->x : any
+>x : any, Symbol(x, Decl(anyPlusAny1.ts, 0, 3))
+>x : any, Symbol(x, Decl(anyPlusAny1.ts, 0, 3))
diff --git a/tests/baselines/reference/anyPropertyAccess.types b/tests/baselines/reference/anyPropertyAccess.types
index 5ea20cefdd6..20ceabe687b 100644
--- a/tests/baselines/reference/anyPropertyAccess.types
+++ b/tests/baselines/reference/anyPropertyAccess.types
@@ -1,43 +1,47 @@
=== tests/cases/conformance/types/any/anyPropertyAccess.ts ===
var x: any;
->x : any
+>x : any, Symbol(x, Decl(anyPropertyAccess.ts, 0, 3))
var a = x.foo;
->a : any
+>a : any, Symbol(a, Decl(anyPropertyAccess.ts, 1, 3))
>x.foo : any
->x : any
+>x : any, Symbol(x, Decl(anyPropertyAccess.ts, 0, 3))
>foo : any
var b = x['foo'];
->b : any
+>b : any, Symbol(b, Decl(anyPropertyAccess.ts, 2, 3))
>x['foo'] : any
->x : any
+>x : any, Symbol(x, Decl(anyPropertyAccess.ts, 0, 3))
+>'foo' : string
var c = x['fn']();
->c : any
+>c : any, Symbol(c, Decl(anyPropertyAccess.ts, 3, 3))
>x['fn']() : any
>x['fn'] : any
->x : any
+>x : any, Symbol(x, Decl(anyPropertyAccess.ts, 0, 3))
+>'fn' : string
var d = x.bar.baz;
->d : any
+>d : any, Symbol(d, Decl(anyPropertyAccess.ts, 4, 3))
>x.bar.baz : any
>x.bar : any
->x : any
+>x : any, Symbol(x, Decl(anyPropertyAccess.ts, 0, 3))
>bar : any
>baz : any
var e = x[0].foo;
->e : any
+>e : any, Symbol(e, Decl(anyPropertyAccess.ts, 5, 3))
>x[0].foo : any
>x[0] : any
->x : any
+>x : any, Symbol(x, Decl(anyPropertyAccess.ts, 0, 3))
+>0 : number
>foo : any
var f = x['0'].bar;
->f : any
+>f : any, Symbol(f, Decl(anyPropertyAccess.ts, 6, 3))
>x['0'].bar : any
>x['0'] : any
->x : any
+>x : any, Symbol(x, Decl(anyPropertyAccess.ts, 0, 3))
+>'0' : string
>bar : any
diff --git a/tests/baselines/reference/argsInScope.types b/tests/baselines/reference/argsInScope.types
index 010e5624039..52f474c11c9 100644
--- a/tests/baselines/reference/argsInScope.types
+++ b/tests/baselines/reference/argsInScope.types
@@ -1,22 +1,23 @@
=== tests/cases/compiler/argsInScope.ts ===
class C {
->C : C
+>C : C, Symbol(C, Decl(argsInScope.ts, 0, 0))
P(ii:number, j:number, k:number) {
->P : (ii: number, j: number, k: number) => void
->ii : number
->j : number
->k : number
+>P : (ii: number, j: number, k: number) => void, Symbol(P, Decl(argsInScope.ts, 0, 9))
+>ii : number, Symbol(ii, Decl(argsInScope.ts, 1, 6))
+>j : number, Symbol(j, Decl(argsInScope.ts, 1, 16))
+>k : number, Symbol(k, Decl(argsInScope.ts, 1, 26))
for (var i = 0; i < arguments.length; i++) {
->i : number
+>i : number, Symbol(i, Decl(argsInScope.ts, 2, 15))
+>0 : number
>i < arguments.length : boolean
->i : number
->arguments.length : number
->arguments : IArguments
->length : number
+>i : number, Symbol(i, Decl(argsInScope.ts, 2, 15))
+>arguments.length : number, Symbol(IArguments.length, Decl(lib.d.ts, 272, 25))
+>arguments : IArguments, Symbol(arguments)
+>length : number, Symbol(IArguments.length, Decl(lib.d.ts, 272, 25))
>i++ : number
->i : number
+>i : number, Symbol(i, Decl(argsInScope.ts, 2, 15))
// WScript.Echo("param: " + arguments[i]);
}
@@ -24,13 +25,16 @@ class C {
}
var c = new C();
->c : C
+>c : C, Symbol(c, Decl(argsInScope.ts, 8, 3))
>new C() : C
->C : typeof C
+>C : typeof C, Symbol(C, Decl(argsInScope.ts, 0, 0))
c.P(1,2,3);
>c.P(1,2,3) : void
->c.P : (ii: number, j: number, k: number) => void
->c : C
->P : (ii: number, j: number, k: number) => void
+>c.P : (ii: number, j: number, k: number) => void, Symbol(C.P, Decl(argsInScope.ts, 0, 9))
+>c : C, Symbol(c, Decl(argsInScope.ts, 8, 3))
+>P : (ii: number, j: number, k: number) => void, Symbol(C.P, Decl(argsInScope.ts, 0, 9))
+>1 : number
+>2 : number
+>3 : number
diff --git a/tests/baselines/reference/arguments.types b/tests/baselines/reference/arguments.types
index 1902e459316..c1d618e99b3 100644
--- a/tests/baselines/reference/arguments.types
+++ b/tests/baselines/reference/arguments.types
@@ -1,9 +1,10 @@
=== tests/cases/compiler/arguments.ts ===
function f() {
->f : () => void
+>f : () => void, Symbol(f, Decl(arguments.ts, 0, 0))
var x=arguments[12];
->x : any
+>x : any, Symbol(x, Decl(arguments.ts, 1, 7))
>arguments[12] : any
->arguments : IArguments
+>arguments : IArguments, Symbol(arguments)
+>12 : number
}
diff --git a/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types b/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types
index 697858534db..a2f20b8c2fd 100644
--- a/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types
+++ b/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types
@@ -1,20 +1,20 @@
=== tests/cases/compiler/argumentsUsedInObjectLiteralProperty.ts ===
class A {
->A : A
+>A : A, Symbol(A, Decl(argumentsUsedInObjectLiteralProperty.ts, 0, 0))
public static createSelectableViewModel(initialState?: any, selectedValue?: any) {
->createSelectableViewModel : (initialState?: any, selectedValue?: any) => { selectedValue: number; }
->initialState : any
->selectedValue : any
+>createSelectableViewModel : (initialState?: any, selectedValue?: any) => { selectedValue: number; }, Symbol(A.createSelectableViewModel, Decl(argumentsUsedInObjectLiteralProperty.ts, 0, 9))
+>initialState : any, Symbol(initialState, Decl(argumentsUsedInObjectLiteralProperty.ts, 1, 44))
+>selectedValue : any, Symbol(selectedValue, Decl(argumentsUsedInObjectLiteralProperty.ts, 1, 63))
return {
>{ selectedValue: arguments.length } : { selectedValue: number; }
selectedValue: arguments.length
->selectedValue : number
->arguments.length : number
->arguments : IArguments
->length : number
+>selectedValue : number, Symbol(selectedValue, Decl(argumentsUsedInObjectLiteralProperty.ts, 2, 16))
+>arguments.length : number, Symbol(IArguments.length, Decl(lib.d.ts, 272, 25))
+>arguments : IArguments, Symbol(arguments)
+>length : number, Symbol(IArguments.length, Decl(lib.d.ts, 272, 25))
};
}
diff --git a/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types b/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types
index f0120f328c4..2eea0222969 100644
--- a/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types
+++ b/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types
@@ -1,437 +1,497 @@
=== tests/cases/conformance/expressions/binaryOperators/arithmeticOperator/arithmeticOperatorWithAnyAndNumber.ts ===
var a: any;
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var b: number;
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator *
var ra1 = a * a;
->ra1 : number
+>ra1 : number, Symbol(ra1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 4, 3))
>a * a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var ra2 = a * b;
->ra2 : number
+>ra2 : number, Symbol(ra2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 5, 3))
>a * b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var ra3 = a * 0;
->ra3 : number
+>ra3 : number, Symbol(ra3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 6, 3))
>a * 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var ra4 = 0 * a;
->ra4 : number
+>ra4 : number, Symbol(ra4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 7, 3))
>0 * a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var ra5 = 0 * 0;
->ra5 : number
+>ra5 : number, Symbol(ra5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 8, 3))
>0 * 0 : number
+>0 : number
+>0 : number
var ra6 = b * 0;
->ra6 : number
+>ra6 : number, Symbol(ra6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 9, 3))
>b * 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var ra7 = 0 * b;
->ra7 : number
+>ra7 : number, Symbol(ra7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 10, 3))
>0 * b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var ra8 = b * b;
->ra8 : number
+>ra8 : number, Symbol(ra8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 11, 3))
>b * b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator /
var rb1 = a / a;
->rb1 : number
+>rb1 : number, Symbol(rb1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 14, 3))
>a / a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rb2 = a / b;
->rb2 : number
+>rb2 : number, Symbol(rb2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 15, 3))
>a / b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rb3 = a / 0;
->rb3 : number
+>rb3 : number, Symbol(rb3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 16, 3))
>a / 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var rb4 = 0 / a;
->rb4 : number
+>rb4 : number, Symbol(rb4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 17, 3))
>0 / a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rb5 = 0 / 0;
->rb5 : number
+>rb5 : number, Symbol(rb5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 18, 3))
>0 / 0 : number
+>0 : number
+>0 : number
var rb6 = b / 0;
->rb6 : number
+>rb6 : number, Symbol(rb6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 19, 3))
>b / 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var rb7 = 0 / b;
->rb7 : number
+>rb7 : number, Symbol(rb7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 20, 3))
>0 / b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rb8 = b / b;
->rb8 : number
+>rb8 : number, Symbol(rb8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 21, 3))
>b / b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator %
var rc1 = a % a;
->rc1 : number
+>rc1 : number, Symbol(rc1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 24, 3))
>a % a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rc2 = a % b;
->rc2 : number
+>rc2 : number, Symbol(rc2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 25, 3))
>a % b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rc3 = a % 0;
->rc3 : number
+>rc3 : number, Symbol(rc3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 26, 3))
>a % 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var rc4 = 0 % a;
->rc4 : number
+>rc4 : number, Symbol(rc4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 27, 3))
>0 % a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rc5 = 0 % 0;
->rc5 : number
+>rc5 : number, Symbol(rc5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 28, 3))
>0 % 0 : number
+>0 : number
+>0 : number
var rc6 = b % 0;
->rc6 : number
+>rc6 : number, Symbol(rc6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 29, 3))
>b % 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var rc7 = 0 % b;
->rc7 : number
+>rc7 : number, Symbol(rc7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 30, 3))
>0 % b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rc8 = b % b;
->rc8 : number
+>rc8 : number, Symbol(rc8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 31, 3))
>b % b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator -
var rd1 = a - a;
->rd1 : number
+>rd1 : number, Symbol(rd1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 34, 3))
>a - a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rd2 = a - b;
->rd2 : number
+>rd2 : number, Symbol(rd2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 35, 3))
>a - b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rd3 = a - 0;
->rd3 : number
+>rd3 : number, Symbol(rd3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 36, 3))
>a - 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var rd4 = 0 - a;
->rd4 : number
+>rd4 : number, Symbol(rd4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 37, 3))
>0 - a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rd5 = 0 - 0;
->rd5 : number
+>rd5 : number, Symbol(rd5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 38, 3))
>0 - 0 : number
+>0 : number
+>0 : number
var rd6 = b - 0;
->rd6 : number
+>rd6 : number, Symbol(rd6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 39, 3))
>b - 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var rd7 = 0 - b;
->rd7 : number
+>rd7 : number, Symbol(rd7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 40, 3))
>0 - b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rd8 = b - b;
->rd8 : number
+>rd8 : number, Symbol(rd8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 41, 3))
>b - b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator <<
var re1 = a << a;
->re1 : number
+>re1 : number, Symbol(re1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 44, 3))
>a << a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var re2 = a << b;
->re2 : number
+>re2 : number, Symbol(re2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 45, 3))
>a << b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var re3 = a << 0;
->re3 : number
+>re3 : number, Symbol(re3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 46, 3))
>a << 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var re4 = 0 << a;
->re4 : number
+>re4 : number, Symbol(re4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 47, 3))
>0 << a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var re5 = 0 << 0;
->re5 : number
+>re5 : number, Symbol(re5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 48, 3))
>0 << 0 : number
+>0 : number
+>0 : number
var re6 = b << 0;
->re6 : number
+>re6 : number, Symbol(re6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 49, 3))
>b << 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var re7 = 0 << b;
->re7 : number
+>re7 : number, Symbol(re7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 50, 3))
>0 << b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var re8 = b << b;
->re8 : number
+>re8 : number, Symbol(re8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 51, 3))
>b << b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator >>
var rf1 = a >> a;
->rf1 : number
+>rf1 : number, Symbol(rf1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 54, 3))
>a >> a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rf2 = a >> b;
->rf2 : number
+>rf2 : number, Symbol(rf2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 55, 3))
>a >> b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rf3 = a >> 0;
->rf3 : number
+>rf3 : number, Symbol(rf3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 56, 3))
>a >> 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var rf4 = 0 >> a;
->rf4 : number
+>rf4 : number, Symbol(rf4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 57, 3))
>0 >> a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rf5 = 0 >> 0;
->rf5 : number
+>rf5 : number, Symbol(rf5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 58, 3))
>0 >> 0 : number
+>0 : number
+>0 : number
var rf6 = b >> 0;
->rf6 : number
+>rf6 : number, Symbol(rf6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 59, 3))
>b >> 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var rf7 = 0 >> b;
->rf7 : number
+>rf7 : number, Symbol(rf7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 60, 3))
>0 >> b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rf8 = b >> b;
->rf8 : number
+>rf8 : number, Symbol(rf8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 61, 3))
>b >> b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator >>>
var rg1 = a >>> a;
->rg1 : number
+>rg1 : number, Symbol(rg1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 64, 3))
>a >>> a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rg2 = a >>> b;
->rg2 : number
+>rg2 : number, Symbol(rg2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 65, 3))
>a >>> b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rg3 = a >>> 0;
->rg3 : number
+>rg3 : number, Symbol(rg3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 66, 3))
>a >>> 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var rg4 = 0 >>> a;
->rg4 : number
+>rg4 : number, Symbol(rg4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 67, 3))
>0 >>> a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rg5 = 0 >>> 0;
->rg5 : number
+>rg5 : number, Symbol(rg5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 68, 3))
>0 >>> 0 : number
+>0 : number
+>0 : number
var rg6 = b >>> 0;
->rg6 : number
+>rg6 : number, Symbol(rg6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 69, 3))
>b >>> 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var rg7 = 0 >>> b;
->rg7 : number
+>rg7 : number, Symbol(rg7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 70, 3))
>0 >>> b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rg8 = b >>> b;
->rg8 : number
+>rg8 : number, Symbol(rg8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 71, 3))
>b >>> b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator &
var rh1 = a & a;
->rh1 : number
+>rh1 : number, Symbol(rh1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 74, 3))
>a & a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rh2 = a & b;
->rh2 : number
+>rh2 : number, Symbol(rh2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 75, 3))
>a & b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rh3 = a & 0;
->rh3 : number
+>rh3 : number, Symbol(rh3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 76, 3))
>a & 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var rh4 = 0 & a;
->rh4 : number
+>rh4 : number, Symbol(rh4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 77, 3))
>0 & a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rh5 = 0 & 0;
->rh5 : number
+>rh5 : number, Symbol(rh5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 78, 3))
>0 & 0 : number
+>0 : number
+>0 : number
var rh6 = b & 0;
->rh6 : number
+>rh6 : number, Symbol(rh6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 79, 3))
>b & 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var rh7 = 0 & b;
->rh7 : number
+>rh7 : number, Symbol(rh7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 80, 3))
>0 & b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rh8 = b & b;
->rh8 : number
+>rh8 : number, Symbol(rh8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 81, 3))
>b & b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator ^
var ri1 = a ^ a;
->ri1 : number
+>ri1 : number, Symbol(ri1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 84, 3))
>a ^ a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var ri2 = a ^ b;
->ri2 : number
+>ri2 : number, Symbol(ri2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 85, 3))
>a ^ b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var ri3 = a ^ 0;
->ri3 : number
+>ri3 : number, Symbol(ri3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 86, 3))
>a ^ 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var ri4 = 0 ^ a;
->ri4 : number
+>ri4 : number, Symbol(ri4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 87, 3))
>0 ^ a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var ri5 = 0 ^ 0;
->ri5 : number
+>ri5 : number, Symbol(ri5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 88, 3))
>0 ^ 0 : number
+>0 : number
+>0 : number
var ri6 = b ^ 0;
->ri6 : number
+>ri6 : number, Symbol(ri6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 89, 3))
>b ^ 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var ri7 = 0 ^ b;
->ri7 : number
+>ri7 : number, Symbol(ri7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 90, 3))
>0 ^ b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var ri8 = b ^ b;
->ri8 : number
+>ri8 : number, Symbol(ri8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 91, 3))
>b ^ b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
// operator |
var rj1 = a | a;
->rj1 : number
+>rj1 : number, Symbol(rj1, Decl(arithmeticOperatorWithAnyAndNumber.ts, 94, 3))
>a | a : number
->a : any
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rj2 = a | b;
->rj2 : number
+>rj2 : number, Symbol(rj2, Decl(arithmeticOperatorWithAnyAndNumber.ts, 95, 3))
>a | b : number
->a : any
->b : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rj3 = a | 0;
->rj3 : number
+>rj3 : number, Symbol(rj3, Decl(arithmeticOperatorWithAnyAndNumber.ts, 96, 3))
>a | 0 : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
+>0 : number
var rj4 = 0 | a;
->rj4 : number
+>rj4 : number, Symbol(rj4, Decl(arithmeticOperatorWithAnyAndNumber.ts, 97, 3))
>0 | a : number
->a : any
+>0 : number
+>a : any, Symbol(a, Decl(arithmeticOperatorWithAnyAndNumber.ts, 0, 3))
var rj5 = 0 | 0;
->rj5 : number
+>rj5 : number, Symbol(rj5, Decl(arithmeticOperatorWithAnyAndNumber.ts, 98, 3))
>0 | 0 : number
+>0 : number
+>0 : number
var rj6 = b | 0;
->rj6 : number
+>rj6 : number, Symbol(rj6, Decl(arithmeticOperatorWithAnyAndNumber.ts, 99, 3))
>b | 0 : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>0 : number
var rj7 = 0 | b;
->rj7 : number
+>rj7 : number, Symbol(rj7, Decl(arithmeticOperatorWithAnyAndNumber.ts, 100, 3))
>0 | b : number
->b : number
+>0 : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
var rj8 = b | b;
->rj8 : number
+>rj8 : number, Symbol(rj8, Decl(arithmeticOperatorWithAnyAndNumber.ts, 101, 3))
>b | b : number
->b : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithAnyAndNumber.ts, 1, 3))
diff --git a/tests/baselines/reference/arithmeticOperatorWithEnum.types b/tests/baselines/reference/arithmeticOperatorWithEnum.types
index 2f4ebce8f32..923163200d5 100644
--- a/tests/baselines/reference/arithmeticOperatorWithEnum.types
+++ b/tests/baselines/reference/arithmeticOperatorWithEnum.types
@@ -2,892 +2,912 @@
// operands of an enum type are treated as having the primitive type Number.
enum E {
->E : E
+>E : E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
a,
->a : E
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
b
->b : E
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
}
var a: any;
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var b: number;
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var c: E;
->c : E
->E : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>E : E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
// operator *
var ra1 = c * a;
->ra1 : number
+>ra1 : number, Symbol(ra1, Decl(arithmeticOperatorWithEnum.ts, 12, 3))
>c * a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var ra2 = c * b;
->ra2 : number
+>ra2 : number, Symbol(ra2, Decl(arithmeticOperatorWithEnum.ts, 13, 3))
>c * b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var ra3 = c * c;
->ra3 : number
+>ra3 : number, Symbol(ra3, Decl(arithmeticOperatorWithEnum.ts, 14, 3))
>c * c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var ra4 = a * c;
->ra4 : number
+>ra4 : number, Symbol(ra4, Decl(arithmeticOperatorWithEnum.ts, 15, 3))
>a * c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var ra5 = b * c;
->ra5 : number
+>ra5 : number, Symbol(ra5, Decl(arithmeticOperatorWithEnum.ts, 16, 3))
>b * c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var ra6 = E.a * a;
->ra6 : number
+>ra6 : number, Symbol(ra6, Decl(arithmeticOperatorWithEnum.ts, 17, 3))
>E.a * a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var ra7 = E.a * b;
->ra7 : number
+>ra7 : number, Symbol(ra7, Decl(arithmeticOperatorWithEnum.ts, 18, 3))
>E.a * b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var ra8 = E.a * E.b;
->ra8 : number
+>ra8 : number, Symbol(ra8, Decl(arithmeticOperatorWithEnum.ts, 19, 3))
>E.a * E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var ra9 = E.a * 1;
->ra9 : number
+>ra9 : number, Symbol(ra9, Decl(arithmeticOperatorWithEnum.ts, 20, 3))
>E.a * 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var ra10 = a * E.b;
->ra10 : number
+>ra10 : number, Symbol(ra10, Decl(arithmeticOperatorWithEnum.ts, 21, 3))
>a * E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var ra11 = b * E.b;
->ra11 : number
+>ra11 : number, Symbol(ra11, Decl(arithmeticOperatorWithEnum.ts, 22, 3))
>b * E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var ra12 = 1 * E.b;
->ra12 : number
+>ra12 : number, Symbol(ra12, Decl(arithmeticOperatorWithEnum.ts, 23, 3))
>1 * E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator /
var rb1 = c / a;
->rb1 : number
+>rb1 : number, Symbol(rb1, Decl(arithmeticOperatorWithEnum.ts, 26, 3))
>c / a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rb2 = c / b;
->rb2 : number
+>rb2 : number, Symbol(rb2, Decl(arithmeticOperatorWithEnum.ts, 27, 3))
>c / b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rb3 = c / c;
->rb3 : number
+>rb3 : number, Symbol(rb3, Decl(arithmeticOperatorWithEnum.ts, 28, 3))
>c / c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rb4 = a / c;
->rb4 : number
+>rb4 : number, Symbol(rb4, Decl(arithmeticOperatorWithEnum.ts, 29, 3))
>a / c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rb5 = b / c;
->rb5 : number
+>rb5 : number, Symbol(rb5, Decl(arithmeticOperatorWithEnum.ts, 30, 3))
>b / c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rb6 = E.a / a;
->rb6 : number
+>rb6 : number, Symbol(rb6, Decl(arithmeticOperatorWithEnum.ts, 31, 3))
>E.a / a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rb7 = E.a / b;
->rb7 : number
+>rb7 : number, Symbol(rb7, Decl(arithmeticOperatorWithEnum.ts, 32, 3))
>E.a / b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rb8 = E.a / E.b;
->rb8 : number
+>rb8 : number, Symbol(rb8, Decl(arithmeticOperatorWithEnum.ts, 33, 3))
>E.a / E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rb9 = E.a / 1;
->rb9 : number
+>rb9 : number, Symbol(rb9, Decl(arithmeticOperatorWithEnum.ts, 34, 3))
>E.a / 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var rb10 = a / E.b;
->rb10 : number
+>rb10 : number, Symbol(rb10, Decl(arithmeticOperatorWithEnum.ts, 35, 3))
>a / E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rb11 = b / E.b;
->rb11 : number
+>rb11 : number, Symbol(rb11, Decl(arithmeticOperatorWithEnum.ts, 36, 3))
>b / E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rb12 = 1 / E.b;
->rb12 : number
+>rb12 : number, Symbol(rb12, Decl(arithmeticOperatorWithEnum.ts, 37, 3))
>1 / E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator %
var rc1 = c % a;
->rc1 : number
+>rc1 : number, Symbol(rc1, Decl(arithmeticOperatorWithEnum.ts, 40, 3))
>c % a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rc2 = c % b;
->rc2 : number
+>rc2 : number, Symbol(rc2, Decl(arithmeticOperatorWithEnum.ts, 41, 3))
>c % b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rc3 = c % c;
->rc3 : number
+>rc3 : number, Symbol(rc3, Decl(arithmeticOperatorWithEnum.ts, 42, 3))
>c % c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rc4 = a % c;
->rc4 : number
+>rc4 : number, Symbol(rc4, Decl(arithmeticOperatorWithEnum.ts, 43, 3))
>a % c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rc5 = b % c;
->rc5 : number
+>rc5 : number, Symbol(rc5, Decl(arithmeticOperatorWithEnum.ts, 44, 3))
>b % c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rc6 = E.a % a;
->rc6 : number
+>rc6 : number, Symbol(rc6, Decl(arithmeticOperatorWithEnum.ts, 45, 3))
>E.a % a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rc7 = E.a % b;
->rc7 : number
+>rc7 : number, Symbol(rc7, Decl(arithmeticOperatorWithEnum.ts, 46, 3))
>E.a % b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rc8 = E.a % E.b;
->rc8 : number
+>rc8 : number, Symbol(rc8, Decl(arithmeticOperatorWithEnum.ts, 47, 3))
>E.a % E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rc9 = E.a % 1;
->rc9 : number
+>rc9 : number, Symbol(rc9, Decl(arithmeticOperatorWithEnum.ts, 48, 3))
>E.a % 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var rc10 = a % E.b;
->rc10 : number
+>rc10 : number, Symbol(rc10, Decl(arithmeticOperatorWithEnum.ts, 49, 3))
>a % E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rc11 = b % E.b;
->rc11 : number
+>rc11 : number, Symbol(rc11, Decl(arithmeticOperatorWithEnum.ts, 50, 3))
>b % E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rc12 = 1 % E.b;
->rc12 : number
+>rc12 : number, Symbol(rc12, Decl(arithmeticOperatorWithEnum.ts, 51, 3))
>1 % E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator -
var rd1 = c - a;
->rd1 : number
+>rd1 : number, Symbol(rd1, Decl(arithmeticOperatorWithEnum.ts, 54, 3))
>c - a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rd2 = c - b;
->rd2 : number
+>rd2 : number, Symbol(rd2, Decl(arithmeticOperatorWithEnum.ts, 55, 3))
>c - b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rd3 = c - c;
->rd3 : number
+>rd3 : number, Symbol(rd3, Decl(arithmeticOperatorWithEnum.ts, 56, 3))
>c - c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rd4 = a - c;
->rd4 : number
+>rd4 : number, Symbol(rd4, Decl(arithmeticOperatorWithEnum.ts, 57, 3))
>a - c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rd5 = b - c;
->rd5 : number
+>rd5 : number, Symbol(rd5, Decl(arithmeticOperatorWithEnum.ts, 58, 3))
>b - c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rd6 = E.a - a;
->rd6 : number
+>rd6 : number, Symbol(rd6, Decl(arithmeticOperatorWithEnum.ts, 59, 3))
>E.a - a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rd7 = E.a - b;
->rd7 : number
+>rd7 : number, Symbol(rd7, Decl(arithmeticOperatorWithEnum.ts, 60, 3))
>E.a - b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rd8 = E.a - E.b;
->rd8 : number
+>rd8 : number, Symbol(rd8, Decl(arithmeticOperatorWithEnum.ts, 61, 3))
>E.a - E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rd9 = E.a - 1;
->rd9 : number
+>rd9 : number, Symbol(rd9, Decl(arithmeticOperatorWithEnum.ts, 62, 3))
>E.a - 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var rd10 = a - E.b;
->rd10 : number
+>rd10 : number, Symbol(rd10, Decl(arithmeticOperatorWithEnum.ts, 63, 3))
>a - E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rd11 = b - E.b;
->rd11 : number
+>rd11 : number, Symbol(rd11, Decl(arithmeticOperatorWithEnum.ts, 64, 3))
>b - E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rd12 = 1 - E.b;
->rd12 : number
+>rd12 : number, Symbol(rd12, Decl(arithmeticOperatorWithEnum.ts, 65, 3))
>1 - E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator <<
var re1 = c << a;
->re1 : number
+>re1 : number, Symbol(re1, Decl(arithmeticOperatorWithEnum.ts, 68, 3))
>c << a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var re2 = c << b;
->re2 : number
+>re2 : number, Symbol(re2, Decl(arithmeticOperatorWithEnum.ts, 69, 3))
>c << b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var re3 = c << c;
->re3 : number
+>re3 : number, Symbol(re3, Decl(arithmeticOperatorWithEnum.ts, 70, 3))
>c << c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var re4 = a << c;
->re4 : number
+>re4 : number, Symbol(re4, Decl(arithmeticOperatorWithEnum.ts, 71, 3))
>a << c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var re5 = b << c;
->re5 : number
+>re5 : number, Symbol(re5, Decl(arithmeticOperatorWithEnum.ts, 72, 3))
>b << c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var re6 = E.a << a;
->re6 : number
+>re6 : number, Symbol(re6, Decl(arithmeticOperatorWithEnum.ts, 73, 3))
>E.a << a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var re7 = E.a << b;
->re7 : number
+>re7 : number, Symbol(re7, Decl(arithmeticOperatorWithEnum.ts, 74, 3))
>E.a << b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var re8 = E.a << E.b;
->re8 : number
+>re8 : number, Symbol(re8, Decl(arithmeticOperatorWithEnum.ts, 75, 3))
>E.a << E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var re9 = E.a << 1;
->re9 : number
+>re9 : number, Symbol(re9, Decl(arithmeticOperatorWithEnum.ts, 76, 3))
>E.a << 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var re10 = a << E.b;
->re10 : number
+>re10 : number, Symbol(re10, Decl(arithmeticOperatorWithEnum.ts, 77, 3))
>a << E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var re11 = b << E.b;
->re11 : number
+>re11 : number, Symbol(re11, Decl(arithmeticOperatorWithEnum.ts, 78, 3))
>b << E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var re12 = 1 << E.b;
->re12 : number
+>re12 : number, Symbol(re12, Decl(arithmeticOperatorWithEnum.ts, 79, 3))
>1 << E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator >>
var rf1 = c >> a;
->rf1 : number
+>rf1 : number, Symbol(rf1, Decl(arithmeticOperatorWithEnum.ts, 82, 3))
>c >> a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rf2 = c >> b;
->rf2 : number
+>rf2 : number, Symbol(rf2, Decl(arithmeticOperatorWithEnum.ts, 83, 3))
>c >> b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rf3 = c >> c;
->rf3 : number
+>rf3 : number, Symbol(rf3, Decl(arithmeticOperatorWithEnum.ts, 84, 3))
>c >> c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rf4 = a >> c;
->rf4 : number
+>rf4 : number, Symbol(rf4, Decl(arithmeticOperatorWithEnum.ts, 85, 3))
>a >> c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rf5 = b >> c;
->rf5 : number
+>rf5 : number, Symbol(rf5, Decl(arithmeticOperatorWithEnum.ts, 86, 3))
>b >> c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rf6 = E.a >> a;
->rf6 : number
+>rf6 : number, Symbol(rf6, Decl(arithmeticOperatorWithEnum.ts, 87, 3))
>E.a >> a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rf7 = E.a >> b;
->rf7 : number
+>rf7 : number, Symbol(rf7, Decl(arithmeticOperatorWithEnum.ts, 88, 3))
>E.a >> b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rf8 = E.a >> E.b;
->rf8 : number
+>rf8 : number, Symbol(rf8, Decl(arithmeticOperatorWithEnum.ts, 89, 3))
>E.a >> E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rf9 = E.a >> 1;
->rf9 : number
+>rf9 : number, Symbol(rf9, Decl(arithmeticOperatorWithEnum.ts, 90, 3))
>E.a >> 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var rf10 = a >> E.b;
->rf10 : number
+>rf10 : number, Symbol(rf10, Decl(arithmeticOperatorWithEnum.ts, 91, 3))
>a >> E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rf11 = b >> E.b;
->rf11 : number
+>rf11 : number, Symbol(rf11, Decl(arithmeticOperatorWithEnum.ts, 92, 3))
>b >> E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rf12 = 1 >> E.b;
->rf12 : number
+>rf12 : number, Symbol(rf12, Decl(arithmeticOperatorWithEnum.ts, 93, 3))
>1 >> E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator >>>
var rg1 = c >>> a;
->rg1 : number
+>rg1 : number, Symbol(rg1, Decl(arithmeticOperatorWithEnum.ts, 96, 3))
>c >>> a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rg2 = c >>> b;
->rg2 : number
+>rg2 : number, Symbol(rg2, Decl(arithmeticOperatorWithEnum.ts, 97, 3))
>c >>> b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rg3 = c >>> c;
->rg3 : number
+>rg3 : number, Symbol(rg3, Decl(arithmeticOperatorWithEnum.ts, 98, 3))
>c >>> c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rg4 = a >>> c;
->rg4 : number
+>rg4 : number, Symbol(rg4, Decl(arithmeticOperatorWithEnum.ts, 99, 3))
>a >>> c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rg5 = b >>> c;
->rg5 : number
+>rg5 : number, Symbol(rg5, Decl(arithmeticOperatorWithEnum.ts, 100, 3))
>b >>> c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rg6 = E.a >>> a;
->rg6 : number
+>rg6 : number, Symbol(rg6, Decl(arithmeticOperatorWithEnum.ts, 101, 3))
>E.a >>> a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rg7 = E.a >>> b;
->rg7 : number
+>rg7 : number, Symbol(rg7, Decl(arithmeticOperatorWithEnum.ts, 102, 3))
>E.a >>> b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rg8 = E.a >>> E.b;
->rg8 : number
+>rg8 : number, Symbol(rg8, Decl(arithmeticOperatorWithEnum.ts, 103, 3))
>E.a >>> E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rg9 = E.a >>> 1;
->rg9 : number
+>rg9 : number, Symbol(rg9, Decl(arithmeticOperatorWithEnum.ts, 104, 3))
>E.a >>> 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var rg10 = a >>> E.b;
->rg10 : number
+>rg10 : number, Symbol(rg10, Decl(arithmeticOperatorWithEnum.ts, 105, 3))
>a >>> E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rg11 = b >>> E.b;
->rg11 : number
+>rg11 : number, Symbol(rg11, Decl(arithmeticOperatorWithEnum.ts, 106, 3))
>b >>> E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rg12 = 1 >>> E.b;
->rg12 : number
+>rg12 : number, Symbol(rg12, Decl(arithmeticOperatorWithEnum.ts, 107, 3))
>1 >>> E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator &
var rh1 = c & a;
->rh1 : number
+>rh1 : number, Symbol(rh1, Decl(arithmeticOperatorWithEnum.ts, 110, 3))
>c & a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rh2 = c & b;
->rh2 : number
+>rh2 : number, Symbol(rh2, Decl(arithmeticOperatorWithEnum.ts, 111, 3))
>c & b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rh3 = c & c;
->rh3 : number
+>rh3 : number, Symbol(rh3, Decl(arithmeticOperatorWithEnum.ts, 112, 3))
>c & c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rh4 = a & c;
->rh4 : number
+>rh4 : number, Symbol(rh4, Decl(arithmeticOperatorWithEnum.ts, 113, 3))
>a & c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rh5 = b & c;
->rh5 : number
+>rh5 : number, Symbol(rh5, Decl(arithmeticOperatorWithEnum.ts, 114, 3))
>b & c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rh6 = E.a & a;
->rh6 : number
+>rh6 : number, Symbol(rh6, Decl(arithmeticOperatorWithEnum.ts, 115, 3))
>E.a & a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rh7 = E.a & b;
->rh7 : number
+>rh7 : number, Symbol(rh7, Decl(arithmeticOperatorWithEnum.ts, 116, 3))
>E.a & b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rh8 = E.a & E.b;
->rh8 : number
+>rh8 : number, Symbol(rh8, Decl(arithmeticOperatorWithEnum.ts, 117, 3))
>E.a & E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rh9 = E.a & 1;
->rh9 : number
+>rh9 : number, Symbol(rh9, Decl(arithmeticOperatorWithEnum.ts, 118, 3))
>E.a & 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var rh10 = a & E.b;
->rh10 : number
+>rh10 : number, Symbol(rh10, Decl(arithmeticOperatorWithEnum.ts, 119, 3))
>a & E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rh11 = b & E.b;
->rh11 : number
+>rh11 : number, Symbol(rh11, Decl(arithmeticOperatorWithEnum.ts, 120, 3))
>b & E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rh12 = 1 & E.b;
->rh12 : number
+>rh12 : number, Symbol(rh12, Decl(arithmeticOperatorWithEnum.ts, 121, 3))
>1 & E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator ^
var ri1 = c ^ a;
->ri1 : number
+>ri1 : number, Symbol(ri1, Decl(arithmeticOperatorWithEnum.ts, 124, 3))
>c ^ a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var ri2 = c ^ b;
->ri2 : number
+>ri2 : number, Symbol(ri2, Decl(arithmeticOperatorWithEnum.ts, 125, 3))
>c ^ b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var ri3 = c ^ c;
->ri3 : number
+>ri3 : number, Symbol(ri3, Decl(arithmeticOperatorWithEnum.ts, 126, 3))
>c ^ c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var ri4 = a ^ c;
->ri4 : number
+>ri4 : number, Symbol(ri4, Decl(arithmeticOperatorWithEnum.ts, 127, 3))
>a ^ c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var ri5 = b ^ c;
->ri5 : number
+>ri5 : number, Symbol(ri5, Decl(arithmeticOperatorWithEnum.ts, 128, 3))
>b ^ c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var ri6 = E.a ^ a;
->ri6 : number
+>ri6 : number, Symbol(ri6, Decl(arithmeticOperatorWithEnum.ts, 129, 3))
>E.a ^ a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var ri7 = E.a ^ b;
->ri7 : number
+>ri7 : number, Symbol(ri7, Decl(arithmeticOperatorWithEnum.ts, 130, 3))
>E.a ^ b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var ri8 = E.a ^ E.b;
->ri8 : number
+>ri8 : number, Symbol(ri8, Decl(arithmeticOperatorWithEnum.ts, 131, 3))
>E.a ^ E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var ri9 = E.a ^ 1;
->ri9 : number
+>ri9 : number, Symbol(ri9, Decl(arithmeticOperatorWithEnum.ts, 132, 3))
>E.a ^ 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var ri10 = a ^ E.b;
->ri10 : number
+>ri10 : number, Symbol(ri10, Decl(arithmeticOperatorWithEnum.ts, 133, 3))
>a ^ E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var ri11 = b ^ E.b;
->ri11 : number
+>ri11 : number, Symbol(ri11, Decl(arithmeticOperatorWithEnum.ts, 134, 3))
>b ^ E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var ri12 = 1 ^ E.b;
->ri12 : number
+>ri12 : number, Symbol(ri12, Decl(arithmeticOperatorWithEnum.ts, 135, 3))
>1 ^ E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
// operator |
var rj1 = c | a;
->rj1 : number
+>rj1 : number, Symbol(rj1, Decl(arithmeticOperatorWithEnum.ts, 138, 3))
>c | a : number
->c : E
->a : any
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rj2 = c | b;
->rj2 : number
+>rj2 : number, Symbol(rj2, Decl(arithmeticOperatorWithEnum.ts, 139, 3))
>c | b : number
->c : E
->b : number
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rj3 = c | c;
->rj3 : number
+>rj3 : number, Symbol(rj3, Decl(arithmeticOperatorWithEnum.ts, 140, 3))
>c | c : number
->c : E
->c : E
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rj4 = a | c;
->rj4 : number
+>rj4 : number, Symbol(rj4, Decl(arithmeticOperatorWithEnum.ts, 141, 3))
>a | c : number
->a : any
->c : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rj5 = b | c;
->rj5 : number
+>rj5 : number, Symbol(rj5, Decl(arithmeticOperatorWithEnum.ts, 142, 3))
>b | c : number
->b : number
->c : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>c : E, Symbol(c, Decl(arithmeticOperatorWithEnum.ts, 9, 3))
var rj6 = E.a | a;
->rj6 : number
+>rj6 : number, Symbol(rj6, Decl(arithmeticOperatorWithEnum.ts, 143, 3))
>E.a | a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
var rj7 = E.a | b;
->rj7 : number
+>rj7 : number, Symbol(rj7, Decl(arithmeticOperatorWithEnum.ts, 144, 3))
>E.a | b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
var rj8 = E.a | E.b;
->rj8 : number
+>rj8 : number, Symbol(rj8, Decl(arithmeticOperatorWithEnum.ts, 145, 3))
>E.a | E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rj9 = E.a | 1;
->rj9 : number
+>rj9 : number, Symbol(rj9, Decl(arithmeticOperatorWithEnum.ts, 146, 3))
>E.a | 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnum.ts, 2, 8))
+>1 : number
var rj10 = a | E.b;
->rj10 : number
+>rj10 : number, Symbol(rj10, Decl(arithmeticOperatorWithEnum.ts, 147, 3))
>a | E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnum.ts, 7, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rj11 = b | E.b;
->rj11 : number
+>rj11 : number, Symbol(rj11, Decl(arithmeticOperatorWithEnum.ts, 148, 3))
>b | E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnum.ts, 8, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
var rj12 = 1 | E.b;
->rj12 : number
+>rj12 : number, Symbol(rj12, Decl(arithmeticOperatorWithEnum.ts, 149, 3))
>1 | E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnum.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnum.ts, 3, 6))
diff --git a/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types b/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types
index 7b65ddf7f00..698be4feb7f 100644
--- a/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types
+++ b/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types
@@ -2,902 +2,922 @@
// operands of an enum type are treated as having the primitive type Number.
enum E {
->E : E
+>E : E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
a,
->a : E
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
b
->b : E
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
}
enum F {
->F : F
+>F : F, Symbol(F, Decl(arithmeticOperatorWithEnumUnion.ts, 5, 1))
c,
->c : F
+>c : F, Symbol(F.c, Decl(arithmeticOperatorWithEnumUnion.ts, 6, 8))
d
->d : F
+>d : F, Symbol(F.d, Decl(arithmeticOperatorWithEnumUnion.ts, 7, 6))
}
var a: any;
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var b: number;
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var c: E | F;
->c : E | F
->E : E
->F : F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>E : E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>F : F, Symbol(F, Decl(arithmeticOperatorWithEnumUnion.ts, 5, 1))
// operator *
var ra1 = c * a;
->ra1 : number
+>ra1 : number, Symbol(ra1, Decl(arithmeticOperatorWithEnumUnion.ts, 16, 3))
>c * a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var ra2 = c * b;
->ra2 : number
+>ra2 : number, Symbol(ra2, Decl(arithmeticOperatorWithEnumUnion.ts, 17, 3))
>c * b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var ra3 = c * c;
->ra3 : number
+>ra3 : number, Symbol(ra3, Decl(arithmeticOperatorWithEnumUnion.ts, 18, 3))
>c * c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var ra4 = a * c;
->ra4 : number
+>ra4 : number, Symbol(ra4, Decl(arithmeticOperatorWithEnumUnion.ts, 19, 3))
>a * c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var ra5 = b * c;
->ra5 : number
+>ra5 : number, Symbol(ra5, Decl(arithmeticOperatorWithEnumUnion.ts, 20, 3))
>b * c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var ra6 = E.a * a;
->ra6 : number
+>ra6 : number, Symbol(ra6, Decl(arithmeticOperatorWithEnumUnion.ts, 21, 3))
>E.a * a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var ra7 = E.a * b;
->ra7 : number
+>ra7 : number, Symbol(ra7, Decl(arithmeticOperatorWithEnumUnion.ts, 22, 3))
>E.a * b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var ra8 = E.a * E.b;
->ra8 : number
+>ra8 : number, Symbol(ra8, Decl(arithmeticOperatorWithEnumUnion.ts, 23, 3))
>E.a * E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var ra9 = E.a * 1;
->ra9 : number
+>ra9 : number, Symbol(ra9, Decl(arithmeticOperatorWithEnumUnion.ts, 24, 3))
>E.a * 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var ra10 = a * E.b;
->ra10 : number
+>ra10 : number, Symbol(ra10, Decl(arithmeticOperatorWithEnumUnion.ts, 25, 3))
>a * E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var ra11 = b * E.b;
->ra11 : number
+>ra11 : number, Symbol(ra11, Decl(arithmeticOperatorWithEnumUnion.ts, 26, 3))
>b * E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var ra12 = 1 * E.b;
->ra12 : number
+>ra12 : number, Symbol(ra12, Decl(arithmeticOperatorWithEnumUnion.ts, 27, 3))
>1 * E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator /
var rb1 = c / a;
->rb1 : number
+>rb1 : number, Symbol(rb1, Decl(arithmeticOperatorWithEnumUnion.ts, 30, 3))
>c / a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rb2 = c / b;
->rb2 : number
+>rb2 : number, Symbol(rb2, Decl(arithmeticOperatorWithEnumUnion.ts, 31, 3))
>c / b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rb3 = c / c;
->rb3 : number
+>rb3 : number, Symbol(rb3, Decl(arithmeticOperatorWithEnumUnion.ts, 32, 3))
>c / c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rb4 = a / c;
->rb4 : number
+>rb4 : number, Symbol(rb4, Decl(arithmeticOperatorWithEnumUnion.ts, 33, 3))
>a / c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rb5 = b / c;
->rb5 : number
+>rb5 : number, Symbol(rb5, Decl(arithmeticOperatorWithEnumUnion.ts, 34, 3))
>b / c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rb6 = E.a / a;
->rb6 : number
+>rb6 : number, Symbol(rb6, Decl(arithmeticOperatorWithEnumUnion.ts, 35, 3))
>E.a / a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rb7 = E.a / b;
->rb7 : number
+>rb7 : number, Symbol(rb7, Decl(arithmeticOperatorWithEnumUnion.ts, 36, 3))
>E.a / b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rb8 = E.a / E.b;
->rb8 : number
+>rb8 : number, Symbol(rb8, Decl(arithmeticOperatorWithEnumUnion.ts, 37, 3))
>E.a / E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rb9 = E.a / 1;
->rb9 : number
+>rb9 : number, Symbol(rb9, Decl(arithmeticOperatorWithEnumUnion.ts, 38, 3))
>E.a / 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var rb10 = a / E.b;
->rb10 : number
+>rb10 : number, Symbol(rb10, Decl(arithmeticOperatorWithEnumUnion.ts, 39, 3))
>a / E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rb11 = b / E.b;
->rb11 : number
+>rb11 : number, Symbol(rb11, Decl(arithmeticOperatorWithEnumUnion.ts, 40, 3))
>b / E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rb12 = 1 / E.b;
->rb12 : number
+>rb12 : number, Symbol(rb12, Decl(arithmeticOperatorWithEnumUnion.ts, 41, 3))
>1 / E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator %
var rc1 = c % a;
->rc1 : number
+>rc1 : number, Symbol(rc1, Decl(arithmeticOperatorWithEnumUnion.ts, 44, 3))
>c % a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rc2 = c % b;
->rc2 : number
+>rc2 : number, Symbol(rc2, Decl(arithmeticOperatorWithEnumUnion.ts, 45, 3))
>c % b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rc3 = c % c;
->rc3 : number
+>rc3 : number, Symbol(rc3, Decl(arithmeticOperatorWithEnumUnion.ts, 46, 3))
>c % c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rc4 = a % c;
->rc4 : number
+>rc4 : number, Symbol(rc4, Decl(arithmeticOperatorWithEnumUnion.ts, 47, 3))
>a % c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rc5 = b % c;
->rc5 : number
+>rc5 : number, Symbol(rc5, Decl(arithmeticOperatorWithEnumUnion.ts, 48, 3))
>b % c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rc6 = E.a % a;
->rc6 : number
+>rc6 : number, Symbol(rc6, Decl(arithmeticOperatorWithEnumUnion.ts, 49, 3))
>E.a % a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rc7 = E.a % b;
->rc7 : number
+>rc7 : number, Symbol(rc7, Decl(arithmeticOperatorWithEnumUnion.ts, 50, 3))
>E.a % b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rc8 = E.a % E.b;
->rc8 : number
+>rc8 : number, Symbol(rc8, Decl(arithmeticOperatorWithEnumUnion.ts, 51, 3))
>E.a % E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rc9 = E.a % 1;
->rc9 : number
+>rc9 : number, Symbol(rc9, Decl(arithmeticOperatorWithEnumUnion.ts, 52, 3))
>E.a % 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var rc10 = a % E.b;
->rc10 : number
+>rc10 : number, Symbol(rc10, Decl(arithmeticOperatorWithEnumUnion.ts, 53, 3))
>a % E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rc11 = b % E.b;
->rc11 : number
+>rc11 : number, Symbol(rc11, Decl(arithmeticOperatorWithEnumUnion.ts, 54, 3))
>b % E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rc12 = 1 % E.b;
->rc12 : number
+>rc12 : number, Symbol(rc12, Decl(arithmeticOperatorWithEnumUnion.ts, 55, 3))
>1 % E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator -
var rd1 = c - a;
->rd1 : number
+>rd1 : number, Symbol(rd1, Decl(arithmeticOperatorWithEnumUnion.ts, 58, 3))
>c - a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rd2 = c - b;
->rd2 : number
+>rd2 : number, Symbol(rd2, Decl(arithmeticOperatorWithEnumUnion.ts, 59, 3))
>c - b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rd3 = c - c;
->rd3 : number
+>rd3 : number, Symbol(rd3, Decl(arithmeticOperatorWithEnumUnion.ts, 60, 3))
>c - c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rd4 = a - c;
->rd4 : number
+>rd4 : number, Symbol(rd4, Decl(arithmeticOperatorWithEnumUnion.ts, 61, 3))
>a - c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rd5 = b - c;
->rd5 : number
+>rd5 : number, Symbol(rd5, Decl(arithmeticOperatorWithEnumUnion.ts, 62, 3))
>b - c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rd6 = E.a - a;
->rd6 : number
+>rd6 : number, Symbol(rd6, Decl(arithmeticOperatorWithEnumUnion.ts, 63, 3))
>E.a - a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rd7 = E.a - b;
->rd7 : number
+>rd7 : number, Symbol(rd7, Decl(arithmeticOperatorWithEnumUnion.ts, 64, 3))
>E.a - b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rd8 = E.a - E.b;
->rd8 : number
+>rd8 : number, Symbol(rd8, Decl(arithmeticOperatorWithEnumUnion.ts, 65, 3))
>E.a - E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rd9 = E.a - 1;
->rd9 : number
+>rd9 : number, Symbol(rd9, Decl(arithmeticOperatorWithEnumUnion.ts, 66, 3))
>E.a - 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var rd10 = a - E.b;
->rd10 : number
+>rd10 : number, Symbol(rd10, Decl(arithmeticOperatorWithEnumUnion.ts, 67, 3))
>a - E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rd11 = b - E.b;
->rd11 : number
+>rd11 : number, Symbol(rd11, Decl(arithmeticOperatorWithEnumUnion.ts, 68, 3))
>b - E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rd12 = 1 - E.b;
->rd12 : number
+>rd12 : number, Symbol(rd12, Decl(arithmeticOperatorWithEnumUnion.ts, 69, 3))
>1 - E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator <<
var re1 = c << a;
->re1 : number
+>re1 : number, Symbol(re1, Decl(arithmeticOperatorWithEnumUnion.ts, 72, 3))
>c << a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var re2 = c << b;
->re2 : number
+>re2 : number, Symbol(re2, Decl(arithmeticOperatorWithEnumUnion.ts, 73, 3))
>c << b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var re3 = c << c;
->re3 : number
+>re3 : number, Symbol(re3, Decl(arithmeticOperatorWithEnumUnion.ts, 74, 3))
>c << c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var re4 = a << c;
->re4 : number
+>re4 : number, Symbol(re4, Decl(arithmeticOperatorWithEnumUnion.ts, 75, 3))
>a << c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var re5 = b << c;
->re5 : number
+>re5 : number, Symbol(re5, Decl(arithmeticOperatorWithEnumUnion.ts, 76, 3))
>b << c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var re6 = E.a << a;
->re6 : number
+>re6 : number, Symbol(re6, Decl(arithmeticOperatorWithEnumUnion.ts, 77, 3))
>E.a << a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var re7 = E.a << b;
->re7 : number
+>re7 : number, Symbol(re7, Decl(arithmeticOperatorWithEnumUnion.ts, 78, 3))
>E.a << b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var re8 = E.a << E.b;
->re8 : number
+>re8 : number, Symbol(re8, Decl(arithmeticOperatorWithEnumUnion.ts, 79, 3))
>E.a << E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var re9 = E.a << 1;
->re9 : number
+>re9 : number, Symbol(re9, Decl(arithmeticOperatorWithEnumUnion.ts, 80, 3))
>E.a << 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var re10 = a << E.b;
->re10 : number
+>re10 : number, Symbol(re10, Decl(arithmeticOperatorWithEnumUnion.ts, 81, 3))
>a << E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var re11 = b << E.b;
->re11 : number
+>re11 : number, Symbol(re11, Decl(arithmeticOperatorWithEnumUnion.ts, 82, 3))
>b << E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var re12 = 1 << E.b;
->re12 : number
+>re12 : number, Symbol(re12, Decl(arithmeticOperatorWithEnumUnion.ts, 83, 3))
>1 << E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator >>
var rf1 = c >> a;
->rf1 : number
+>rf1 : number, Symbol(rf1, Decl(arithmeticOperatorWithEnumUnion.ts, 86, 3))
>c >> a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rf2 = c >> b;
->rf2 : number
+>rf2 : number, Symbol(rf2, Decl(arithmeticOperatorWithEnumUnion.ts, 87, 3))
>c >> b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rf3 = c >> c;
->rf3 : number
+>rf3 : number, Symbol(rf3, Decl(arithmeticOperatorWithEnumUnion.ts, 88, 3))
>c >> c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rf4 = a >> c;
->rf4 : number
+>rf4 : number, Symbol(rf4, Decl(arithmeticOperatorWithEnumUnion.ts, 89, 3))
>a >> c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rf5 = b >> c;
->rf5 : number
+>rf5 : number, Symbol(rf5, Decl(arithmeticOperatorWithEnumUnion.ts, 90, 3))
>b >> c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rf6 = E.a >> a;
->rf6 : number
+>rf6 : number, Symbol(rf6, Decl(arithmeticOperatorWithEnumUnion.ts, 91, 3))
>E.a >> a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rf7 = E.a >> b;
->rf7 : number
+>rf7 : number, Symbol(rf7, Decl(arithmeticOperatorWithEnumUnion.ts, 92, 3))
>E.a >> b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rf8 = E.a >> E.b;
->rf8 : number
+>rf8 : number, Symbol(rf8, Decl(arithmeticOperatorWithEnumUnion.ts, 93, 3))
>E.a >> E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rf9 = E.a >> 1;
->rf9 : number
+>rf9 : number, Symbol(rf9, Decl(arithmeticOperatorWithEnumUnion.ts, 94, 3))
>E.a >> 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var rf10 = a >> E.b;
->rf10 : number
+>rf10 : number, Symbol(rf10, Decl(arithmeticOperatorWithEnumUnion.ts, 95, 3))
>a >> E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rf11 = b >> E.b;
->rf11 : number
+>rf11 : number, Symbol(rf11, Decl(arithmeticOperatorWithEnumUnion.ts, 96, 3))
>b >> E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rf12 = 1 >> E.b;
->rf12 : number
+>rf12 : number, Symbol(rf12, Decl(arithmeticOperatorWithEnumUnion.ts, 97, 3))
>1 >> E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator >>>
var rg1 = c >>> a;
->rg1 : number
+>rg1 : number, Symbol(rg1, Decl(arithmeticOperatorWithEnumUnion.ts, 100, 3))
>c >>> a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rg2 = c >>> b;
->rg2 : number
+>rg2 : number, Symbol(rg2, Decl(arithmeticOperatorWithEnumUnion.ts, 101, 3))
>c >>> b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rg3 = c >>> c;
->rg3 : number
+>rg3 : number, Symbol(rg3, Decl(arithmeticOperatorWithEnumUnion.ts, 102, 3))
>c >>> c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rg4 = a >>> c;
->rg4 : number
+>rg4 : number, Symbol(rg4, Decl(arithmeticOperatorWithEnumUnion.ts, 103, 3))
>a >>> c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rg5 = b >>> c;
->rg5 : number
+>rg5 : number, Symbol(rg5, Decl(arithmeticOperatorWithEnumUnion.ts, 104, 3))
>b >>> c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rg6 = E.a >>> a;
->rg6 : number
+>rg6 : number, Symbol(rg6, Decl(arithmeticOperatorWithEnumUnion.ts, 105, 3))
>E.a >>> a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rg7 = E.a >>> b;
->rg7 : number
+>rg7 : number, Symbol(rg7, Decl(arithmeticOperatorWithEnumUnion.ts, 106, 3))
>E.a >>> b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rg8 = E.a >>> E.b;
->rg8 : number
+>rg8 : number, Symbol(rg8, Decl(arithmeticOperatorWithEnumUnion.ts, 107, 3))
>E.a >>> E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rg9 = E.a >>> 1;
->rg9 : number
+>rg9 : number, Symbol(rg9, Decl(arithmeticOperatorWithEnumUnion.ts, 108, 3))
>E.a >>> 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var rg10 = a >>> E.b;
->rg10 : number
+>rg10 : number, Symbol(rg10, Decl(arithmeticOperatorWithEnumUnion.ts, 109, 3))
>a >>> E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rg11 = b >>> E.b;
->rg11 : number
+>rg11 : number, Symbol(rg11, Decl(arithmeticOperatorWithEnumUnion.ts, 110, 3))
>b >>> E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rg12 = 1 >>> E.b;
->rg12 : number
+>rg12 : number, Symbol(rg12, Decl(arithmeticOperatorWithEnumUnion.ts, 111, 3))
>1 >>> E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator &
var rh1 = c & a;
->rh1 : number
+>rh1 : number, Symbol(rh1, Decl(arithmeticOperatorWithEnumUnion.ts, 114, 3))
>c & a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rh2 = c & b;
->rh2 : number
+>rh2 : number, Symbol(rh2, Decl(arithmeticOperatorWithEnumUnion.ts, 115, 3))
>c & b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rh3 = c & c;
->rh3 : number
+>rh3 : number, Symbol(rh3, Decl(arithmeticOperatorWithEnumUnion.ts, 116, 3))
>c & c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rh4 = a & c;
->rh4 : number
+>rh4 : number, Symbol(rh4, Decl(arithmeticOperatorWithEnumUnion.ts, 117, 3))
>a & c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rh5 = b & c;
->rh5 : number
+>rh5 : number, Symbol(rh5, Decl(arithmeticOperatorWithEnumUnion.ts, 118, 3))
>b & c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rh6 = E.a & a;
->rh6 : number
+>rh6 : number, Symbol(rh6, Decl(arithmeticOperatorWithEnumUnion.ts, 119, 3))
>E.a & a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rh7 = E.a & b;
->rh7 : number
+>rh7 : number, Symbol(rh7, Decl(arithmeticOperatorWithEnumUnion.ts, 120, 3))
>E.a & b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rh8 = E.a & E.b;
->rh8 : number
+>rh8 : number, Symbol(rh8, Decl(arithmeticOperatorWithEnumUnion.ts, 121, 3))
>E.a & E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rh9 = E.a & 1;
->rh9 : number
+>rh9 : number, Symbol(rh9, Decl(arithmeticOperatorWithEnumUnion.ts, 122, 3))
>E.a & 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var rh10 = a & E.b;
->rh10 : number
+>rh10 : number, Symbol(rh10, Decl(arithmeticOperatorWithEnumUnion.ts, 123, 3))
>a & E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rh11 = b & E.b;
->rh11 : number
+>rh11 : number, Symbol(rh11, Decl(arithmeticOperatorWithEnumUnion.ts, 124, 3))
>b & E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rh12 = 1 & E.b;
->rh12 : number
+>rh12 : number, Symbol(rh12, Decl(arithmeticOperatorWithEnumUnion.ts, 125, 3))
>1 & E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator ^
var ri1 = c ^ a;
->ri1 : number
+>ri1 : number, Symbol(ri1, Decl(arithmeticOperatorWithEnumUnion.ts, 128, 3))
>c ^ a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var ri2 = c ^ b;
->ri2 : number
+>ri2 : number, Symbol(ri2, Decl(arithmeticOperatorWithEnumUnion.ts, 129, 3))
>c ^ b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var ri3 = c ^ c;
->ri3 : number
+>ri3 : number, Symbol(ri3, Decl(arithmeticOperatorWithEnumUnion.ts, 130, 3))
>c ^ c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var ri4 = a ^ c;
->ri4 : number
+>ri4 : number, Symbol(ri4, Decl(arithmeticOperatorWithEnumUnion.ts, 131, 3))
>a ^ c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var ri5 = b ^ c;
->ri5 : number
+>ri5 : number, Symbol(ri5, Decl(arithmeticOperatorWithEnumUnion.ts, 132, 3))
>b ^ c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var ri6 = E.a ^ a;
->ri6 : number
+>ri6 : number, Symbol(ri6, Decl(arithmeticOperatorWithEnumUnion.ts, 133, 3))
>E.a ^ a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var ri7 = E.a ^ b;
->ri7 : number
+>ri7 : number, Symbol(ri7, Decl(arithmeticOperatorWithEnumUnion.ts, 134, 3))
>E.a ^ b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var ri8 = E.a ^ E.b;
->ri8 : number
+>ri8 : number, Symbol(ri8, Decl(arithmeticOperatorWithEnumUnion.ts, 135, 3))
>E.a ^ E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var ri9 = E.a ^ 1;
->ri9 : number
+>ri9 : number, Symbol(ri9, Decl(arithmeticOperatorWithEnumUnion.ts, 136, 3))
>E.a ^ 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var ri10 = a ^ E.b;
->ri10 : number
+>ri10 : number, Symbol(ri10, Decl(arithmeticOperatorWithEnumUnion.ts, 137, 3))
>a ^ E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var ri11 = b ^ E.b;
->ri11 : number
+>ri11 : number, Symbol(ri11, Decl(arithmeticOperatorWithEnumUnion.ts, 138, 3))
>b ^ E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var ri12 = 1 ^ E.b;
->ri12 : number
+>ri12 : number, Symbol(ri12, Decl(arithmeticOperatorWithEnumUnion.ts, 139, 3))
>1 ^ E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
// operator |
var rj1 = c | a;
->rj1 : number
+>rj1 : number, Symbol(rj1, Decl(arithmeticOperatorWithEnumUnion.ts, 142, 3))
>c | a : number
->c : E | F
->a : any
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rj2 = c | b;
->rj2 : number
+>rj2 : number, Symbol(rj2, Decl(arithmeticOperatorWithEnumUnion.ts, 143, 3))
>c | b : number
->c : E | F
->b : number
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rj3 = c | c;
->rj3 : number
+>rj3 : number, Symbol(rj3, Decl(arithmeticOperatorWithEnumUnion.ts, 144, 3))
>c | c : number
->c : E | F
->c : E | F
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rj4 = a | c;
->rj4 : number
+>rj4 : number, Symbol(rj4, Decl(arithmeticOperatorWithEnumUnion.ts, 145, 3))
>a | c : number
->a : any
->c : E | F
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rj5 = b | c;
->rj5 : number
+>rj5 : number, Symbol(rj5, Decl(arithmeticOperatorWithEnumUnion.ts, 146, 3))
>b | c : number
->b : number
->c : E | F
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>c : E | F, Symbol(c, Decl(arithmeticOperatorWithEnumUnion.ts, 13, 3))
var rj6 = E.a | a;
->rj6 : number
+>rj6 : number, Symbol(rj6, Decl(arithmeticOperatorWithEnumUnion.ts, 147, 3))
>E.a | a : number
->E.a : E
->E : typeof E
->a : E
->a : any
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
var rj7 = E.a | b;
->rj7 : number
+>rj7 : number, Symbol(rj7, Decl(arithmeticOperatorWithEnumUnion.ts, 148, 3))
>E.a | b : number
->E.a : E
->E : typeof E
->a : E
->b : number
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
var rj8 = E.a | E.b;
->rj8 : number
+>rj8 : number, Symbol(rj8, Decl(arithmeticOperatorWithEnumUnion.ts, 149, 3))
>E.a | E.b : number
->E.a : E
->E : typeof E
->a : E
->E.b : E
->E : typeof E
->b : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rj9 = E.a | 1;
->rj9 : number
+>rj9 : number, Symbol(rj9, Decl(arithmeticOperatorWithEnumUnion.ts, 150, 3))
>E.a | 1 : number
->E.a : E
->E : typeof E
->a : E
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithEnumUnion.ts, 2, 8))
+>1 : number
var rj10 = a | E.b;
->rj10 : number
+>rj10 : number, Symbol(rj10, Decl(arithmeticOperatorWithEnumUnion.ts, 151, 3))
>a | E.b : number
->a : any
->E.b : E
->E : typeof E
->b : E
+>a : any, Symbol(a, Decl(arithmeticOperatorWithEnumUnion.ts, 11, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rj11 = b | E.b;
->rj11 : number
+>rj11 : number, Symbol(rj11, Decl(arithmeticOperatorWithEnumUnion.ts, 152, 3))
>b | E.b : number
->b : number
->E.b : E
->E : typeof E
->b : E
+>b : number, Symbol(b, Decl(arithmeticOperatorWithEnumUnion.ts, 12, 3))
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
var rj12 = 1 | E.b;
->rj12 : number
+>rj12 : number, Symbol(rj12, Decl(arithmeticOperatorWithEnumUnion.ts, 153, 3))
>1 | E.b : number
->E.b : E
->E : typeof E
->b : E
+>1 : number
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithEnumUnion.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithEnumUnion.ts, 3, 6))
diff --git a/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types b/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types
index 711ccd0c66c..120b7427453 100644
--- a/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types
+++ b/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types
@@ -3,448 +3,548 @@
// other operand.
enum E {
->E : E
+>E : E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
a,
->a : E
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
b
->b : E
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
}
var a: any;
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var b: number;
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
// operator *
var ra1 = null * a;
->ra1 : number
+>ra1 : number, Symbol(ra1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 12, 3))
>null * a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var ra2 = null * b;
->ra2 : number
+>ra2 : number, Symbol(ra2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 13, 3))
>null * b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var ra3 = null * 1;
->ra3 : number
+>ra3 : number, Symbol(ra3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 14, 3))
>null * 1 : number
+>null : null
+>1 : number
var ra4 = null * E.a;
->ra4 : number
+>ra4 : number, Symbol(ra4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 15, 3))
>null * E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var ra5 = a * null;
->ra5 : number
+>ra5 : number, Symbol(ra5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 16, 3))
>a * null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var ra6 = b * null;
->ra6 : number
+>ra6 : number, Symbol(ra6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 17, 3))
>b * null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var ra7 = 0 * null;
->ra7 : number
+>ra7 : number, Symbol(ra7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 18, 3))
>0 * null : number
+>0 : number
+>null : null
var ra8 = E.b * null;
->ra8 : number
+>ra8 : number, Symbol(ra8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 19, 3))
>E.b * null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator /
var rb1 = null / a;
->rb1 : number
+>rb1 : number, Symbol(rb1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 22, 3))
>null / a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var rb2 = null / b;
->rb2 : number
+>rb2 : number, Symbol(rb2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 23, 3))
>null / b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var rb3 = null / 1;
->rb3 : number
+>rb3 : number, Symbol(rb3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 24, 3))
>null / 1 : number
+>null : null
+>1 : number
var rb4 = null / E.a;
->rb4 : number
+>rb4 : number, Symbol(rb4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 25, 3))
>null / E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var rb5 = a / null;
->rb5 : number
+>rb5 : number, Symbol(rb5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 26, 3))
>a / null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var rb6 = b / null;
->rb6 : number
+>rb6 : number, Symbol(rb6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 27, 3))
>b / null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var rb7 = 0 / null;
->rb7 : number
+>rb7 : number, Symbol(rb7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 28, 3))
>0 / null : number
+>0 : number
+>null : null
var rb8 = E.b / null;
->rb8 : number
+>rb8 : number, Symbol(rb8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 29, 3))
>E.b / null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator %
var rc1 = null % a;
->rc1 : number
+>rc1 : number, Symbol(rc1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 32, 3))
>null % a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var rc2 = null % b;
->rc2 : number
+>rc2 : number, Symbol(rc2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 33, 3))
>null % b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var rc3 = null % 1;
->rc3 : number
+>rc3 : number, Symbol(rc3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 34, 3))
>null % 1 : number
+>null : null
+>1 : number
var rc4 = null % E.a;
->rc4 : number
+>rc4 : number, Symbol(rc4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 35, 3))
>null % E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var rc5 = a % null;
->rc5 : number
+>rc5 : number, Symbol(rc5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 36, 3))
>a % null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var rc6 = b % null;
->rc6 : number
+>rc6 : number, Symbol(rc6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 37, 3))
>b % null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var rc7 = 0 % null;
->rc7 : number
+>rc7 : number, Symbol(rc7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 38, 3))
>0 % null : number
+>0 : number
+>null : null
var rc8 = E.b % null;
->rc8 : number
+>rc8 : number, Symbol(rc8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 39, 3))
>E.b % null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator -
var rd1 = null - a;
->rd1 : number
+>rd1 : number, Symbol(rd1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 42, 3))
>null - a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var rd2 = null - b;
->rd2 : number
+>rd2 : number, Symbol(rd2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 43, 3))
>null - b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var rd3 = null - 1;
->rd3 : number
+>rd3 : number, Symbol(rd3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 44, 3))
>null - 1 : number
+>null : null
+>1 : number
var rd4 = null - E.a;
->rd4 : number
+>rd4 : number, Symbol(rd4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 45, 3))
>null - E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var rd5 = a - null;
->rd5 : number
+>rd5 : number, Symbol(rd5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 46, 3))
>a - null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var rd6 = b - null;
->rd6 : number
+>rd6 : number, Symbol(rd6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 47, 3))
>b - null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var rd7 = 0 - null;
->rd7 : number
+>rd7 : number, Symbol(rd7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 48, 3))
>0 - null : number
+>0 : number
+>null : null
var rd8 = E.b - null;
->rd8 : number
+>rd8 : number, Symbol(rd8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 49, 3))
>E.b - null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator <<
var re1 = null << a;
->re1 : number
+>re1 : number, Symbol(re1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 52, 3))
>null << a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var re2 = null << b;
->re2 : number
+>re2 : number, Symbol(re2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 53, 3))
>null << b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var re3 = null << 1;
->re3 : number
+>re3 : number, Symbol(re3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 54, 3))
>null << 1 : number
+>null : null
+>1 : number
var re4 = null << E.a;
->re4 : number
+>re4 : number, Symbol(re4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 55, 3))
>null << E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var re5 = a << null;
->re5 : number
+>re5 : number, Symbol(re5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 56, 3))
>a << null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var re6 = b << null;
->re6 : number
+>re6 : number, Symbol(re6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 57, 3))
>b << null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var re7 = 0 << null;
->re7 : number
+>re7 : number, Symbol(re7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 58, 3))
>0 << null : number
+>0 : number
+>null : null
var re8 = E.b << null;
->re8 : number
+>re8 : number, Symbol(re8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 59, 3))
>E.b << null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator >>
var rf1 = null >> a;
->rf1 : number
+>rf1 : number, Symbol(rf1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 62, 3))
>null >> a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var rf2 = null >> b;
->rf2 : number
+>rf2 : number, Symbol(rf2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 63, 3))
>null >> b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var rf3 = null >> 1;
->rf3 : number
+>rf3 : number, Symbol(rf3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 64, 3))
>null >> 1 : number
+>null : null
+>1 : number
var rf4 = null >> E.a;
->rf4 : number
+>rf4 : number, Symbol(rf4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 65, 3))
>null >> E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var rf5 = a >> null;
->rf5 : number
+>rf5 : number, Symbol(rf5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 66, 3))
>a >> null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var rf6 = b >> null;
->rf6 : number
+>rf6 : number, Symbol(rf6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 67, 3))
>b >> null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var rf7 = 0 >> null;
->rf7 : number
+>rf7 : number, Symbol(rf7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 68, 3))
>0 >> null : number
+>0 : number
+>null : null
var rf8 = E.b >> null;
->rf8 : number
+>rf8 : number, Symbol(rf8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 69, 3))
>E.b >> null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator >>>
var rg1 = null >>> a;
->rg1 : number
+>rg1 : number, Symbol(rg1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 72, 3))
>null >>> a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var rg2 = null >>> b;
->rg2 : number
+>rg2 : number, Symbol(rg2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 73, 3))
>null >>> b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var rg3 = null >>> 1;
->rg3 : number
+>rg3 : number, Symbol(rg3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 74, 3))
>null >>> 1 : number
+>null : null
+>1 : number
var rg4 = null >>> E.a;
->rg4 : number
+>rg4 : number, Symbol(rg4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 75, 3))
>null >>> E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var rg5 = a >>> null;
->rg5 : number
+>rg5 : number, Symbol(rg5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 76, 3))
>a >>> null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var rg6 = b >>> null;
->rg6 : number
+>rg6 : number, Symbol(rg6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 77, 3))
>b >>> null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var rg7 = 0 >>> null;
->rg7 : number
+>rg7 : number, Symbol(rg7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 78, 3))
>0 >>> null : number
+>0 : number
+>null : null
var rg8 = E.b >>> null;
->rg8 : number
+>rg8 : number, Symbol(rg8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 79, 3))
>E.b >>> null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator &
var rh1 = null & a;
->rh1 : number
+>rh1 : number, Symbol(rh1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 82, 3))
>null & a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var rh2 = null & b;
->rh2 : number
+>rh2 : number, Symbol(rh2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 83, 3))
>null & b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var rh3 = null & 1;
->rh3 : number
+>rh3 : number, Symbol(rh3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 84, 3))
>null & 1 : number
+>null : null
+>1 : number
var rh4 = null & E.a;
->rh4 : number
+>rh4 : number, Symbol(rh4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 85, 3))
>null & E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var rh5 = a & null;
->rh5 : number
+>rh5 : number, Symbol(rh5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 86, 3))
>a & null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var rh6 = b & null;
->rh6 : number
+>rh6 : number, Symbol(rh6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 87, 3))
>b & null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var rh7 = 0 & null;
->rh7 : number
+>rh7 : number, Symbol(rh7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 88, 3))
>0 & null : number
+>0 : number
+>null : null
var rh8 = E.b & null;
->rh8 : number
+>rh8 : number, Symbol(rh8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 89, 3))
>E.b & null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator ^
var ri1 = null ^ a;
->ri1 : number
+>ri1 : number, Symbol(ri1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 92, 3))
>null ^ a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var ri2 = null ^ b;
->ri2 : number
+>ri2 : number, Symbol(ri2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 93, 3))
>null ^ b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var ri3 = null ^ 1;
->ri3 : number
+>ri3 : number, Symbol(ri3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 94, 3))
>null ^ 1 : number
+>null : null
+>1 : number
var ri4 = null ^ E.a;
->ri4 : number
+>ri4 : number, Symbol(ri4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 95, 3))
>null ^ E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var ri5 = a ^ null;
->ri5 : number
+>ri5 : number, Symbol(ri5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 96, 3))
>a ^ null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var ri6 = b ^ null;
->ri6 : number
+>ri6 : number, Symbol(ri6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 97, 3))
>b ^ null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var ri7 = 0 ^ null;
->ri7 : number
+>ri7 : number, Symbol(ri7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 98, 3))
>0 ^ null : number
+>0 : number
+>null : null
var ri8 = E.b ^ null;
->ri8 : number
+>ri8 : number, Symbol(ri8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 99, 3))
>E.b ^ null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
// operator |
var rj1 = null | a;
->rj1 : number
+>rj1 : number, Symbol(rj1, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 102, 3))
>null | a : number
->a : any
+>null : null
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
var rj2 = null | b;
->rj2 : number
+>rj2 : number, Symbol(rj2, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 103, 3))
>null | b : number
->b : number
+>null : null
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
var rj3 = null | 1;
->rj3 : number
+>rj3 : number, Symbol(rj3, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 104, 3))
>null | 1 : number
+>null : null
+>1 : number
var rj4 = null | E.a;
->rj4 : number
+>rj4 : number, Symbol(rj4, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 105, 3))
>null | E.a : number
->E.a : E
->E : typeof E
->a : E
+>null : null
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 3, 8))
var rj5 = a | null;
->rj5 : number
+>rj5 : number, Symbol(rj5, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 106, 3))
>a | null : number
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 8, 3))
+>null : null
var rj6 = b | null;
->rj6 : number
+>rj6 : number, Symbol(rj6, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 107, 3))
>b | null : number
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 9, 3))
+>null : null
var rj7 = 0 | null;
->rj7 : number
+>rj7 : number, Symbol(rj7, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 108, 3))
>0 | null : number
+>0 : number
+>null : null
var rj8 = E.b | null;
->rj8 : number
+>rj8 : number, Symbol(rj8, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 109, 3))
>E.b | null : number
->E.b : E
->E : typeof E
->b : E
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithNullValueAndValidOperands.ts, 4, 6))
+>null : null
diff --git a/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types b/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types
index 7db074df8bb..9dc36bd1d9b 100644
--- a/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types
+++ b/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types
@@ -3,528 +3,548 @@
// other operand.
enum E {
->E : E
+>E : E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
a,
->a : E
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
b
->b : E
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
}
var a: any;
->a : any
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var b: number;
->b : number
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
// operator *
var ra1 = undefined * a;
->ra1 : number
+>ra1 : number, Symbol(ra1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 12, 3))
>undefined * a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var ra2 = undefined * b;
->ra2 : number
+>ra2 : number, Symbol(ra2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 13, 3))
>undefined * b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var ra3 = undefined * 1;
->ra3 : number
+>ra3 : number, Symbol(ra3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 14, 3))
>undefined * 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var ra4 = undefined * E.a;
->ra4 : number
+>ra4 : number, Symbol(ra4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 15, 3))
>undefined * E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var ra5 = a * undefined;
->ra5 : number
+>ra5 : number, Symbol(ra5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 16, 3))
>a * undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var ra6 = b * undefined;
->ra6 : number
+>ra6 : number, Symbol(ra6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 17, 3))
>b * undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var ra7 = 0 * undefined;
->ra7 : number
+>ra7 : number, Symbol(ra7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 18, 3))
>0 * undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var ra8 = E.b * undefined;
->ra8 : number
+>ra8 : number, Symbol(ra8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 19, 3))
>E.b * undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator /
var rb1 = undefined / a;
->rb1 : number
+>rb1 : number, Symbol(rb1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 22, 3))
>undefined / a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var rb2 = undefined / b;
->rb2 : number
+>rb2 : number, Symbol(rb2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 23, 3))
>undefined / b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var rb3 = undefined / 1;
->rb3 : number
+>rb3 : number, Symbol(rb3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 24, 3))
>undefined / 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var rb4 = undefined / E.a;
->rb4 : number
+>rb4 : number, Symbol(rb4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 25, 3))
>undefined / E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var rb5 = a / undefined;
->rb5 : number
+>rb5 : number, Symbol(rb5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 26, 3))
>a / undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var rb6 = b / undefined;
->rb6 : number
+>rb6 : number, Symbol(rb6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 27, 3))
>b / undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var rb7 = 0 / undefined;
->rb7 : number
+>rb7 : number, Symbol(rb7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 28, 3))
>0 / undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var rb8 = E.b / undefined;
->rb8 : number
+>rb8 : number, Symbol(rb8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 29, 3))
>E.b / undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator %
var rc1 = undefined % a;
->rc1 : number
+>rc1 : number, Symbol(rc1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 32, 3))
>undefined % a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var rc2 = undefined % b;
->rc2 : number
+>rc2 : number, Symbol(rc2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 33, 3))
>undefined % b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var rc3 = undefined % 1;
->rc3 : number
+>rc3 : number, Symbol(rc3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 34, 3))
>undefined % 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var rc4 = undefined % E.a;
->rc4 : number
+>rc4 : number, Symbol(rc4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 35, 3))
>undefined % E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var rc5 = a % undefined;
->rc5 : number
+>rc5 : number, Symbol(rc5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 36, 3))
>a % undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var rc6 = b % undefined;
->rc6 : number
+>rc6 : number, Symbol(rc6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 37, 3))
>b % undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var rc7 = 0 % undefined;
->rc7 : number
+>rc7 : number, Symbol(rc7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 38, 3))
>0 % undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var rc8 = E.b % undefined;
->rc8 : number
+>rc8 : number, Symbol(rc8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 39, 3))
>E.b % undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator -
var rd1 = undefined - a;
->rd1 : number
+>rd1 : number, Symbol(rd1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 42, 3))
>undefined - a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var rd2 = undefined - b;
->rd2 : number
+>rd2 : number, Symbol(rd2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 43, 3))
>undefined - b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var rd3 = undefined - 1;
->rd3 : number
+>rd3 : number, Symbol(rd3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 44, 3))
>undefined - 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var rd4 = undefined - E.a;
->rd4 : number
+>rd4 : number, Symbol(rd4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 45, 3))
>undefined - E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var rd5 = a - undefined;
->rd5 : number
+>rd5 : number, Symbol(rd5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 46, 3))
>a - undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var rd6 = b - undefined;
->rd6 : number
+>rd6 : number, Symbol(rd6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 47, 3))
>b - undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var rd7 = 0 - undefined;
->rd7 : number
+>rd7 : number, Symbol(rd7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 48, 3))
>0 - undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var rd8 = E.b - undefined;
->rd8 : number
+>rd8 : number, Symbol(rd8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 49, 3))
>E.b - undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator <<
var re1 = undefined << a;
->re1 : number
+>re1 : number, Symbol(re1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 52, 3))
>undefined << a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var re2 = undefined << b;
->re2 : number
+>re2 : number, Symbol(re2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 53, 3))
>undefined << b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var re3 = undefined << 1;
->re3 : number
+>re3 : number, Symbol(re3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 54, 3))
>undefined << 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var re4 = undefined << E.a;
->re4 : number
+>re4 : number, Symbol(re4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 55, 3))
>undefined << E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var re5 = a << undefined;
->re5 : number
+>re5 : number, Symbol(re5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 56, 3))
>a << undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var re6 = b << undefined;
->re6 : number
+>re6 : number, Symbol(re6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 57, 3))
>b << undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var re7 = 0 << undefined;
->re7 : number
+>re7 : number, Symbol(re7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 58, 3))
>0 << undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var re8 = E.b << undefined;
->re8 : number
+>re8 : number, Symbol(re8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 59, 3))
>E.b << undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator >>
var rf1 = undefined >> a;
->rf1 : number
+>rf1 : number, Symbol(rf1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 62, 3))
>undefined >> a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var rf2 = undefined >> b;
->rf2 : number
+>rf2 : number, Symbol(rf2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 63, 3))
>undefined >> b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var rf3 = undefined >> 1;
->rf3 : number
+>rf3 : number, Symbol(rf3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 64, 3))
>undefined >> 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var rf4 = undefined >> E.a;
->rf4 : number
+>rf4 : number, Symbol(rf4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 65, 3))
>undefined >> E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var rf5 = a >> undefined;
->rf5 : number
+>rf5 : number, Symbol(rf5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 66, 3))
>a >> undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var rf6 = b >> undefined;
->rf6 : number
+>rf6 : number, Symbol(rf6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 67, 3))
>b >> undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var rf7 = 0 >> undefined;
->rf7 : number
+>rf7 : number, Symbol(rf7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 68, 3))
>0 >> undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var rf8 = E.b >> undefined;
->rf8 : number
+>rf8 : number, Symbol(rf8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 69, 3))
>E.b >> undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator >>>
var rg1 = undefined >>> a;
->rg1 : number
+>rg1 : number, Symbol(rg1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 72, 3))
>undefined >>> a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var rg2 = undefined >>> b;
->rg2 : number
+>rg2 : number, Symbol(rg2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 73, 3))
>undefined >>> b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var rg3 = undefined >>> 1;
->rg3 : number
+>rg3 : number, Symbol(rg3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 74, 3))
>undefined >>> 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var rg4 = undefined >>> E.a;
->rg4 : number
+>rg4 : number, Symbol(rg4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 75, 3))
>undefined >>> E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var rg5 = a >>> undefined;
->rg5 : number
+>rg5 : number, Symbol(rg5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 76, 3))
>a >>> undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var rg6 = b >>> undefined;
->rg6 : number
+>rg6 : number, Symbol(rg6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 77, 3))
>b >>> undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var rg7 = 0 >>> undefined;
->rg7 : number
+>rg7 : number, Symbol(rg7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 78, 3))
>0 >>> undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var rg8 = E.b >>> undefined;
->rg8 : number
+>rg8 : number, Symbol(rg8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 79, 3))
>E.b >>> undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator &
var rh1 = undefined & a;
->rh1 : number
+>rh1 : number, Symbol(rh1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 82, 3))
>undefined & a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var rh2 = undefined & b;
->rh2 : number
+>rh2 : number, Symbol(rh2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 83, 3))
>undefined & b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var rh3 = undefined & 1;
->rh3 : number
+>rh3 : number, Symbol(rh3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 84, 3))
>undefined & 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var rh4 = undefined & E.a;
->rh4 : number
+>rh4 : number, Symbol(rh4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 85, 3))
>undefined & E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var rh5 = a & undefined;
->rh5 : number
+>rh5 : number, Symbol(rh5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 86, 3))
>a & undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var rh6 = b & undefined;
->rh6 : number
+>rh6 : number, Symbol(rh6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 87, 3))
>b & undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var rh7 = 0 & undefined;
->rh7 : number
+>rh7 : number, Symbol(rh7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 88, 3))
>0 & undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var rh8 = E.b & undefined;
->rh8 : number
+>rh8 : number, Symbol(rh8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 89, 3))
>E.b & undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator ^
var ri1 = undefined ^ a;
->ri1 : number
+>ri1 : number, Symbol(ri1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 92, 3))
>undefined ^ a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var ri2 = undefined ^ b;
->ri2 : number
+>ri2 : number, Symbol(ri2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 93, 3))
>undefined ^ b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var ri3 = undefined ^ 1;
->ri3 : number
+>ri3 : number, Symbol(ri3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 94, 3))
>undefined ^ 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var ri4 = undefined ^ E.a;
->ri4 : number
+>ri4 : number, Symbol(ri4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 95, 3))
>undefined ^ E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var ri5 = a ^ undefined;
->ri5 : number
+>ri5 : number, Symbol(ri5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 96, 3))
>a ^ undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var ri6 = b ^ undefined;
->ri6 : number
+>ri6 : number, Symbol(ri6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 97, 3))
>b ^ undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var ri7 = 0 ^ undefined;
->ri7 : number
+>ri7 : number, Symbol(ri7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 98, 3))
>0 ^ undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var ri8 = E.b ^ undefined;
->ri8 : number
+>ri8 : number, Symbol(ri8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 99, 3))
>E.b ^ undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
// operator |
var rj1 = undefined | a;
->rj1 : number
+>rj1 : number, Symbol(rj1, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 102, 3))
>undefined | a : number
->undefined : undefined
->a : any
+>undefined : undefined, Symbol(undefined)
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
var rj2 = undefined | b;
->rj2 : number
+>rj2 : number, Symbol(rj2, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 103, 3))
>undefined | b : number
->undefined : undefined
->b : number
+>undefined : undefined, Symbol(undefined)
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
var rj3 = undefined | 1;
->rj3 : number
+>rj3 : number, Symbol(rj3, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 104, 3))
>undefined | 1 : number
->undefined : undefined
+>undefined : undefined, Symbol(undefined)
+>1 : number
var rj4 = undefined | E.a;
->rj4 : number
+>rj4 : number, Symbol(rj4, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 105, 3))
>undefined | E.a : number
->undefined : undefined
->E.a : E
->E : typeof E
->a : E
+>undefined : undefined, Symbol(undefined)
+>E.a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>a : E, Symbol(E.a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 3, 8))
var rj5 = a | undefined;
->rj5 : number
+>rj5 : number, Symbol(rj5, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 106, 3))
>a | undefined : number
->a : any
->undefined : undefined
+>a : any, Symbol(a, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 8, 3))
+>undefined : undefined, Symbol(undefined)
var rj6 = b | undefined;
->rj6 : number
+>rj6 : number, Symbol(rj6, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 107, 3))
>b | undefined : number
->b : number
->undefined : undefined
+>b : number, Symbol(b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 9, 3))
+>undefined : undefined, Symbol(undefined)
var rj7 = 0 | undefined;
->rj7 : number
+>rj7 : number, Symbol(rj7, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 108, 3))
>0 | undefined : number
->undefined : undefined
+>0 : number
+>undefined : undefined, Symbol(undefined)
var rj8 = E.b | undefined;
->rj8 : number
+>rj8 : number, Symbol(rj8, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 109, 3))
>E.b | undefined : number
->E.b : E
->E : typeof E
->b : E
->undefined : undefined
+>E.b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>E : typeof E, Symbol(E, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 0, 0))
+>b : E, Symbol(E.b, Decl(arithmeticOperatorWithUndefinedValueAndValidOperands.ts, 4, 6))
+>undefined : undefined, Symbol(undefined)
diff --git a/tests/baselines/reference/arrayAssignmentTest6.types b/tests/baselines/reference/arrayAssignmentTest6.types
index 0c932cb7556..b9a486f103b 100644
--- a/tests/baselines/reference/arrayAssignmentTest6.types
+++ b/tests/baselines/reference/arrayAssignmentTest6.types
@@ -1,51 +1,52 @@
=== tests/cases/compiler/arrayAssignmentTest6.ts ===
module Test {
->Test : typeof Test
+>Test : typeof Test, Symbol(Test, Decl(arrayAssignmentTest6.ts, 0, 0))
interface IState {
->IState : IState
+>IState : IState, Symbol(IState, Decl(arrayAssignmentTest6.ts, 0, 13))
}
interface IToken {
->IToken : IToken
+>IToken : IToken, Symbol(IToken, Decl(arrayAssignmentTest6.ts, 2, 5))
startIndex: number;
->startIndex : number
+>startIndex : number, Symbol(startIndex, Decl(arrayAssignmentTest6.ts, 3, 22))
}
interface ILineTokens {
->ILineTokens : ILineTokens
+>ILineTokens : ILineTokens, Symbol(ILineTokens, Decl(arrayAssignmentTest6.ts, 5, 5))
tokens: IToken[];
->tokens : IToken[]
->IToken : IToken
+>tokens : IToken[], Symbol(tokens, Decl(arrayAssignmentTest6.ts, 6, 27))
+>IToken : IToken, Symbol(IToken, Decl(arrayAssignmentTest6.ts, 2, 5))
endState: IState;
->endState : IState
->IState : IState
+>endState : IState, Symbol(endState, Decl(arrayAssignmentTest6.ts, 7, 25))
+>IState : IState, Symbol(IState, Decl(arrayAssignmentTest6.ts, 0, 13))
}
interface IMode {
->IMode : IMode
+>IMode : IMode, Symbol(IMode, Decl(arrayAssignmentTest6.ts, 9, 5))
tokenize(line:string, state:IState, includeStates:boolean):ILineTokens;
->tokenize : (line: string, state: IState, includeStates: boolean) => ILineTokens
->line : string
->state : IState
->IState : IState
->includeStates : boolean
->ILineTokens : ILineTokens
+>tokenize : (line: string, state: IState, includeStates: boolean) => ILineTokens, Symbol(tokenize, Decl(arrayAssignmentTest6.ts, 10, 21))
+>line : string, Symbol(line, Decl(arrayAssignmentTest6.ts, 11, 17))
+>state : IState, Symbol(state, Decl(arrayAssignmentTest6.ts, 11, 29))
+>IState : IState, Symbol(IState, Decl(arrayAssignmentTest6.ts, 0, 13))
+>includeStates : boolean, Symbol(includeStates, Decl(arrayAssignmentTest6.ts, 11, 43))
+>ILineTokens : ILineTokens, Symbol(ILineTokens, Decl(arrayAssignmentTest6.ts, 5, 5))
}
export class Bug implements IMode {
->Bug : Bug
->IMode : IMode
+>Bug : Bug, Symbol(Bug, Decl(arrayAssignmentTest6.ts, 12, 5))
+>IMode : IMode, Symbol(IMode, Decl(arrayAssignmentTest6.ts, 9, 5))
public tokenize(line:string, tokens:IToken[], includeStates:boolean):ILineTokens {
->tokenize : (line: string, tokens: IToken[], includeStates: boolean) => ILineTokens
->line : string
->tokens : IToken[]
->IToken : IToken
->includeStates : boolean
->ILineTokens : ILineTokens
+>tokenize : (line: string, tokens: IToken[], includeStates: boolean) => ILineTokens, Symbol(tokenize, Decl(arrayAssignmentTest6.ts, 13, 39))
+>line : string, Symbol(line, Decl(arrayAssignmentTest6.ts, 14, 24))
+>tokens : IToken[], Symbol(tokens, Decl(arrayAssignmentTest6.ts, 14, 36))
+>IToken : IToken, Symbol(IToken, Decl(arrayAssignmentTest6.ts, 2, 5))
+>includeStates : boolean, Symbol(includeStates, Decl(arrayAssignmentTest6.ts, 14, 53))
+>ILineTokens : ILineTokens, Symbol(ILineTokens, Decl(arrayAssignmentTest6.ts, 5, 5))
return null;
+>null : null
}
}
}
diff --git a/tests/baselines/reference/arrayAugment.types b/tests/baselines/reference/arrayAugment.types
index b338d7f5c5f..e784d9cbb52 100644
--- a/tests/baselines/reference/arrayAugment.types
+++ b/tests/baselines/reference/arrayAugment.types
@@ -1,25 +1,27 @@
=== tests/cases/compiler/arrayAugment.ts ===
interface Array {
->Array : T[]
->T : T
+>Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11), Decl(arrayAugment.ts, 0, 0))
+>T : T, Symbol(T, Decl(lib.d.ts, 1007, 16), Decl(arrayAugment.ts, 0, 16))
split: (parts: number) => T[][];
->split : (parts: number) => T[][]
->parts : number
->T : T
+>split : (parts: number) => T[][], Symbol(split, Decl(arrayAugment.ts, 0, 20))
+>parts : number, Symbol(parts, Decl(arrayAugment.ts, 1, 12))
+>T : T, Symbol(T, Decl(lib.d.ts, 1007, 16), Decl(arrayAugment.ts, 0, 16))
}
var x = [''];
->x : string[]
+>x : string[], Symbol(x, Decl(arrayAugment.ts, 4, 3))
>[''] : string[]
+>'' : string
var y = x.split(4);
->y : string[][]
+>y : string[][], Symbol(y, Decl(arrayAugment.ts, 5, 3), Decl(arrayAugment.ts, 6, 3))
>x.split(4) : string[][]
->x.split : (parts: number) => string[][]
->x : string[]
->split : (parts: number) => string[][]
+>x.split : (parts: number) => string[][], Symbol(Array.split, Decl(arrayAugment.ts, 0, 20))
+>x : string[], Symbol(x, Decl(arrayAugment.ts, 4, 3))
+>split : (parts: number) => string[][], Symbol(Array.split, Decl(arrayAugment.ts, 0, 20))
+>4 : number
var y: string[][]; // Expect no error here
->y : string[][]
+>y : string[][], Symbol(y, Decl(arrayAugment.ts, 5, 3), Decl(arrayAugment.ts, 6, 3))
diff --git a/tests/baselines/reference/arrayBestCommonTypes.types b/tests/baselines/reference/arrayBestCommonTypes.types
index 5e34380673d..66cf874850e 100644
--- a/tests/baselines/reference/arrayBestCommonTypes.types
+++ b/tests/baselines/reference/arrayBestCommonTypes.types
@@ -1,662 +1,800 @@
=== tests/cases/compiler/arrayBestCommonTypes.ts ===
module EmptyTypes {
->EmptyTypes : typeof EmptyTypes
+>EmptyTypes : typeof EmptyTypes, Symbol(EmptyTypes, Decl(arrayBestCommonTypes.ts, 0, 0))
interface iface { }
->iface : iface
+>iface : iface, Symbol(iface, Decl(arrayBestCommonTypes.ts, 0, 19))
class base implements iface { }
->base : base
->iface : iface
+>base : base, Symbol(base, Decl(arrayBestCommonTypes.ts, 1, 23))
+>iface : iface, Symbol(iface, Decl(arrayBestCommonTypes.ts, 0, 19))
class base2 implements iface { }
->base2 : base2
->iface : iface
+>base2 : base2, Symbol(base2, Decl(arrayBestCommonTypes.ts, 2, 35))
+>iface : iface, Symbol(iface, Decl(arrayBestCommonTypes.ts, 0, 19))
class derived extends base { }
->derived : derived
->base : base
+>derived : derived, Symbol(derived, Decl(arrayBestCommonTypes.ts, 3, 36))
+>base : base, Symbol(base, Decl(arrayBestCommonTypes.ts, 1, 23))
class f {
->f : f
+>f : f, Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34))
public voidIfAny(x: boolean, y?: boolean): number;
->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
->x : boolean
->y : boolean
+>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
+>x : boolean, Symbol(x, Decl(arrayBestCommonTypes.ts, 8, 25))
+>y : boolean, Symbol(y, Decl(arrayBestCommonTypes.ts, 8, 36))
public voidIfAny(x: string, y?: boolean): number;
->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
->x : string
->y : boolean
+>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
+>x : string, Symbol(x, Decl(arrayBestCommonTypes.ts, 9, 25))
+>y : boolean, Symbol(y, Decl(arrayBestCommonTypes.ts, 9, 35))
public voidIfAny(x: number, y?: boolean): number;
->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
->x : number
->y : boolean
+>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
+>x : number, Symbol(x, Decl(arrayBestCommonTypes.ts, 10, 25))
+>y : boolean, Symbol(y, Decl(arrayBestCommonTypes.ts, 10, 35))
public voidIfAny(x: any, y = false): any { return null; }
->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
->x : any
->y : boolean
+>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
+>x : any, Symbol(x, Decl(arrayBestCommonTypes.ts, 11, 25))
+>y : boolean, Symbol(y, Decl(arrayBestCommonTypes.ts, 11, 32))
+>false : boolean
+>null : null
public x() {
->x : () => void
+>x : () => void, Symbol(x, Decl(arrayBestCommonTypes.ts, 11, 65))
(this.voidIfAny([4, 2][0]));
>(this.voidIfAny([4, 2][0])) : number
>(this.voidIfAny([4, 2][0])) : number
>this.voidIfAny([4, 2][0]) : number
->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
->this : f
->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
+>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
+>this : f, Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34))
+>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
>[4, 2][0] : number
>[4, 2] : number[]
+>4 : number
+>2 : number
+>0 : number
(this.voidIfAny([4, 2, undefined][0]));
>(this.voidIfAny([4, 2, undefined][0])) : number
>(this.voidIfAny([4, 2, undefined][0])) : number
>this.voidIfAny([4, 2, undefined][0]) : number
->this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
->this : f
->voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }
+>this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
+>this : f, Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34))
+>voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; }, Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57))
>[4, 2, undefined][0] : number
>[4, 2, undefined] : number[]
->undefined : undefined
+>4 : number
+>2 : number
+>undefined : undefined, Symbol(undefined)
+>0 : number