@@ -51544,10 +51544,11 @@ function createTypeChecker(host) {
51544
51544
return result ? setTextRange2(context, result, node) : void 0;
51545
51545
}
51546
51546
function createRecoveryBoundary() {
51547
+ let trackedSymbols;
51547
51548
let unreportedErrors;
51548
51549
const oldTracker = context.tracker;
51549
51550
const oldTrackedSymbols = context.trackedSymbols;
51550
- context.trackedSymbols = [] ;
51551
+ context.trackedSymbols = void 0 ;
51551
51552
const oldEncounteredError = context.encounteredError;
51552
51553
context.tracker = new SymbolTrackerImpl(context, {
51553
51554
...oldTracker.inner,
@@ -51567,17 +51568,7 @@ function createTypeChecker(host) {
51567
51568
markError(() => oldTracker.reportNonSerializableProperty(name));
51568
51569
},
51569
51570
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]);
51581
51572
return false;
51582
51573
},
51583
51574
moduleResolverHost: context.tracker.moduleResolverHost
@@ -51591,13 +51582,12 @@ function createTypeChecker(host) {
51591
51582
(unreportedErrors ?? (unreportedErrors = [])).push(unreportedError);
51592
51583
}
51593
51584
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;
51596
51586
const unreportedErrorsTop = (unreportedErrors == null ? void 0 : unreportedErrors.length) ?? 0;
51597
51587
return () => {
51598
51588
hadError = false;
51599
- if (context. trackedSymbols) {
51600
- context. trackedSymbols.length = initialTrackedSymbolsTop ;
51589
+ if (trackedSymbols) {
51590
+ trackedSymbols.length = trackedSymbolsTop ;
51601
51591
}
51602
51592
if (unreportedErrors) {
51603
51593
unreportedErrors.length = unreportedErrorsTop;
@@ -51606,14 +51596,13 @@ function createTypeChecker(host) {
51606
51596
}
51607
51597
function finalizeBoundary2() {
51608
51598
context.tracker = oldTracker;
51609
- const newTrackedSymbols = context.trackedSymbols;
51610
51599
context.trackedSymbols = oldTrackedSymbols;
51611
51600
context.encounteredError = oldEncounteredError;
51612
51601
unreportedErrors == null ? void 0 : unreportedErrors.forEach((fn) => fn());
51613
51602
if (hadError) {
51614
51603
return false;
51615
51604
}
51616
- newTrackedSymbols == null ? void 0 : newTrackedSymbols .forEach(
51605
+ trackedSymbols == null ? void 0 : trackedSymbols .forEach(
51617
51606
([symbol, enclosingDeclaration, meaning]) => context.tracker.trackSymbol(
51618
51607
symbol,
51619
51608
enclosingDeclaration,
@@ -51626,6 +51615,57 @@ function createTypeChecker(host) {
51626
51615
function onEnterNewScope(node) {
51627
51616
return enterNewScope(context, node, getParametersInScope(node), getTypeParametersInScope(node));
51628
51617
}
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
+ }
51629
51669
function tryVisitTypeReference(node) {
51630
51670
if (canReuseTypeNode(context, node)) {
51631
51671
const { introducesError, node: newName } = trackExistingEntityName(node.typeName, context);
@@ -51759,13 +51799,13 @@ function createTypeChecker(host) {
51759
51799
visitNode(node.default, visitExistingNodeTreeSymbols, isTypeNode)
51760
51800
);
51761
51801
}
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 ) {
51765
51805
hadError = true;
51766
51806
return node;
51767
51807
}
51768
- return factory.updateIndexedAccessTypeNode(node, objectType, visitNode(node.indexType, visitExistingNodeTreeSymbols, isTypeNode)) ;
51808
+ return result ;
51769
51809
}
51770
51810
if (isTypeReferenceNode(node)) {
51771
51811
const result = tryVisitTypeReference(node);
@@ -51808,25 +51848,12 @@ function createTypeChecker(host) {
51808
51848
return visited;
51809
51849
}
51810
51850
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) {
51822
51853
hadError = true;
51823
51854
return node;
51824
51855
}
51825
- return factory.updateTypeQueryNode(
51826
- node,
51827
- exprName,
51828
- visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode)
51829
- );
51856
+ return result;
51830
51857
}
51831
51858
if (isComputedPropertyName(node) && isEntityNameExpression(node.expression)) {
51832
51859
const { node: result, introducesError } = trackExistingEntityName(node.expression, context);
@@ -51891,14 +51918,12 @@ function createTypeChecker(host) {
51891
51918
return node;
51892
51919
}
51893
51920
} 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;
51901
51925
}
51926
+ return result;
51902
51927
}
51903
51928
}
51904
51929
return visitEachChild2(node, visitExistingNodeTreeSymbols);
0 commit comments