Skip to content

Commit 70caa0c

Browse files
Merge branch 'main'
2 parents f810a22 + e69a0b0 commit 70caa0c

26 files changed

+910
-362
lines changed

.github/workflows/close-issues.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ jobs:
3131
3232
close_issues() {
3333
echo "Closing issues marked as '$1'."
34-
for issue in $(gh issue list --label "$1" --repo ${{ github.repository }} --state open --search "updated:<$DATE" --json number --jq '.[].number'); do
34+
for issue in $(gh issue list --limit 100 --label "$1" --repo ${{ github.repository }} --state open --search "updated:<$DATE" --json number --jq '.[].number'); do
3535
echo "Closing https://github.com/${{ github.repository }}/issues/$issue"
36-
gh issue close $issue --repo ${{ github.repository }} --reason "not planned" --comment "This issue has been marked as '$1' and has seen no recent activity. It has been automatically closed for house-keeping purposes."
36+
gh issue close $issue --repo ${{ github.repository }} --reason "not planned" --comment "This issue has been marked as \"$1\" and has seen no recent activity. It has been automatically closed for house-keeping purposes."
3737
done
3838
}
3939
@@ -43,3 +43,7 @@ jobs:
4343
close_issues "External"
4444
close_issues "Working as Intended"
4545
close_issues "Question"
46+
close_issues "Out of Scope"
47+
close_issues "Declined"
48+
close_issues "Won't Fix"
49+
close_issues "Too Complex"

package-lock.json

Lines changed: 190 additions & 190 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/compiler/checker.ts

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1828,14 +1828,19 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
18281828
};
18291829

18301830
function runWithoutResolvedSignatureCaching<T>(node: Node | undefined, fn: () => T): T {
1831-
const containingCall = findAncestor(node, isCallLikeExpression);
1832-
const containingCallResolvedSignature = containingCall && getNodeLinks(containingCall).resolvedSignature;
1833-
if (containingCall) {
1834-
getNodeLinks(containingCall).resolvedSignature = undefined;
1831+
const cachedSignatures = [];
1832+
while (node) {
1833+
if (isCallLikeExpression(node)) {
1834+
const nodeLinks = getNodeLinks(node);
1835+
const resolvedSignature = nodeLinks.resolvedSignature;
1836+
cachedSignatures.push([nodeLinks, resolvedSignature] as const);
1837+
nodeLinks.resolvedSignature = undefined;
1838+
}
1839+
node = node.parent;
18351840
}
18361841
const result = fn();
1837-
if (containingCall) {
1838-
getNodeLinks(containingCall).resolvedSignature = containingCallResolvedSignature;
1842+
for (const [nodeLinks, resolvedSignature] of cachedSignatures) {
1843+
nodeLinks.resolvedSignature = resolvedSignature;
18391844
}
18401845
return result;
18411846
}
@@ -10165,11 +10170,20 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1016510170
return prop ? getTypeOfSymbol(prop) : undefined;
1016610171
}
1016710172

10168-
function getTypeOfPropertyOrIndexSignature(type: Type, name: __String, addOptionalityToIndex: boolean): Type {
10173+
function getTypeOfPropertyOrIndexSignature(type: Type, name: __String): Type {
10174+
return getTypeOfPropertyOfType(type, name) || getApplicableIndexInfoForName(type, name)?.type || unknownType;
10175+
}
10176+
10177+
/**
10178+
* Similar to `getTypeOfPropertyOrIndexSignature`,
10179+
* but returns `undefined` if there is no matching property or index signature,
10180+
* and adds optionality to index signature types.
10181+
*/
10182+
function getTypeOfPropertyOrIndexSignatureOfType(type: Type, name: __String): Type | undefined {
1016910183
let propType;
1017010184
return getTypeOfPropertyOfType(type, name) ||
10171-
(propType = getApplicableIndexInfoForName(type, name)?.type) && addOptionality(propType, /*isProperty*/ true, addOptionalityToIndex) ||
10172-
unknownType;
10185+
(propType = getApplicableIndexInfoForName(type, name)?.type) &&
10186+
addOptionality(propType, /*isProperty*/ true, /*isOptional*/ true);
1017310187
}
1017410188

1017510189
function isTypeAny(type: Type | undefined) {
@@ -22703,7 +22717,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2270322717
let matched = false;
2270422718
for (let i = 0; i < types.length; i++) {
2270522719
if (include[i]) {
22706-
const targetType = getTypeOfPropertyOrIndexSignature(types[i], propertyName, /*addOptionalityToIndex*/ true);
22720+
const targetType = getTypeOfPropertyOrIndexSignatureOfType(types[i], propertyName);
2270722721
if (targetType && related(getDiscriminatingType(), targetType)) {
2270822722
matched = true;
2270922723
}
@@ -27016,7 +27030,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2701627030
propType = removeNullable && optionalChain ? getOptionalType(propType) : propType;
2701727031
const narrowedPropType = narrowType(propType);
2701827032
return filterType(type, t => {
27019-
const discriminantType = getTypeOfPropertyOrIndexSignature(t, propName, /*addOptionalityToIndex*/ false);
27033+
const discriminantType = getTypeOfPropertyOrIndexSignature(t, propName);
2702027034
return !(discriminantType.flags & TypeFlags.Never) && !(narrowedPropType.flags & TypeFlags.Never) && areTypesComparable(narrowedPropType, discriminantType);
2702127035
});
2702227036
}

src/compiler/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3259,7 +3259,6 @@ export type JsxAttributeValue =
32593259

32603260
export interface JsxSpreadAttribute extends ObjectLiteralElement {
32613261
readonly kind: SyntaxKind.JsxSpreadAttribute;
3262-
readonly name: PropertyName;
32633262
readonly parent: JsxAttributes;
32643263
readonly expression: Expression;
32653264
}

0 commit comments

Comments
 (0)