@@ -3409,7 +3409,7 @@ module ts {
34093409 return isContextSensitive((<ConditionalExpression>node).whenTrue) ||
34103410 isContextSensitive((<ConditionalExpression>node).whenFalse);
34113411 case SyntaxKind.BinaryExpression:
3412- return (<BinaryExpression>node).operator === SyntaxKind.BarBarToken &&
3412+ return (<BinaryExpression>node).operatorToken.kind === SyntaxKind.BarBarToken &&
34133413 (isContextSensitive((<BinaryExpression>node).left) || isContextSensitive((<BinaryExpression>node).right));
34143414 case SyntaxKind.PropertyAssignment:
34153415 return isContextSensitive((<PropertyAssignment>node).initializer);
@@ -4591,7 +4591,7 @@ module ts {
45914591 return links.assignmentChecks[symbol.id] = isAssignedIn(node);
45924592
45934593 function isAssignedInBinaryExpression(node: BinaryExpression) {
4594- if (node.operator >= SyntaxKind.FirstAssignment && node.operator <= SyntaxKind.LastAssignment) {
4594+ if (node.operatorToken.kind >= SyntaxKind.FirstAssignment && node.operatorToken.kind <= SyntaxKind.LastAssignment) {
45954595 var n = node.left;
45964596 while (n.kind === SyntaxKind.ParenthesizedExpression) {
45974597 n = (<ParenthesizedExpression>n).expression;
@@ -4724,10 +4724,10 @@ module ts {
47244724 case SyntaxKind.BinaryExpression:
47254725 // In the right operand of an && or ||, narrow based on left operand
47264726 if (child === (<BinaryExpression>node).right) {
4727- if ((<BinaryExpression>node).operator === SyntaxKind.AmpersandAmpersandToken) {
4727+ if ((<BinaryExpression>node).operatorToken.kind === SyntaxKind.AmpersandAmpersandToken) {
47284728 narrowedType = narrowType(type, (<BinaryExpression>node).left, /*assumeTrue*/ true);
47294729 }
4730- else if ((<BinaryExpression>node).operator === SyntaxKind.BarBarToken) {
4730+ else if ((<BinaryExpression>node).operatorToken.kind === SyntaxKind.BarBarToken) {
47314731 narrowedType = narrowType(type, (<BinaryExpression>node).left, /*assumeTrue*/ false);
47324732 }
47334733 }
@@ -4765,7 +4765,7 @@ module ts {
47654765 return type;
47664766 }
47674767 var typeInfo = primitiveTypeInfo[right.text];
4768- if (expr.operator === SyntaxKind.ExclamationEqualsEqualsToken) {
4768+ if (expr.operatorToken.kind === SyntaxKind.ExclamationEqualsEqualsToken) {
47694769 assumeTrue = !assumeTrue;
47704770 }
47714771 if (assumeTrue) {
@@ -4855,7 +4855,7 @@ module ts {
48554855 case SyntaxKind.ParenthesizedExpression:
48564856 return narrowType(type, (<ParenthesizedExpression>expr).expression, assumeTrue);
48574857 case SyntaxKind.BinaryExpression:
4858- var operator = (<BinaryExpression>expr).operator ;
4858+ var operator = (<BinaryExpression>expr).operatorToken.kind ;
48594859 if (operator === SyntaxKind.EqualsEqualsEqualsToken || operator === SyntaxKind.ExclamationEqualsEqualsToken) {
48604860 return narrowTypeByEquality(type, <BinaryExpression>expr, assumeTrue);
48614861 }
@@ -5202,7 +5202,7 @@ module ts {
52025202
52035203 function getContextualTypeForBinaryOperand(node: Expression): Type {
52045204 var binaryExpression = <BinaryExpression>node.parent;
5205- var operator = binaryExpression.operator ;
5205+ var operator = binaryExpression.operatorToken.kind ;
52065206 if (operator >= SyntaxKind.FirstAssignment && operator <= SyntaxKind.LastAssignment) {
52075207 // In an assignment expression, the right operand is contextually typed by the type of the left operand.
52085208 if (node === binaryExpression.right) {
@@ -5452,7 +5452,7 @@ module ts {
54525452 // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'.
54535453 function isAssignmentTarget(node: Node): boolean {
54545454 var parent = node.parent;
5455- if (parent.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>parent).operator === SyntaxKind.EqualsToken && (<BinaryExpression>parent).left === node) {
5455+ if (parent.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>parent).operatorToken.kind === SyntaxKind.EqualsToken && (<BinaryExpression>parent).left === node) {
54565456 return true;
54575457 }
54585458 if (parent.kind === SyntaxKind.PropertyAssignment) {
@@ -7108,7 +7108,7 @@ module ts {
71087108 }
71097109
71107110 function checkDestructuringAssignment(target: Expression, sourceType: Type, contextualMapper?: TypeMapper): Type {
7111- if (target.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>target).operator === SyntaxKind.EqualsToken) {
7111+ if (target.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>target).operatorToken.kind === SyntaxKind.EqualsToken) {
71127112 checkBinaryExpression(<BinaryExpression>target, contextualMapper);
71137113 target = (<BinaryExpression>target).left;
71147114 }
@@ -7131,13 +7131,13 @@ module ts {
71317131
71327132 function checkBinaryExpression(node: BinaryExpression, contextualMapper?: TypeMapper) {
71337133 // Grammar checking
7134- if (isLeftHandSideExpression(node.left) && isAssignmentOperator(node.operator )) {
7134+ if (isLeftHandSideExpression(node.left) && isAssignmentOperator(node.operatorToken.kind )) {
71357135 // ECMA 262 (Annex C) The identifier eval or arguments may not appear as the LeftHandSideExpression of an
71367136 // Assignment operator(11.13) or of a PostfixExpression(11.3)
71377137 checkGrammarEvalOrArgumentsInStrictMode(node, <Identifier>node.left);
71387138 }
71397139
7140- var operator = node.operator ;
7140+ var operator = node.operatorToken.kind ;
71417141 if (operator === SyntaxKind.EqualsToken && (node.left.kind === SyntaxKind.ObjectLiteralExpression || node.left.kind === SyntaxKind.ArrayLiteralExpression)) {
71427142 return checkDestructuringAssignment(node.left, checkExpression(node.right, contextualMapper), contextualMapper);
71437143 }
@@ -7178,8 +7178,8 @@ module ts {
71787178 // try and return them a helpful suggestion
71797179 if ((leftType.flags & TypeFlags.Boolean) &&
71807180 (rightType.flags & TypeFlags.Boolean) &&
7181- (suggestedOperator = getSuggestedBooleanOperator(node.operator )) !== undefined) {
7182- error(node, Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead, tokenToString(node.operator ), tokenToString(suggestedOperator));
7181+ (suggestedOperator = getSuggestedBooleanOperator(node.operatorToken.kind )) !== undefined) {
7182+ error(node, Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead, tokenToString(node.operatorToken.kind ), tokenToString(suggestedOperator));
71837183 }
71847184 else {
71857185 // otherwise just check each operand separately and report errors as normal
@@ -7312,7 +7312,7 @@ module ts {
73127312 }
73137313
73147314 function reportOperatorError() {
7315- error(node, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2, tokenToString(node.operator ), typeToString(leftType), typeToString(rightType));
7315+ error(node, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2, tokenToString(node.operatorToken.kind ), typeToString(leftType), typeToString(rightType));
73167316 }
73177317 }
73187318
@@ -9252,7 +9252,7 @@ module ts {
92529252 if (right === undefined) {
92539253 return undefined;
92549254 }
9255- switch ((<BinaryExpression>e).operator ) {
9255+ switch ((<BinaryExpression>e).operatorToken.kind ) {
92569256 case SyntaxKind.BarToken: return left | right;
92579257 case SyntaxKind.AmpersandToken: return left & right;
92589258 case SyntaxKind.GreaterThanGreaterThanToken: return left >> right;
@@ -10827,7 +10827,7 @@ module ts {
1082710827 }
1082810828
1082910829 var computedPropertyName = <ComputedPropertyName>node;
10830- if (computedPropertyName.expression.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>computedPropertyName.expression).operator === SyntaxKind.CommaToken) {
10830+ if (computedPropertyName.expression.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>computedPropertyName.expression).operatorToken.kind === SyntaxKind.CommaToken) {
1083110831 return grammarErrorOnNode(computedPropertyName.expression, Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name);
1083210832 }
1083310833 }
0 commit comments