Skip to content

Commit 25ed020

Browse files
Merge branch 'master' into newLineClassification
2 parents c7f260f + 11944be commit 25ed020

File tree

685 files changed

+6838
-9841
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

685 files changed

+6838
-9841
lines changed

Jakefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ var servicesSources = [
6868
"navigateTo.ts",
6969
"navigationBar.ts",
7070
"outliningElementsCollector.ts",
71+
"patternMatcher.ts",
7172
"services.ts",
7273
"shims.ts",
7374
"signatureHelp.ts",
@@ -139,7 +140,8 @@ var harnessSources = [
139140
"incrementalParser.ts",
140141
"services/colorization.ts",
141142
"services/documentRegistry.ts",
142-
"services/preProcessFile.ts"
143+
"services/preProcessFile.ts",
144+
"services/patternMatcher.ts"
143145
].map(function (f) {
144146
return path.join(unittestsDirectory, f);
145147
})).concat([

src/compiler/checker.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)