Skip to content

Commit d522c88

Browse files
Merge branch 'master' into templates
Conflicts: src/compiler/checker.ts src/services/services.ts
2 parents b8535d3 + 4ffd0b3 commit d522c88

File tree

409 files changed

+5097
-4562
lines changed

Some content is hidden

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

409 files changed

+5097
-4562
lines changed

src/compiler/checker.ts

+255-93
Large diffs are not rendered by default.

src/compiler/core.ts

+6
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,12 @@ module ts {
281281
};
282282
}
283283

284+
export function concatenateDiagnosticMessageChains(headChain: DiagnosticMessageChain, tailChain: DiagnosticMessageChain): DiagnosticMessageChain {
285+
Debug.assert(!headChain.next);
286+
headChain.next = tailChain;
287+
return headChain;
288+
}
289+
284290
export function flattenDiagnosticChain(file: SourceFile, start: number, length: number, diagnosticChain: DiagnosticMessageChain, newLine: string): Diagnostic {
285291
Debug.assert(start >= 0, "start must be non-negative, is " + start);
286292
Debug.assert(length >= 0, "length must be non-negative, is " + length);

src/compiler/diagnosticInformationMap.generated.ts

+6-11
Original file line numberDiff line numberDiff line change
@@ -142,17 +142,16 @@ module ts {
142142
Global_type_0_must_have_1_type_parameter_s: { code: 2317, category: DiagnosticCategory.Error, key: "Global type '{0}' must have {1} type parameter(s)." },
143143
Cannot_find_global_type_0: { code: 2318, category: DiagnosticCategory.Error, key: "Cannot find global type '{0}'." },
144144
Named_properties_0_of_types_1_and_2_are_not_identical: { code: 2319, category: DiagnosticCategory.Error, key: "Named properties '{0}' of types '{1}' and '{2}' are not identical." },
145-
Interface_0_cannot_simultaneously_extend_types_1_and_2_Colon: { code: 2320, category: DiagnosticCategory.Error, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}':" },
145+
Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: DiagnosticCategory.Error, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." },
146146
Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: DiagnosticCategory.Error, key: "Excessive stack depth comparing types '{0}' and '{1}'." },
147-
Type_0_is_not_assignable_to_type_1_Colon: { code: 2322, category: DiagnosticCategory.Error, key: "Type '{0}' is not assignable to type '{1}':" },
148147
Type_0_is_not_assignable_to_type_1: { code: 2323, category: DiagnosticCategory.Error, key: "Type '{0}' is not assignable to type '{1}'." },
149148
Property_0_is_missing_in_type_1: { code: 2324, category: DiagnosticCategory.Error, key: "Property '{0}' is missing in type '{1}'." },
150149
Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: DiagnosticCategory.Error, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." },
151-
Types_of_property_0_are_incompatible_Colon: { code: 2326, category: DiagnosticCategory.Error, key: "Types of property '{0}' are incompatible:" },
150+
Types_of_property_0_are_incompatible: { code: 2326, category: DiagnosticCategory.Error, key: "Types of property '{0}' are incompatible." },
152151
Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: DiagnosticCategory.Error, key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." },
153-
Types_of_parameters_0_and_1_are_incompatible_Colon: { code: 2328, category: DiagnosticCategory.Error, key: "Types of parameters '{0}' and '{1}' are incompatible:" },
152+
Types_of_parameters_0_and_1_are_incompatible: { code: 2328, category: DiagnosticCategory.Error, key: "Types of parameters '{0}' and '{1}' are incompatible." },
154153
Index_signature_is_missing_in_type_0: { code: 2329, category: DiagnosticCategory.Error, key: "Index signature is missing in type '{0}'." },
155-
Index_signatures_are_incompatible_Colon: { code: 2330, category: DiagnosticCategory.Error, key: "Index signatures are incompatible:" },
154+
Index_signatures_are_incompatible: { code: 2330, category: DiagnosticCategory.Error, key: "Index signatures are incompatible." },
156155
this_cannot_be_referenced_in_a_module_body: { code: 2331, category: DiagnosticCategory.Error, key: "'this' cannot be referenced in a module body." },
157156
this_cannot_be_referenced_in_current_location: { code: 2332, category: DiagnosticCategory.Error, key: "'this' cannot be referenced in current location." },
158157
this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: DiagnosticCategory.Error, key: "'this' cannot be referenced in constructor arguments." },
@@ -165,7 +164,6 @@ module ts {
165164
Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { code: 2340, category: DiagnosticCategory.Error, key: "Only public and protected methods of the base class are accessible via the 'super' keyword" },
166165
Property_0_is_private_and_only_accessible_within_class_1: { code: 2341, category: DiagnosticCategory.Error, key: "Property '{0}' is private and only accessible within class '{1}'." },
167166
An_index_expression_argument_must_be_of_type_string_number_or_any: { code: 2342, category: DiagnosticCategory.Error, key: "An index expression argument must be of type 'string', 'number', or 'any'." },
168-
Type_0_does_not_satisfy_the_constraint_1_Colon: { code: 2343, category: DiagnosticCategory.Error, key: "Type '{0}' does not satisfy the constraint '{1}':" },
169167
Type_0_does_not_satisfy_the_constraint_1: { code: 2344, category: DiagnosticCategory.Error, key: "Type '{0}' does not satisfy the constraint '{1}'." },
170168
Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { code: 2345, category: DiagnosticCategory.Error, key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." },
171169
Supplied_parameters_do_not_match_any_signature_of_call_target: { code: 2346, category: DiagnosticCategory.Error, key: "Supplied parameters do not match any signature of call target." },
@@ -175,7 +173,6 @@ module ts {
175173
Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: DiagnosticCategory.Error, key: "Only a void function can be called with the 'new' keyword." },
176174
Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: DiagnosticCategory.Error, key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." },
177175
Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: DiagnosticCategory.Error, key: "Neither type '{0}' nor type '{1}' is assignable to the other." },
178-
Neither_type_0_nor_type_1_is_assignable_to_the_other_Colon: { code: 2353, category: DiagnosticCategory.Error, key: "Neither type '{0}' nor type '{1}' is assignable to the other:" },
179176
No_best_common_type_exists_among_return_expressions: { code: 2354, category: DiagnosticCategory.Error, key: "No best common type exists among return expressions." },
180177
A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2355, category: DiagnosticCategory.Error, key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." },
181178
An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { code: 2356, category: DiagnosticCategory.Error, key: "An arithmetic operand must be of type 'any', 'number' or an enum type." },
@@ -236,20 +233,16 @@ module ts {
236233
Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { code: 2413, category: DiagnosticCategory.Error, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." },
237234
Class_name_cannot_be_0: { code: 2414, category: DiagnosticCategory.Error, key: "Class name cannot be '{0}'" },
238235
Class_0_incorrectly_extends_base_class_1: { code: 2415, category: DiagnosticCategory.Error, key: "Class '{0}' incorrectly extends base class '{1}'." },
239-
Class_0_incorrectly_extends_base_class_1_Colon: { code: 2416, category: DiagnosticCategory.Error, key: "Class '{0}' incorrectly extends base class '{1}':" },
240236
Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: DiagnosticCategory.Error, key: "Class static side '{0}' incorrectly extends base class static side '{1}'." },
241-
Class_static_side_0_incorrectly_extends_base_class_static_side_1_Colon: { code: 2418, category: DiagnosticCategory.Error, key: "Class static side '{0}' incorrectly extends base class static side '{1}':" },
242237
Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { code: 2419, category: DiagnosticCategory.Error, key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." },
243238
Class_0_incorrectly_implements_interface_1: { code: 2420, category: DiagnosticCategory.Error, key: "Class '{0}' incorrectly implements interface '{1}'." },
244-
Class_0_incorrectly_implements_interface_1_Colon: { code: 2421, category: DiagnosticCategory.Error, key: "Class '{0}' incorrectly implements interface '{1}':" },
245239
A_class_may_only_implement_another_class_or_interface: { code: 2422, category: DiagnosticCategory.Error, key: "A class may only implement another class or interface." },
246240
Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { code: 2423, category: DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." },
247241
Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { code: 2424, category: DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." },
248242
Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2425, category: DiagnosticCategory.Error, key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." },
249243
Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2426, category: DiagnosticCategory.Error, key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." },
250244
Interface_name_cannot_be_0: { code: 2427, category: DiagnosticCategory.Error, key: "Interface name cannot be '{0}'" },
251245
All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: DiagnosticCategory.Error, key: "All declarations of an interface must have identical type parameters." },
252-
Interface_0_incorrectly_extends_interface_1_Colon: { code: 2429, category: DiagnosticCategory.Error, key: "Interface '{0}' incorrectly extends interface '{1}':" },
253246
Interface_0_incorrectly_extends_interface_1: { code: 2430, category: DiagnosticCategory.Error, key: "Interface '{0}' incorrectly extends interface '{1}'." },
254247
Enum_name_cannot_be_0: { code: 2431, category: DiagnosticCategory.Error, key: "Enum name cannot be '{0}'" },
255248
In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { code: 2432, category: DiagnosticCategory.Error, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." },
@@ -273,6 +266,8 @@ module ts {
273266
Left_hand_side_of_assignment_expression_cannot_be_a_constant: { code: 2450, category: DiagnosticCategory.Error, key: "Left-hand side of assignment expression cannot be a constant.", isEarly: true },
274267
Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: DiagnosticCategory.Error, key: "Cannot redeclare block-scoped variable '{0}'.", isEarly: true },
275268
An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: DiagnosticCategory.Error, key: "An enum member cannot have a numeric name." },
269+
The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: DiagnosticCategory.Error, key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." },
270+
Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: DiagnosticCategory.Error, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." },
276271
Import_declaration_0_is_using_private_name_1: { code: 4000, category: DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." },
277272
Type_parameter_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4001, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using name '{1}' from private module '{2}'." },
278273
Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." },

src/compiler/diagnosticMessages.json

+13-29
Original file line numberDiff line numberDiff line change
@@ -560,15 +560,15 @@
560560
"category": "Error",
561561
"code": 2319
562562
},
563-
"Interface '{0}' cannot simultaneously extend types '{1}' and '{2}':": {
563+
"Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'.": {
564564
"category": "Error",
565565
"code": 2320
566566
},
567567
"Excessive stack depth comparing types '{0}' and '{1}'.": {
568568
"category": "Error",
569569
"code": 2321
570570
},
571-
"Type '{0}' is not assignable to type '{1}':": {
571+
"Type '{0}' is not assignable to type '{1}'.": {
572572
"category": "Error",
573573
"code": 2322
574574
},
@@ -584,23 +584,23 @@
584584
"category": "Error",
585585
"code": 2325
586586
},
587-
"Types of property '{0}' are incompatible:": {
587+
"Types of property '{0}' are incompatible.": {
588588
"category": "Error",
589589
"code": 2326
590590
},
591591
"Property '{0}' is optional in type '{1}' but required in type '{2}'.": {
592592
"category": "Error",
593593
"code": 2327
594594
},
595-
"Types of parameters '{0}' and '{1}' are incompatible:": {
595+
"Types of parameters '{0}' and '{1}' are incompatible.": {
596596
"category": "Error",
597597
"code": 2328
598598
},
599599
"Index signature is missing in type '{0}'.": {
600600
"category": "Error",
601601
"code": 2329
602602
},
603-
"Index signatures are incompatible:": {
603+
"Index signatures are incompatible.": {
604604
"category": "Error",
605605
"code": 2330
606606
},
@@ -652,10 +652,6 @@
652652
"category": "Error",
653653
"code": 2342
654654
},
655-
"Type '{0}' does not satisfy the constraint '{1}':": {
656-
"category": "Error",
657-
"code": 2343
658-
},
659655
"Type '{0}' does not satisfy the constraint '{1}'.": {
660656
"category": "Error",
661657
"code": 2344
@@ -692,10 +688,6 @@
692688
"category": "Error",
693689
"code": 2352
694690
},
695-
"Neither type '{0}' nor type '{1}' is assignable to the other:": {
696-
"category": "Error",
697-
"code": 2353
698-
},
699691
"No best common type exists among return expressions.": {
700692
"category": "Error",
701693
"code": 2354
@@ -936,18 +928,10 @@
936928
"category": "Error",
937929
"code": 2415
938930
},
939-
"Class '{0}' incorrectly extends base class '{1}':": {
940-
"category": "Error",
941-
"code": 2416
942-
},
943931
"Class static side '{0}' incorrectly extends base class static side '{1}'.": {
944932
"category": "Error",
945933
"code": 2417
946934
},
947-
"Class static side '{0}' incorrectly extends base class static side '{1}':": {
948-
"category": "Error",
949-
"code": 2418
950-
},
951935
"Type name '{0}' in extends clause does not reference constructor function for '{0}'.": {
952936
"category": "Error",
953937
"code": 2419
@@ -956,10 +940,6 @@
956940
"category": "Error",
957941
"code": 2420
958942
},
959-
"Class '{0}' incorrectly implements interface '{1}':": {
960-
"category": "Error",
961-
"code": 2421
962-
},
963943
"A class may only implement another class or interface.": {
964944
"category": "Error",
965945
"code": 2422
@@ -988,10 +968,6 @@
988968
"category": "Error",
989969
"code": 2428
990970
},
991-
"Interface '{0}' incorrectly extends interface '{1}':": {
992-
"category": "Error",
993-
"code": 2429
994-
},
995971
"Interface '{0}' incorrectly extends interface '{1}'.": {
996972
"category": "Error",
997973
"code": 2430
@@ -1088,6 +1064,14 @@
10881064
"category": "Error",
10891065
"code": 2452
10901066
},
1067+
"The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly.": {
1068+
"category": "Error",
1069+
"code": 2453
1070+
},
1071+
"Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'.": {
1072+
"category": "Error",
1073+
"code": 2455
1074+
},
10911075

10921076
"Import declaration '{0}' is using private name '{1}'.": {
10931077
"category": "Error",

src/compiler/types.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -794,7 +794,7 @@ module ts {
794794
}
795795

796796
export enum SymbolFlags {
797-
FunctionScopedVariable = 0x00000001, // Variable (var) or parameter
797+
FunctionScopedVariable = 0x00000001, // Variable (var) or parameter
798798
Property = 0x00000002, // Property or enum member
799799
EnumMember = 0x00000004, // Enum member
800800
Function = 0x00000008, // Function
@@ -1063,6 +1063,8 @@ module ts {
10631063
inferenceCount: number; // Incremented for every inference made (whether new or not)
10641064
inferences: Type[][]; // Inferences made for each type parameter
10651065
inferredTypes: Type[]; // Inferred type for each type parameter
1066+
failedTypeParameterIndex?: number; // Index of type parameter for which inference failed
1067+
// It is optional because in contextual signature instantiation, nothing fails
10661068
}
10671069

10681070
export interface DiagnosticMessage {

0 commit comments

Comments
 (0)