8000 Merge branch 'release-1.6' · predever/TypeScript@46c0057 · GitHub
[go: up one dir, main page]

Skip to content 8000

Commit 46c0057

Browse files
committed
Merge branch 'release-1.6'
2 parents dc86736 + 0573c0b commit 46c0057

14 files changed

+438
-429
lines changed

lib/tsc.js

Lines changed: 55 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
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+
}
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
57A0 }
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

Comments
 (0)
0