@@ -1573,6 +1573,7 @@ var ts;
15731573 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) ." },
15741574 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." },
15751575 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." },
15761577 Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable '{0}' implicitly has an '{1}' type." },
15771578 Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' implicitly has an '{1}' type." },
15781579 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;
1268012681 return members;
1268112682 }
1268212683 function resolveTupleTypeMembers(type) {
12683- var arrayType = resolveStructuredTypeMembers(createArrayType(getUnionType(type.elementTypes)));
12684+ var arrayType = resolveStructuredTypeMembers(createArrayType(getUnionType(type.elementTypes, true )));
1268412685 var members = createTupleTypeMemberSymbols(type.elementTypes);
1268512686 addInheritedMembers(members, arrayType.properties);
1268612687 setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexType, arrayType.numberIndexType);
@@ -12972,25 +12973,6 @@ var ts;
1297212973 }
1297312974 return undefined;
1297412975 }
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- }
1299412976 function getSignaturesOfStructuredType(type, kind) {
1299512977 if (type.flags & 130048) {
1299612978 var resolved = resolveStructuredTypeMembers(type);
@@ -13446,7 +13428,7 @@ var ts;
1344613428 }
1344713429 function createTypedPropertyDescriptorType(propertyType) {
1344813430 var globalTypedPropertyDescriptorType = getGlobalTypedPropertyDescriptorType();
13449- return globalTypedPropertyDescriptorType !== emptyObjectType
13431+ return globalTypedPropertyDescriptorType !== emptyGenericType
1345013432 ? createTypeReference(globalTypedPropertyDescriptorType, [propertyType])
1345113433 : emptyObjectType;
1345213434 }
@@ -13499,68 +13481,19 @@ var ts;
1349913481 addTypeToSet(typeSet, type, typeSetKind);
1350013482 }
1350113483 }
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])) {
1355413487 return true;
1355513488 }
1355613489 }
1355713490 return false;
1355813491 }
13559- function removeDuplicateTypes (types) {
13492+ function removeSubtypes (types) {
1356013493 var i = types.length;
1356113494 while (i > 0) {
1356213495 i--;
13563- if (isTypeDuplicateOfSomeType (types[i], types)) {
13496+ if (isSubtypeOfAny (types[i], types)) {
1356413497 types.splice(i, 1);
1356513498 }
1356613499 }
@@ -13583,7 +13516,7 @@ var ts;
1358313516 }
1358413517 }
1358513518 }
13586- function getUnionType(types, noDeduplication ) {
13519+ function getUnionType(types, noSubtypeReduction ) {
1358713520 if (types.length === 0) {
1358813521 return emptyObjectType;
1358913522 }
@@ -13592,12 +13525,12 @@ var ts;
1359213525 if (containsTypeAny(typeSet)) {
1359313526 return anyType;
1359413527 }
13595- if (noDeduplication ) {
13528+ if (noSubtypeReduction ) {
1359613529 removeAllButLast(typeSet, undefinedType);
1359713530 removeAllButLast(typeSet, nullType);
1359813531 }
1359913532 else {
13600- removeDuplicateTypes (typeSet);
13533+ removeSubtypes (typeSet);
1360113534 }
1360213535 if (typeSet.length === 1) {
1360313536 return typeSet[0];
@@ -14091,6 +14024,26 @@ var ts;
1409114024 }
1409214025 return 0;
1409314026 }
14027+ function isKnownProperty(type, name) {
14028+ 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+ }
1409414047 function hasExcessProperties(source, target, reportErrors) {
1409514048 for (var _i = 0, _a = getPropertiesOfObjectType(source); _i < _a.length; _i++) {
1409614049 var prop = _a[_i];
@@ -14763,7 +14716,7 @@ var ts;
1476314716 return getWidenedTypeOfObjectLiteral(type);
1476414717 }
1476514718 if (type.flags & 16384) {
14766- return getUnionType(ts.map(type.types, getWidenedType));
14719+ return getUnionType(ts.map(type.types, getWidenedType), true );
1476714720 }
1476814721 if (isArrayType(type)) {
1476914722 return createArrayType(getWidenedType(type.typeArguments[0]));
@@ -15973,7 +15926,7 @@ var ts;
1597315926 var propertiesTable = {};
1597415927 var propertiesArray = [];
1597515928 var contextualType = getContextualType(node);
15976- var typeFlags;
15929+ var typeFlags = 0 ;
1597715930 for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {
1597815931 var memberDecl = _a[_i];
1597915932 var member = memberDecl.symbol;
@@ -16014,7 +15967,8 @@ var ts;
1601415967 var stringIndexType = getIndexType(0);
1601515968 var numberIndexType = getIndexType(1);
1601615969 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);
1601815972 return result;
1601915973 function getIndexType(kind) {
1602015974 if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) {
@@ -17260,7 +17214,7 @@ var ts;
1726017214 }
1726117215 function createPromiseType(promisedType) {
1726217216 var globalPromiseType = getGlobalPromiseType();
17263- if (globalPromiseType !== emptyObjectType ) {
17217+ if (globalPromiseType !== emptyGenericType ) {
1726417218 promisedType = getAwaitedType(promisedType);
1726517219 return createTypeReference(globalPromiseType, [promisedType]);
1726617220 }
@@ -19714,6 +19668,7 @@ var ts;
1971419668 if (baseTypes.length && produceDiagnostics) {
1971519669 var baseType = baseTypes[0];
1971619670 var staticBaseType = getBaseConstructorTypeOfClass(type);
19671+ checkSourceElement(baseTypeNode.expression);
1971719672 if (baseTypeNode.typeArguments) {
1971819673 ts.forEach(baseTypeNode.typeArguments, checkSourceElement);
1971919674 for (var _i = 0, _a = getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); _i < _a.length; _i++) {
@@ -20613,6 +20568,8 @@ var ts;
2061320568 case 209:
2061420569 case 210:
2061520570 case 212:
20571+ case 241:
20572+ case 186:
2061620573 case 215:
2061720574 case 245:
2061820575 case 225:
@@ -21338,7 +21295,7 @@ var ts;
2133821295 }
2133921296 function createInstantiatedPromiseLikeType() {
2134021297 var promiseLikeType = getGlobalPromiseLikeType();
21341- if (promiseLikeType !== emptyObjectType ) {
21298+ if (promiseLikeType !== emptyGenericType ) {
2134221299 return createTypeReference(promiseLikeType, [anyType]);
2134321300 }
2134421301 return emptyObjectType;
@@ -24454,8 +24411,12 @@ var ts;
2445424411 }
2445524412 }
2445624413 function emitJsxElement(openingNode, children) {
24414+ var syntheticReactRef = ts.createSynthesizedNode(67);
24415+ syntheticReactRef.text = 'React';
24416+ syntheticReactRef.parent = openingNode;
2445724417 emitLeadingComments(openingNode);
24458- write("React.createElement(");
24418+ emitExpressionIdentifier(syntheticReactRef);
24419+ write(".createElement(");
2445924420 emitTagName(openingNode.tagName);
2446024421 write(", ");
2446124422 if (openingNode.attributes.length === 0) {
@@ -24464,7 +24425,8 @@ var ts;
2446424425 else {
2446524426 var attrs = openingNode.attributes;
2446624427 if (ts.forEach(attrs, function (attr) { return attr.kind === 237; })) {
24467- write("React.__spread(");
24428+ emitExpressionIdentifier(syntheticReactRef);
24429+ write(".__spread(");
2446824430 var haveOpenedObjectLiteral = false;
2446924431 for (var i_1 = 0; i_1 < attrs.length; i_1++) {
2447024432 if (attrs[i_1].kind === 237) {
@@ -30376,6 +30338,12 @@ var ts;
3037630338 description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations,
3037730339 paramType: ts.Diagnostics.LOCATION
3037830340 },
30341+ {
30342+ name: "suppressExcessPropertyErrors",
30343+ type: "boolean",
30344+ description: ts.Diagnostics.Suppress_excess_property_checks_for_object_literals,
30345+ experimental: true
30346+ },
3037930347 {
3038030348 name: "suppressImplicitAnyIndexErrors",
3038130349 type: "boolean",
@@ -30450,7 +30418,7 @@ var ts;
3045030418 return optionNameMapCache;
3045130419 }
3045230420 ts.getOptionNameMap = getOptionNameMap;
30453- function parseCommandLine(commandLine) {
30421+ function parseCommandLine(commandLine, readFile ) {
3045430422 var options = {};
3045530423 var fileNames = [];
3045630424 var errors = [];
@@ -30509,7 +30477,7 @@ var ts;
3050930477 }
3051030478 }
3051130479 function parseResponseFile(fileName) {
30512- var text = ts.sys.readFile(fileName);
30480+ var text = readFile ? readFile(fileName) : ts.sys.readFile(fileName);
3051330481 if (!text) {
3051430482 errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_not_found, fileName));
3051530483 return;
0 commit comments