@@ -51544,10 +51544,11 @@ function createTypeChecker(host) {
5154451544 return result ? setTextRange2(context, result, node) : void 0;
5154551545 }
5154651546 function createRecoveryBoundary() {
51547+ let trackedSymbols;
5154751548 let unreportedErrors;
5154851549 const oldTracker = context.tracker;
5154951550 const oldTrackedSymbols = context.trackedSymbols;
51550- context.trackedSymbols = [] ;
51551+ context.trackedSymbols = void 0 ;
5155151552 const oldEncounteredError = context.encounteredError;
5155251553 context.tracker = new SymbolTrackerImpl(context, {
5155351554 ...oldTracker.inner,
@@ -51567,17 +51568,7 @@ function createTypeChecker(host) {
5156751568 markError(() => oldTracker.reportNonSerializableProperty(name));
5156851569 },
5156951570 trackSymbol(sym, decl, meaning) {
51570- const accessibility = isSymbolAccessible(
51571- sym,
51572- decl,
51573- meaning,
51574- /*shouldComputeAliasesToMakeVisible*/
51575- false
51576- );
51577- if (accessibility.accessibility !== 0 /* Accessible */) {
51578- (context.trackedSymbols ?? (context.trackedSymbols = [])).push([sym, decl, meaning]);
51579- return true;
51580- }
51571+ (trackedSymbols ?? (trackedSymbols = [])).push([sym, decl, meaning]);
5158151572 return false;
5158251573 },
5158351574 moduleResolverHost: context.tracker.moduleResolverHost
@@ -51591,13 +51582,12 @@ function createTypeChecker(host) {
5159151582 (unreportedErrors ?? (unreportedErrors = [])).push(unreportedError);
5159251583 }
5159351584 function startRecoveryScope2() {
51594- var _a;
51595- const initialTrackedSymbolsTop = ((_a = context.trackedSymbols) == null ? void 0 : _a.length) ?? 0;
51585+ const trackedSymbolsTop = (trackedSymbols == null ? void 0 : trackedSymbols.length) ?? 0;
5159651586 const unreportedErrorsTop = (unreportedErrors == null ? void 0 : unreportedErrors.length) ?? 0;
5159751587 return () => {
5159851588 hadError = false;
51599- if (context. trackedSymbols) {
51600- context. trackedSymbols.length = initialTrackedSymbolsTop ;
51589+ if (trackedSymbols) {
51590+ trackedSymbols.length = trackedSymbolsTop ;
5160151591 }
5160251592 if (unreportedErrors) {
5160351593 unreportedErrors.length = unreportedErrorsTop;
@@ -51606,14 +51596,13 @@ function createTypeChecker(host) {
5160651596 }
5160751597 function finalizeBoundary2() {
5160851598 context.tracker = oldTracker;
51609- const newTrackedSymbols = context.trackedSymbols;
5161051599 context.trackedSymbols = oldTrackedSymbols;
5161151600 context.encounteredError = oldEncounteredError;
5161251601 unreportedErrors == null ? void 0 : unreportedErrors.forEach((fn) => fn());
5161351602 if (hadError) {
5161451603 return false;
5161551604 }
51616- newTrackedSymbols == null ? void 0 : newTrackedSymbols .forEach(
51605+ trackedSymbols == null ? void 0 : trackedSymbols .forEach(
5161751606 ([symbol, enclosingDeclaration, meaning]) => context.tracker.trackSymbol(
5161851607 symbol,
5161951608 enclosingDeclaration,
@@ -51626,6 +51615,57 @@ function createTypeChecker(host) {
5162651615 function onEnterNewScope(node) {
5162751616 return enterNewScope(context, node, getParametersInScope(node), getTypeParametersInScope(node));
5162851617 }
51618+ function tryVisitSimpleTypeNode(node) {
51619+ const innerNode = skipTypeParentheses(node);
51620+ switch (innerNode.kind) {
51621+ case 183 /* TypeReference */:
51622+ return tryVisitTypeReference(innerNode);
51623+ case 186 /* TypeQuery */:
51624+ return tryVisitTypeQuery(innerNode);
51625+ case 199 /* IndexedAccessType */:
51626+ return tryVisitIndexedAccess(innerNode);
51627+ case 198 /* TypeOperator */:
51628+ const typeOperatorNode = innerNode;
51629+ if (typeOperatorNode.operator === 143 /* KeyOfKeyword */) {
51630+ return tryVisitKeyOf(typeOperatorNode);
51631+ }
51632+ }
51633+ return visitNode(node, visitExistingNodeTreeSymbols, isTypeNode);
51634+ }
51635+ function tryVisitIndexedAccess(node) {
51636+ const resultObjectType = tryVisitSimpleTypeNode(node.objectType);
51637+ if (resultObjectType === void 0) {
51638+ return void 0;
51639+ }
51640+ return factory.updateIndexedAccessTypeNode(node, resultObjectType, visitNode(node.indexType, visitExistingNodeTreeSymbols, isTypeNode));
51641+ }
51642+ function tryVisitKeyOf(node) {
51643+ Debug.assertEqual(node.operator, 143 /* KeyOfKeyword */);
51644+ const type = tryVisitSimpleTypeNode(node.type);
51645+ if (type === void 0) {
51646+ return void 0;
51647+ }
51648+ return factory.updateTypeOperatorNode(node, type);
51649+ }
51650+ function tryVisitTypeQuery(node) {
51651+ const { introducesError, node: exprName } = trackExistingEntityName(node.exprName, context);
51652+ if (!introducesError) {
51653+ return factory.updateTypeQueryNode(
51654+ node,
51655+ exprName,
51656+ visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode)
51657+ );
51658+ }
51659+ const serializedName = serializeTypeName(
51660+ context,
51661+ node.exprName,
51662+ /*isTypeOf*/
51663+ true
51664+ );
51665+ if (serializedName) {
51666+ return setTextRange2(context, serializedName, node.exprName);
51667+ }
51668+ }
5162951669 function tryVisitTypeReference(node) {
5163051670 if (canReuseTypeNode(context, node)) {
5163151671 const { introducesError, node: newName } = trackExistingEntityName(node.typeName, context);
@@ -51759,13 +51799,13 @@ function createTypeChecker(host) {
5175951799 visitNode(node.default, visitExistingNodeTreeSymbols, isTypeNode)
5176051800 );
5176151801 }
51762- if (isIndexedAccessTypeNode(node) && isTypeReferenceNode(node.objectType) ) {
51763- const objectType = tryVisitTypeReference (node.objectType );
51764- if (!objectType ) {
51802+ if (isIndexedAccessTypeNode(node)) {
51803+ const result = tryVisitIndexedAccess (node);
51804+ if (!result ) {
5176551805 hadError = true;
5176651806 return node;
5176751807 }
51768- return factory.updateIndexedAccessTypeNode(node, objectType, visitNode(node.indexType, visitExistingNodeTreeSymbols, isTypeNode)) ;
51808+ return result ;
5176951809 }
5177051810 if (isTypeReferenceNode(node)) {
5177151811 const result = tryVisitTypeReference(node);
@@ -51808,25 +51848,12 @@ function createTypeChecker(host) {
5180851848 return visited;
5180951849 }
5181051850 if (isTypeQueryNode(node)) {
51811- const { introducesError, node: exprName } = trackExistingEntityName(node.exprName, context);
51812- if (introducesError) {
51813- const serializedName = serializeTypeName(
51814- context,
51815- node.exprName,
51816- /*isTypeOf*/
51817- true
51818- );
51819- if (serializedName) {
51820- return setTextRange2(context, serializedName, node.exprName);
51821- }
51851+ const result = tryVisitTypeQuery(node);
51852+ if (!result) {
5182251853 hadError = true;
5182351854 return node;
5182451855 }
51825- return factory.updateTypeQueryNode(
51826- node,
51827- exprName,
51828- visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode)
51829- );
51856+ return result;
5183051857 }
5183151858 if (isComputedPropertyName(node) && isEntityNameExpression(node.expression)) {
5183251859 const { node: result, introducesError } = trackExistingEntityName(node.expression, context);
@@ -51891,14 +51918,12 @@ function createTypeChecker(host) {
5189151918 return node;
5189251919 }
5189351920 } else if (node.operator === 143 /* KeyOfKeyword */) {
51894- if (isTypeReferenceNode(node.type)) {
51895- const type = tryVisitTypeReference(node.type);
51896- if (!type) {
51897- hadError = true;
51898- return node;
51899- }
51900- return factory.updateTypeOperatorNode(node, type);
51921+ const result = tryVisitKeyOf(node);
51922+ if (!result) {
51923+ hadError = true;
51924+ return node;
5190151925 }
51926+ return result;
5190251927 }
5190351928 }
5190451929 return visitEachChild2(node, visitExistingNodeTreeSymbols);
0 commit comments