Skip to content

Commit 42c1bdd

Browse files
author
Paul van Brenk
committed
Merge branch 'master' into tsconfigSupportInLS
2 parents a3885e5 + f5b7543 commit 42c1bdd

File tree

81 files changed

+2133
-120
lines changed

Some content is hidden

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

81 files changed

+2133
-120
lines changed

src/compiler/checker.ts

Lines changed: 31 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2516,10 +2516,11 @@ module ts {
25162516
}
25172517
}
25182518

2519-
function getDeclaredTypeOfClass(symbol: Symbol): InterfaceType {
2519+
function getDeclaredTypeOfClassOrInterface(symbol: Symbol): InterfaceType {
25202520
let links = getSymbolLinks(symbol);
25212521
if (!links.declaredType) {
2522-
let type = links.declaredType = <InterfaceType>createObjectType(TypeFlags.Class, symbol);
2522+
let kind = symbol.flags & SymbolFlags.Class ? TypeFlags.Class : TypeFlags.Interface;
2523+
let type = links.declaredType = <InterfaceType>createObjectType(kind, symbol);
25232524
let typeParameters = getTypeParametersOfClassOrInterface(symbol);
25242525
if (typeParameters) {
25252526
type.flags |= TypeFlags.Reference;
@@ -2529,35 +2530,6 @@ module ts {
25292530
(<GenericType>type).target = <GenericType>type;
25302531
(<GenericType>type).typeArguments = type.typeParameters;
25312532
}
2532-
2533-
type.declaredProperties = getNamedMembers(symbol.members);
2534-
type.declaredCallSignatures = emptyArray;
2535-
type.declaredConstructSignatures = emptyArray;
2536-
type.declaredStringIndexType = getIndexTypeOfSymbol(symbol, IndexKind.String);
2537-
type.declaredNumberIndexType = getIndexTypeOfSymbol(symbol, IndexKind.Number);
2538-
}
2539-
return <InterfaceType>links.declaredType;
2540-
}
2541-
2542-
function getDeclaredTypeOfInterface(symbol: Symbol): InterfaceType {
2543-
let links = getSymbolLinks(symbol);
2544-
if (!links.declaredType) {
2545-
let type = links.declaredType = <InterfaceType>createObjectType(TypeFlags.Interface, symbol);
2546-
let typeParameters = getTypeParametersOfClassOrInterface(symbol);
2547-
if (typeParameters) {
2548-
type.flags |= TypeFlags.Reference;
2549-
type.typeParameters = typeParameters;
2550-
(<GenericType>type).instantiations = {};
2551-
(<GenericType>type).instantiations[getTypeListId(type.typeParameters)] = <GenericType>type;
2552-
(<GenericType>type).target = <GenericType>type;
2553-
(<GenericType>type).typeArguments = type.typeParameters;
2554-
}
2555-
2556-
type.declaredProperties = getNamedMembers(symbol.members);
2557-
type.declaredCallSignatures = getSignaturesOfSymbol(symbol.members["__call"]);
2558-
type.declaredConstructSignatures = getSignaturesOfSymbol(symbol.members["__new"]);
2559-
type.declaredStringIndexType = getIndexTypeOfSymbol(symbol, IndexKind.String);
2560-
type.declaredNumberIndexType = getIndexTypeOfSymbol(symbol, IndexKind.Number);
25612533
}
25622534
return <InterfaceType>links.declaredType;
25632535
}
@@ -2613,11 +2585,8 @@ module ts {
26132585

26142586
function getDeclaredTypeOfSymbol(symbol: Symbol): Type {
26152587
Debug.assert((symbol.flags & SymbolFlags.Instantiated) === 0);
2616-
if (symbol.flags & SymbolFlags.Class) {
2617-
return getDeclaredTypeOfClass(symbol);
2618-
}
2619-
if (symbol.flags & SymbolFlags.Interface) {
2620-
return getDeclaredTypeOfInterface(symbol);
2588+
if (symbol.flags & (SymbolFlags.Class | SymbolFlags.Interface)) {
2589+
return getDeclaredTypeOfClassOrInterface(symbol);
26212590
}
26222591
if (symbol.flags & SymbolFlags.TypeAlias) {
26232592
return getDeclaredTypeOfTypeAlias(symbol);
@@ -2666,15 +2635,28 @@ module ts {
26662635
}
26672636
}
26682637

2638+
function resolveDeclaredMembers(type: InterfaceType): InterfaceTypeWithDeclaredMembers {
2639+
if (!(<InterfaceTypeWithDeclaredMembers>type).declaredProperties) {
2640+
var symbol = type.symbol;
2641+
(<InterfaceTypeWithDeclaredMembers>type).declaredProperties = getNamedMembers(symbol.members);
2642+
(<InterfaceTypeWithDeclaredMembers>type).declaredCallSignatures = getSignaturesOfSymbol(symbol.members["__call"]);
2643+
(<InterfaceTypeWithDeclaredMembers>type).declaredConstructSignatures = getSignaturesOfSymbol(symbol.members["__new"]);
2644+
(<InterfaceTypeWithDeclaredMembers>type).declaredStringIndexType = getIndexTypeOfSymbol(symbol, IndexKind.String);
2645+
(<InterfaceTypeWithDeclaredMembers>type).declaredNumberIndexType = getIndexTypeOfSymbol(symbol, IndexKind.Number);
2646+
}
2647+
return <InterfaceTypeWithDeclaredMembers>type;
2648+
}
2649+
26692650
function resolveClassOrInterfaceMembers(type: InterfaceType): void {
2670-
let members = type.symbol.members;
2671-
let callSignatures = type.declaredCallSignatures;
2672-
let constructSignatures = type.declaredConstructSignatures;
2673-
let stringIndexType = type.declaredStringIndexType;
2674-
let numberIndexType = type.declaredNumberIndexType;
2675-
let baseTypes = getBaseTypes(type);
2651+
let target = resolveDeclaredMembers(type);
2652+
let members = target.symbol.members;
2653+
let callSignatures = target.declaredCallSignatures;
2654+
let constructSignatures = target.declaredConstructSignatures;
2655+
let stringIndexType = target.declaredStringIndexType;
2656+
let numberIndexType = target.declaredNumberIndexType;
2657+
let baseTypes = getBaseTypes(target);
26762658
if (baseTypes.length) {
2677-
members = createSymbolTable(type.declaredProperties);
2659+
members = createSymbolTable(target.declaredProperties);
26782660
for (let baseType of baseTypes) {
26792661
addInheritedMembers(members, getPropertiesOfObjectType(baseType));
26802662
callSignatures = concatenate(callSignatures, getSignaturesOfType(baseType, SignatureKind.Call));
@@ -2687,7 +2669,7 @@ module ts {
26872669
}
26882670

26892671
function resolveTypeReferenceMembers(type: TypeReference): void {
2690-
let target = type.target;
2672+
let target = resolveDeclaredMembers(type.target);
26912673
let mapper = createTypeMapper(target.typeParameters, type.typeArguments);
26922674
let members = createInstantiatedSymbolTable(target.declaredProperties, mapper);
26932675
let callSignatures = instantiateList(target.declaredCallSignatures, mapper, instantiateSignature);
@@ -2843,7 +2825,7 @@ module ts {
28432825
callSignatures = getSignaturesOfSymbol(symbol);
28442826
}
28452827
if (symbol.flags & SymbolFlags.Class) {
2846-
let classType = getDeclaredTypeOfClass(symbol);
2828+
let classType = getDeclaredTypeOfClassOrInterface(symbol);
28472829
constructSignatures = getSignaturesOfSymbol(symbol.members["__constructor"]);
28482830
if (!constructSignatures.length) {
28492831
constructSignatures = getDefaultConstructSignatures(classType);
@@ -2956,7 +2938,7 @@ module ts {
29562938
let type = getApparentType(current);
29572939
if (type !== unknownType) {
29582940
let prop = getPropertyOfType(type, name);
2959-
if (!prop) {
2941+
if (!prop || getDeclarationFlagsFromSymbol(prop) & (NodeFlags.Private | NodeFlags.Protected)) {
29602942
return undefined;
29612943
}
29622944
if (!props) {
@@ -3084,7 +3066,7 @@ module ts {
30843066
function getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature {
30853067
let links = getNodeLinks(declaration);
30863068
if (!links.resolvedSignature) {
3087-
let classType = declaration.kind === SyntaxKind.Constructor ? getDeclaredTypeOfClass((<ClassDeclaration>declaration.parent).symbol) : undefined;
3069+
let classType = declaration.kind === SyntaxKind.Constructor ? getDeclaredTypeOfClassOrInterface((<ClassDeclaration>declaration.parent).symbol) : undefined;
30883070
let typeParameters = classType ? classType.typeParameters :
30893071
declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined;
30903072
let parameters: Symbol[] = [];
@@ -9367,7 +9349,7 @@ module ts {
93679349
}
93689350

93699351
if (node.condition) checkExpression(node.condition);
9370-
if (node.iterator) checkExpression(node.iterator);
9352+
if (node.incrementor) checkExpression(node.incrementor);
93719353
checkSourceElement(node.statement);
93729354
}
93739355

@@ -10152,7 +10134,7 @@ module ts {
1015210134
}
1015310135

1015410136
let seen: Map<{ prop: Symbol; containingType: Type }> = {};
10155-
forEach(type.declaredProperties, p => { seen[p.name] = { prop: p, containingType: type }; });
10137+
forEach(resolveDeclaredMembers(type).declaredProperties, p => { seen[p.name] = { prop: p, containingType: type }; });
1015610138
let ok = true;
1015710139

1015810140
for (let base of baseTypes) {

src/compiler/commandLineParser.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,12 @@ module ts {
5050
shortName: "m",
5151
type: {
5252
"commonjs": ModuleKind.CommonJS,
53-
"amd": ModuleKind.AMD
53+
"amd": ModuleKind.AMD,
54+
"umd": ModuleKind.UMD
5455
},
55-
description: Diagnostics.Specify_module_code_generation_Colon_commonjs_or_amd,
56+
description: Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_or_umd,
5657
paramType: Diagnostics.KIND,
57-
error: Diagnostics.Argument_for_module_option_must_be_commonjs_or_amd
58+
error: Diagnostics.Argument_for_module_option_must_be_commonjs_amd_or_umd
5859
},
5960
{
6061
name: "noEmit",
@@ -150,7 +151,7 @@ module ts {
150151
type: { "es3": ScriptTarget.ES3, "es5": ScriptTarget.ES5, "es6": ScriptTarget.ES6 },
151152
description: Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental,
152153
paramType: Diagnostics.VERSION,
153-
error: Diagnostics.Argument_for_target_option_must_be_es3_es5_or_es6
154+
error: Diagnostics.Argument_for_target_option_must_be_ES3_ES5_or_ES6
154155
},
155156
{
156157
name: "version",

src/compiler/diagnosticInformationMap.generated.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ module ts {
161161
Line_terminator_not_permitted_before_arrow: { code: 1200, category: DiagnosticCategory.Error, key: "Line terminator not permitted before arrow." },
162162
Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead: { code: 1202, category: DiagnosticCategory.Error, key: "Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"' or 'import d from \"mod\"' instead." },
163163
Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead: { code: 1203, category: DiagnosticCategory.Error, key: "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead." },
164-
Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher: { code: 1204, category: DiagnosticCategory.Error, key: "Cannot compile external modules into amd or commonjs when targeting es6 or higher." },
164+
Cannot_compile_external_modules_into_amd_commonjs_or_umd_when_targeting_ES6_or_higher: { code: 1204, category: DiagnosticCategory.Error, key: "Cannot compile external modules into 'amd', 'commonjs' or 'umd' when targeting 'ES6' or higher." },
165165
Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." },
166166
Decorators_are_not_valid_here: { code: 1206, category: DiagnosticCategory.Error, key: "Decorators are not valid here." },
167167
Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." },
@@ -464,7 +464,7 @@ module ts {
464464
Do_not_emit_comments_to_output: { code: 6009, category: DiagnosticCategory.Message, key: "Do not emit comments to output." },
465465
Do_not_emit_outputs: { code: 6010, category: DiagnosticCategory.Message, key: "Do not emit outputs." },
466466
Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: DiagnosticCategory.Message, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" },
467-
Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: DiagnosticCategory.Message, key: "Specify module code generation: 'commonjs' or 'amd'" },
467+
Specify_module_code_generation_Colon_commonjs_amd_or_umd: { code: 6016, category: DiagnosticCategory.Message, key: "Specify module code generation: 'commonjs', 'amd', or 'umd'." },
468468
Print_this_message: { code: 6017, category: DiagnosticCategory.Message, key: "Print this message." },
469469
Print_the_compiler_s_version: { code: 6019, category: DiagnosticCategory.Message, key: "Print the compiler's version." },
470470
Compile_the_project_in_the_given_directory: { code: 6020, category: DiagnosticCategory.Message, key: "Compile the project in the given directory." },
@@ -485,8 +485,8 @@ module ts {
485485
Generates_corresponding_map_file: { code: 6043, category: DiagnosticCategory.Message, key: "Generates corresponding '.map' file." },
486486
Compiler_option_0_expects_an_argument: { code: 6044, category: DiagnosticCategory.Error, key: "Compiler option '{0}' expects an argument." },
487487
Unterminated_quoted_string_in_response_file_0: { code: 6045, category: DiagnosticCategory.Error, key: "Unterminated quoted string in response file '{0}'." },
488-
Argument_for_module_option_must_be_commonjs_or_amd: { code: 6046, category: DiagnosticCategory.Error, key: "Argument for '--module' option must be 'commonjs' or 'amd'." },
489-
Argument_for_target_option_must_be_es3_es5_or_es6: { code: 6047, category: DiagnosticCategory.Error, key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." },
488+
Argument_for_module_option_must_be_commonjs_amd_or_umd: { code: 6046, category: DiagnosticCategory.Error, key: "Argument for '--module' option must be 'commonjs', 'amd', or 'umd'." },
489+
Argument_for_target_option_must_be_ES3_ES5_or_ES6: { code: 6047, category: DiagnosticCategory.Error, key: "Argument for '--target' option must be 'ES3', 'ES5', or 'ES6'." },
490490
Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: DiagnosticCategory.Error, key: "Locale must be of the form <language> or <language>-<territory>. For example '{0}' or '{1}'." },
491491
Unsupported_locale_0: { code: 6049, category: DiagnosticCategory.Error, key: "Unsupported locale '{0}'." },
492492
Unable_to_open_file_0: { code: 6050, category: DiagnosticCategory.Error, key: "Unable to open file '{0}'." },

src/compiler/diagnosticMessages.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@
631631
"category": "Error",
632632
"code": 1203
633633
},
634-
"Cannot compile external modules into amd or commonjs when targeting es6 or higher.": {
634+
"Cannot compile external modules into 'amd', 'commonjs' or 'umd' when targeting 'ES6' or higher.": {
635635
"category": "Error",
636636
"code": 1204
637637
},
@@ -1844,7 +1844,7 @@
18441844
"category": "Message",
18451845
"code": 6015
18461846
},
1847-
"Specify module code generation: 'commonjs' or 'amd'": {
1847+
"Specify module code generation: 'commonjs', 'amd', or 'umd'.": {
18481848
"category": "Message",
18491849
"code": 6016
18501850
},
@@ -1928,11 +1928,11 @@
19281928
"category": "Error",
19291929
"code": 6045
19301930
},
1931-
"Argument for '--module' option must be 'commonjs' or 'amd'.": {
1931+
"Argument for '--module' option must be 'commonjs', 'amd', or 'umd'.": {
19321932
"category": "Error",
19331933
"code": 6046
19341934
},
1935-
"Argument for '--target' option must be 'es3', 'es5', or 'es6'.": {
1935+
"Argument for '--target' option must be 'ES3', 'ES5', or 'ES6'.": {
19361936
"category": "Error",
19371937
"code": 6047
19381938
},

0 commit comments

Comments
 (0)