Skip to content

Commit 962935b

Browse files
committed
Address PR comments
1 parent 91fb1ac commit 962935b

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

src/compiler/checker.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6830,20 +6830,26 @@ namespace ts {
68306830
symbol.parent = source.parent;
68316831
symbol.type = type;
68326832
symbol.target = source;
6833-
if (source.valueDeclaration) symbol.valueDeclaration = source.valueDeclaration;
6833+
if (source.valueDeclaration) {
6834+
symbol.valueDeclaration = source.valueDeclaration;
6835+
}
68346836
return symbol;
68356837
}
68366838

6837-
function updateTypeOfMembers(type: Type, update: (propertyType: Type) => Type) {
6839+
function transformTypeOfMembers(type: Type, f: (propertyType: Type) => Type) {
68386840
const members: SymbolTable = {};
68396841
for (const property of getPropertiesOfObjectType(type)) {
68406842
const original = getTypeOfSymbol(property);
6841-
const updated = update(original);
6843+
const updated = f(original);
68426844
members[property.name] = updated === original ? property : createTransientSymbol(property, updated);
68436845
};
68446846
return members;
68456847
}
68466848

6849+
/** Mark an object literal as exempt from the excess properties check.
6850+
* Recursively mark object literal members as exempt.
6851+
* Leave signatures alone since they are not subject to the check.
6852+
*/
68476853
function getRegularTypeOfObjectLiteral(type: Type): Type {
68486854
if (!(type.flags & TypeFlags.FreshObjectLiteral)) {
68496855
return type;
@@ -6854,7 +6860,7 @@ namespace ts {
68546860
}
68556861

68566862
const resolved = <ResolvedType>type;
6857-
const members = updateTypeOfMembers(type, prop => prop.flags & TypeFlags.FreshObjectLiteral ? getRegularTypeOfObjectLiteral(prop) : prop);
6863+
const members = transformTypeOfMembers(type, prop => prop.flags & TypeFlags.FreshObjectLiteral ? getRegularTypeOfObjectLiteral(prop) : prop);
68586864
const regularNew = createAnonymousType(resolved.symbol,
68596865
members,
68606866
resolved.callSignatures,
@@ -6867,7 +6873,7 @@ namespace ts {
68676873
}
68686874

68696875
function getWidenedTypeOfObjectLiteral(type: Type): Type {
6870-
const members = updateTypeOfMembers(type, prop => {
6876+
const members = transformTypeOfMembers(type, prop => {
68716877
const widened = getWidenedType(prop);
68726878
return prop === widened ? prop : widened;
68736879
});

0 commit comments

Comments
 (0)