@@ -1573,6 +1573,7 @@ var ts;
1573
1573
Specifies_module_resolution_strategy_Colon_node_Node_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) ." },
1574
1574
Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes a TypeScript project and creates a tsconfig.json file." },
1575
1575
Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully created a tsconfig.json file." },
1576
+ Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress excess property checks for object literals." },
1576
1577
Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable '{0}' implicitly has an '{1}' type." },
1577
1578
Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' implicitly has an '{1}' type." },
1578
1579
Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member '{0}' implicitly has an '{1}' type." },
@@ -12680,7 +12681,7 @@ var ts;
12680
12681
return members;
12681
12682
}
12682
12683
function resolveTupleTypeMembers(type) {
12683
- var arrayType = resolveStructuredTypeMembers(createArrayType(getUnionType(type.elementTypes)));
12684
+ var arrayType = resolveStructuredTypeMembers(createArrayType(getUnionType(type.elementTypes, true )));
12684
12685
var members = createTupleTypeMemberSymbols(type.elementTypes);
12685
12686
addInheritedMembers(members, arrayType.properties);
12686
12687
setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexType, arrayType.numberIndexType);
@@ -12972,25 +12973,6 @@ var ts;
12972
12973
}
12973
12974
return undefined;
12974
12975
}
12975
- function isKnownProperty(type, name) {
12976
- if (type.flags & 80896 && type !== globalObjectType) {
12977
- var resolved = resolveStructuredTypeMembers(type);
12978
- return !!(resolved.properties.length === 0 ||
12979
- resolved.stringIndexType ||
12980
- resolved.numberIndexType ||
12981
- getPropertyOfType(type, name));
12982
- }
12983
- if (type.flags & 49152) {
12984
- for (var _i = 0, _a = type.types; _i < _a.length; _i++) {
12985
- var t = _a[_i];
12986
- if (isKnownProperty(t, name)) {
12987
- return true;
12988
- }
12989
- }
12990
- return false;
12991
- }
12992
- return true;
12993
- }
12994
12976
function getSignaturesOfStructuredType(type, kind) {
12995
12977
if (type.flags & 130048) {
12996
12978
var resolved = resolveStructuredTypeMembers(type);
@@ -13446,7 +13428,7 @@ var ts;
13446
13428
}
13447
13429
function createTypedPropertyDescriptorType(propertyType) {
13448
13430
var globalTypedPropertyDescriptorType = getGlobalTypedPropertyDescriptorType();
13449
- return globalTypedPropertyDescriptorType !== emptyObjectType
13431
+ return globalTypedPropertyDescriptorType !== emptyGenericType
13450
13432
? createTypeReference(globalTypedPropertyDescriptorType, [propertyType])
13451
13433
: emptyObjectType;
13452
13434
}
@@ -13499,68 +13481,19 @@ var ts;
13499
13481
addTypeToSet(typeSet, type, typeSetKind);
13500
13482
}
13501
13483
}
13502
- function isObjectLiteralTypeDuplicateOf(source, target) {
13503
- var sourceProperties = getPropertiesOfObjectType(source);
13504
- var targetProperties = getPropertiesOfObjectType(target);
13505
- if (sourceProperties.length !== targetProperties.length) {
13506
- return false;
13507
- }
13508
- for (var _i = 0; _i < sourceProperties.length; _i++) {
13509
- var sourceProp = sourceProperties[_i];
13510
- var targetProp = getPropertyOfObjectType(target, sourceProp.name);
13511
- if (!targetProp ||
13512
- getDeclarationFlagsFromSymbol(targetProp) & (32 | 64) ||
13513
- !isTypeDuplicateOf(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp))) {
13514
- return false;
13515
- }
13516
- }
13517
- return true;
13518
- }
13519
- function isTupleTypeDuplicateOf(source, target) {
13520
- var sourceTypes = source.elementTypes;
13521
- var targetTypes = target.elementTypes;
13522
- if (sourceTypes.length !== targetTypes.length) {
13523
- return false;
13524
- }
13525
- for (var i = 0; i < sourceTypes.length; i++) {
13526
- if (!isTypeDuplicateOf(sourceTypes[i], targetTypes[i])) {
13527
- return false;
13528
- }
13529
- }
13530
- return true;
13531
- }
13532
- function isTypeDuplicateOf(source, target) {
13533
- if (source === target) {
13534
- return true;
13535
- }
13536
- if (source.flags & 32 || source.flags & 64 && !(target.flags & 32)) {
13537
- return true;
13538
- }
13539
- if (source.flags & 524288 && target.flags & 80896) {
13540
- return isObjectLiteralTypeDuplicateOf(source, target);
13541
- }
13542
- if (isArrayType(source) && isArrayType(target)) {
13543
- return isTypeDuplicateOf(source.typeArguments[0], target.typeArguments[0]);
13544
- }
13545
- if (isTupleType(source) && isTupleType(target)) {
13546
- return isTupleTypeDuplicateOf(source, target);
13547
- }
13548
- return isTypeIdenticalTo(source, target);
13549
- }
13550
- function isTypeDuplicateOfSomeType(candidate, types) {
13551
- for (var _i = 0; _i < types.length; _i++) {
13552
- var type = types[_i];
13553
- if (candidate !== type && isTypeDuplicateOf(candidate, type)) {
13484
+ function isSubtypeOfAny(candidate, types) {
13485
+ for (var i = 0, len = types.length; i < len; i++) {
13486
+ if (candidate !== types[i] && isTypeSubtypeOf(candidate, types[i])) {
13554
13487
return true;
13555
13488
}
13556
13489
}
13557
13490
return false;
13558
13491
}
13559
- function removeDuplicateTypes (types) {
13492
+ function removeSubtypes (types) {
13560
13493
var i = types.length;
13561
13494
while (i > 0) {
13562
13495
i--;
13563
- if (isTypeDuplicateOfSomeType (types[i], types)) {
13496
+ if (isSubtypeOfAny (types[i], types)) {
13564
13497
types.splice(i, 1);
13565
13498
}
13566
13499
}
@@ -13583,7 +13516,7 @@ var ts;
13583
13516
}
13584
13517
}
13585
13518
}
13586
- function getUnionType(types, noDeduplication ) {
13519
+ function getUnionType(types, noSubtypeReduction ) {
13587
13520
if (types.length === 0) {
13588
13521
return emptyObjectType;
13589
13522
}
@@ -13592,12 +13525,12 @@ var ts;
13592
13525
if (containsTypeAny(typeSet)) {
13593
13526
return anyType;
13594
13527
}
13595
- if (noDeduplication ) {
13528
+ if (noSubtypeReduction ) {
13596
13529
removeAllButLast(typeSet, undefinedType);
13597
13530
removeAllButLast(typeSet, nullType);
13598
13531
}
13599
13532
else {
13600
- removeDuplicateTypes (typeSet);
13533
+ removeSubtypes (typeSet);
13601
13534
}
13602
13535
if (typeSet.length === 1) {
13603
13536
return typeSet[0];
@@ -14091,6 +14024,26 @@ var ts;
14091
14024
}
14092
14025
return 0;
14093
14026
}
14027
+ function isKnownProperty(type, name) {
14028
+
10000
if (type.flags & 80896) {
14029
+ var resolved = resolveStructuredTypeMembers(type);
14030
+ if (relation === assignableRelation && (type === globalObjectType || resolved.properties.length === 0) ||
14031
+ resolved.stringIndexType || resolved.numberIndexType || getPropertyOfType(type, name)) {
14032
+ return true;
14033
+ }
14034
+ return false;
14035
+ }
14036
+ if (type.flags & 49152) {
14037
+ for (var _i = 0, _a = type.types; _i < _a.length; _i++) {
14038
+ var t = _a[_i];
14039
+ if (isKnownProperty(t, name)) {
14040
+ return true;
14041
+ }
14042
+ }
14043
+ return false;
14044
+ }
14045
+ return true;
14046
+ }
14094
14047
function hasExcessProperties(source, target, reportErrors) {
14095
14048
for (var _i = 0, _a = getPropertiesOfObjectType(source); _i < _a.length; _i++) {
14096
14049
var prop = _a[_i];
@@ -14763,7 +14716,7 @@ var ts;
14763
14716
return getWidenedTypeOfObjectLiteral(type);
14764
14717
}
14765
14718
if (type.flags & 16384) {
14766
- return getUnionType(ts.map(type.types, getWidenedType));
14719
+ return getUnionType(ts.map(type.types, getWidenedType), true );
14767
14720
}
14768
14721
if (isArrayType(type)) {
14769
14722
return createArrayType(getWidenedType(type.typeArguments[0]));
@@ -15973,7 +15926,7 @@ var ts;
15973
15926
var propertiesTable = {};
15974
15927
var propertiesArray = [];
15975
15928
var contextualType = getContextualType(node);
15976
- var typeFlags;
15929
+ var typeFlags = 0 ;
15977
15930
for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {
15978
15931
var memberDecl = _a[_i];
15979
15932
var member = memberDecl.symbol;
@@ -16014,7 +15967,8 @@ var ts;
16014
15967
var stringIndexType = getIndexType(0);
16015
15968
var numberIndexType = getIndexType(1);
16016
15969
var result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType);
16017
- result.flags |= 524288 | 1048576 | 4194304 | (typeFlags & 14680064);
15970
+ var freshObjectLiteralFlag = compilerOptions.suppressExcessPropertyErrors ? 0 : 1048576;
15971
+ result.flags |= 524288 | 4194304 | freshObjectLiteralFlag | (typeFlags & 14680064);
16018
15972
return result;
16019
15973
function getIndexType(kind) {
16020
15974
if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) {
@@ -17260,7 +17214,7 @@ var ts;
17260
17214
}
17261
17215
function createPromiseType(promisedType) {
17262
17216
var globalPromiseType = getGlobalPromiseType();
17263
- if (globalPromiseType !== emptyObjectType ) {
17217
+ if (globalPromiseType !== emptyGenericType ) {
17264
17218
promisedType = getAwaitedType(promisedType);
17265
17219
return createTypeReference(globalPromiseType, [promisedType]);
17266
17220
}
@@ -19714,6 +19668,7 @@ var ts;
19714
19668
if (baseTypes.length && produceDiagnostics) {
19715
19669
var baseType = baseTypes[0];
19716
19670
var staticBaseType = getBaseConstructorTypeOfClass(type);
19671
+ checkSourceElement(baseTypeNode.expression);
19717
19672
if (baseTypeNode.typeArguments) {
19718
19673
ts.forEach(baseTypeNode.typeArguments, checkSourceElement);
19719
19674
for (var _i = 0, _a = getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); _i < _a.length; _i++) {
@@ -20613,6 +20568,8 @@ var ts;
20613
20568
case 209:
20614
20569
case 210:
20615
20570
case 212:
20571
+ case 241:
20572
+ case 186:
20616
20573
case 215:
20617
20574
case 245:
20618
20575
case 225:
@@ -21338,7 +21295,7 @@ var ts;
21338
21295
}
21339
21296
function createInstantiatedPromiseLikeType() {
21340
21297
var promiseLikeType = getGlobalPromiseLikeType();
21341
- if (promiseLikeType !== emptyObjectType ) {
21298
+ if (promiseLikeType !== emptyGenericType ) {
21342
21299
return createTypeReference(promiseLikeType, [anyType]);
21343
21300
}
21344
21301
return emptyObjectType;
@@ -24454,8 +24411,12 @@ var ts;
24454
24411
}
24455
24412
}
24456
24413
function emitJsxElement(openingNode, children) {
24414
+ var syntheticReactRef = ts.createSynthesizedNode(67);
24415
+ syntheticReactRef.text = 'React';
24416
+ syntheticReactRef.parent = openingNode;
24457
24417
emitLeadingComments(openingNode);
24458
- write("React.createElement(");
24418
+ emitExpressionIdentifier(syntheticReactRef);
24419
+ write(".createElement(");
24459
24420
emitTagName(openingNode.tagName);
24460
24421
write(", ");
24461
24422
if (openingNode.attributes.length === 0) {
@@ -24464,7 +24425,8 @@ var ts;
24464
24425
else {
24465
24426
var attrs = openingNode.attributes;
24466
24427
if (ts.forEach(attrs, function (attr) { return attr.kind === 237; })) {
24467
- write("React.__spread(");
24428
+ emitExpressionIdentifier(syntheticReactRef);
24429
+ write(".__spread(");
24468
24430
var haveOpenedObjectLiteral = false;
24469
24431
for (var i_1 = 0; i_1 < attrs.length; i_1++) {
24470
24432
if (attrs[i_1].kind === 237) {
@@ -30376,6 +30338,12 @@ var ts;
30376
30338
description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations,
30377
30339
paramType: ts.Diagnostics.LOCATION
30378
30340
},
30341
+ {
30342
+ name: "suppressExcessPropertyErrors",
30343
+ type: "boolean",
30344
+ description: ts.Diagnostics.Suppress_excess_property_checks_for_object_literals,
30345
+ experimental: true
30346
+ },
30379
30347
{
30380
30348
name: "suppressImplicitAnyIndexErrors",
30381
30349
type: "boolean",
@@ -30450,7 +30418,7 @@ var ts;
30450
30418
return optionNameMapCache;
30451
30419
}
30452
30420
ts.getOptionNameMap = getOptionNameMap;
30453
- function parseCommandLine(commandLine) {
30421
+ function parseCommandLine(commandLine, readFile ) {
30454
30422
var options = {};
30455
30423
var fileNames = [];
30456
30424
var errors = [];
@@ -30509,7 +30477,7 @@ var ts;
30509
30477
}
30510
30478
57A0
}
30511
30479
function parseResponseFile(fileName) {
30512
- var text = ts.sys.readFile(fileName);
30480
+ var text = readFile ? readFile(fileName) : ts.sys.readFile(fileName);
30513
30481
if (!text) {
30514
30482
errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_not_found, fileName));
30515
30483
return;
0 commit comments