@@ -386,11 +386,11 @@ namespace ts {
386
386
typeToTypeNode: nodeBuilder.typeToTypeNode,
387
387
indexInfoToIndexSignatureDeclaration: nodeBuilder.indexInfoToIndexSignatureDeclaration,
388
388
signatureToSignatureDeclaration: nodeBuilder.signatureToSignatureDeclaration,
389
- symbolToEntityName: nodeBuilder.symbolToEntityName as (symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => EntityName, // TODO: GH#18217
390
- symbolToExpression: nodeBuilder.symbolToExpression as (symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => Expression, // TODO: GH#18217
389
+ symbolToEntityName: nodeBuilder.symbolToEntityName,
390
+ symbolToExpression: nodeBuilder.symbolToExpression,
391
391
symbolToTypeParameterDeclarations: nodeBuilder.symbolToTypeParameterDeclarations,
392
- symbolToParameterDeclaration: nodeBuilder.symbolToParameterDeclaration as (symbol: Symbol, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => ParameterDeclaration, // TODO: GH#18217
393
- typeParameterToDeclaration: nodeBuilder.typeParameterToDeclaration as (parameter: TypeParameter, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => TypeParameterDeclaration, // TODO: GH#18217
392
+ symbolToParameterDeclaration: nodeBuilder.symbolToParameterDeclaration,
393
+ typeParameterToDeclaration: nodeBuilder.typeParameterToDeclaration,
394
394
getSymbolsInScope: (location, meaning) => {
395
395
location = getParseTreeNode(location);
396
396
return location ? getSymbolsInScope(location, meaning) : [];
@@ -559,7 +559,7 @@ namespace ts {
559
559
},
560
560
getJsxNamespace: n => unescapeLeadingUnderscores(getJsxNamespace(n)),
561
561
getAccessibleSymbolChain,
562
- getTypePredicateOfSignature: getTypePredicateOfSignature as (signature: Signature) => TypePredicate, // TODO: GH#18217
562
+ getTypePredicateOfSignature,
563
563
resolveExternalModuleSymbol,
564
564
tryGetThisTypeAt: (node, includeGlobalThis) => {
565
565
node = getParseTreeNode(node);
@@ -886,7 +886,7 @@ namespace ts {
886
886
}
887
887
const jsxPragma = file.pragmas.get("jsx");
888
888
if (jsxPragma) {
889
- const chosenpragma: any = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma; // TODO: GH#18217
889
+ const chosenpragma = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma;
890
890
file.localJsxFactory = parseIsolatedEntityName(chosenpragma.arguments.factory, languageVersion);
891
891
if (file.localJsxFactory) {
892
892
return file.localJsxNamespace = getFirstIdentifier(file.localJsxFactory).escapedText;
@@ -2567,10 +2567,6 @@ namespace ts {
2567
2567
}
2568
2568
2569
2569
function resolveExternalModule(location: Node, moduleReference: string, moduleNotFoundError: DiagnosticMessage | undefined, errorNode: Node, isForAugmentation = false): Symbol | undefined {
2570
- if (moduleReference === undefined) {
2571
- return;
2572
- }
2573
-
2574
2570
if (startsWith(moduleReference, "@types/")) {
2575
2571
const diag = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
2576
2572
const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -3268,12 +3264,12 @@ namespace ts {
3268
3264
return access.accessibility === SymbolAccessibility.Accessible;
3269
3265
}
3270
3266
3271
- function isValueSymbolAccessible(typeSymbol: Symbol, enclosingDeclaration: Node): boolean {
3267
+ function isValueSymbolAccessible(typeSymbol: Symbol, enclosingDeclaration: Node | undefined ): boolean {
3272
3268
const access = isSymbolAccessible(typeSymbol, enclosingDeclaration, SymbolFlags.Value, /*shouldComputeAliasesToMakeVisible*/ false);
3273
3269
return access.accessibility === SymbolAccessibility.Accessible;
3274
3270
}
3275
3271
3276
- function isAnySymbolAccessible(symbols: Symbol[] | undefined, enclosingDeclaration: Node, initialSymbol: Symbol, meaning: SymbolFlags, shouldComputeAliasesToMakeVisible: boolean): SymbolAccessibilityResult | undefined {
3272
+ function isAnySymbolAccessible(symbols: Symbol[] | undefined, enclosingDeclaration: Node | undefined , initialSymbol: Symbol, meaning: SymbolFlags, shouldComputeAliasesToMakeVisible: boolean): SymbolAccessibilityResult | undefined {
3277
3273
if (!length(symbols)) return;
3278
3274
3279
3275
let hadAccessibleChain: Symbol | undefined;
@@ -3547,7 +3543,7 @@ namespace ts {
3547
3543
typeToTypeNode: (type: Type, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
3548
3544
withContext(enclosingDeclaration, flags, tracker, context => typeToTypeNodeHelper(type, context)),
3549
3545
indexInfoToIndexSignatureDeclaration: (indexInfo: IndexInfo, kind: IndexKind, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
3550
- withContext(enclosingDeclaration, flags, tracker, context => indexInfoToIndexSignatureDeclarationHelper(indexInfo, kind, context))!, // TODO: GH#18217
3546
+ withContext(enclosingDeclaration, flags, tracker, context => indexInfoToIndexSignatureDeclarationHelper(indexInfo, kind, context)),
3551
3547
signatureToSignatureDeclaration: (signature: Signature, kind: SyntaxKind, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
3552
3548
withContext(enclosingDeclaration, flags, tracker, context => signatureToSignatureDeclarationHelper(signature, kind, context)),
3553
3549
symbolToEntityName: (symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
@@ -3656,7 +3652,7 @@ namespace ts {
3656
3652
}
3657
3653
if (type.flags & TypeFlags.UniqueESSymbol) {
3658
3654
if (!(context.flags & NodeBuilderFlags.AllowUniqueESSymbolType)) {
3659
- if (isValueSymbolAccessible(type.symbol, context.enclosingDeclaration! )) {
3655
+ if (isValueSymbolAccessible(type.symbol, context.enclosingDeclaration)) {
3660
3656
context.approximateLength += 6;
3661
3657
return symbolToTypeNode(type.symbol, context, SymbolFlags.Value);
3662
3658
}
@@ -3867,7 +3863,7 @@ namespace ts {
3867
3863
if (isStaticMethodSymbol || isNonLocalFunctionSymbol) {
3868
3864
// typeof is allowed only for static/non local functions
3869
3865
return (!!(context.flags & NodeBuilderFlags.UseTypeOfFunction) || (context.visitedTypes && context.visitedTypes.has(typeId))) && // it is type of the symbol uses itself recursively
3870
- (!(context.flags & NodeBuilderFlags.UseStructuralFallback) || isValueSymbolAccessible(symbol, context.enclosingDeclaration! )); // TODO: GH#18217 // And the build is going to succeed without visibility error or there is no structural fallback allowed
3866
+ (!(context.flags & NodeBuilderFlags.UseStructuralFallback) || isValueSymbolAccessible(symbol, context.enclosingDeclaration)); // And the build is going to succeed without visibility error or there is no structural fallback allowed
3871
3867
}
3872
3868
}
3873
3869
}
@@ -3944,7 +3940,7 @@ namespace ts {
3944
3940
else if (context.flags & NodeBuilderFlags.WriteClassExpressionAsTypeLiteral &&
3945
3941
type.symbol.valueDeclaration &&
3946
3942
isClassLike(type.symbol.valueDeclaration) &&
3947
- !isValueSymbolAccessible(type.symbol, context.enclosingDeclaration! )
3943
+ !isValueSymbolAccessible(type.symbol, context.enclosingDeclaration)
3948
3944
) {
3949
3945
return createAnonymousTypeNode(type);
3950
3946
}
@@ -7160,7 +7156,7 @@ namespace ts {
7160
7156
const baseConstructorType = getBaseConstructorTypeOfClass(classType);
7161
7157
const baseSignatures = getSignaturesOfType(baseConstructorType, SignatureKind.Construct);
7162
7158
if (baseSignatures.length === 0) {
7163
- return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false)]; // TODO: GH#18217
7159
+ return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false)];
7164
7160
}
7165
7161
const baseTypeNode = getBaseTypeNodeOfClass(classType)!;
7166
7162
const isJavaScript = isInJSFile(baseTypeNode);
@@ -10229,9 +10225,11 @@ namespace ts {
10229
10225
case SyntaxKind.ReadonlyKeyword:
10230
10226
links.resolvedType = getTypeFromTypeNode(node.type);
10231
10227
break;
10228
+ default:
10229
+ throw Debug.assertNever(node.operator);
10232
10230
}
10233
10231
}
10234
- return links.resolvedType!; // TODO: GH#18217
10232
+ return links.resolvedType;
10235
10233
}
10236
10234
10237
10235
function createIndexedAccessType(objectType: Type, indexType: Type) {
@@ -10816,11 +10814,11 @@ namespace ts {
10816
10814
getNodeLinks(current.parent).resolvedSymbol = next;
10817
10815
currentNamespace = next;
10818
10816
}
10819
- resolveImportSymbolType(node, links, currentNamespace, targetMeaning);
10817
+ links.resolvedType = resolveImportSymbolType(node, links, currentNamespace, targetMeaning);
10820
10818
}
10821
10819
else {
10822
10820
if (moduleSymbol.flags & targetMeaning) {
10823
- resolveImportSymbolType(node, links, moduleSymbol, targetMeaning);
10821
+ links.resolvedType = resolveImportSymbolType(node, links, moduleSymbol, targetMeaning);
10824
10822
}
10825
10823
else {
10826
10824
const errorMessage = targetMeaning === SymbolFlags.Value
@@ -10834,17 +10832,17 @@ namespace ts {
10834
10832
}
10835
10833
}
10836
10834
}
10837
- return links.resolvedType!; // TODO: GH#18217
10835
+ return links.resolvedType;
10838
10836
}
10839
10837
10840
10838
function resolveImportSymbolType(node: ImportTypeNode, links: NodeLinks, symbol: Symbol, meaning: SymbolFlags) {
10841
10839
const resolvedSymbol = resolveSymbol(symbol);
10842
10840
links.resolvedSymbol = resolvedSymbol;
10843
10841
if (meaning === SymbolFlags.Value) {
10844
- return links.resolvedType = getTypeOfSymbol(symbol); // intentionally doesn't use resolved symbol so type is cached as expected on the alias
10842
+ return getTypeOfSymbol(symbol); // intentionally doesn't use resolved symbol so type is cached as expected on the alias
10845
10843
}
10846
10844
else {
10847
- return links.resolvedType = getTypeReferenceType(node, resolvedSymbol); // getTypeReferenceType doesn't handle aliases - it must get the resolved symbol
10845
+ return getTypeReferenceType(node, resolvedSymbol); // getTypeReferenceType doesn't handle aliases - it must get the resolved symbol
10848
10846
}
10849
10847
}
10850
10848
@@ -14207,7 +14205,7 @@ namespace ts {
14207
14205
if (isGenericMappedType(source)) {
14208
14206
// A generic mapped type { [P in K]: T } is related to an index signature { [x: string]: U }
14209
14207
// if T is related to U.
14210
- return ( kind === IndexKind.String && isRelatedTo(getTemplateTypeFromMappedType(source), targetInfo.type, reportErrors)) as any as Ternary; // TODO: GH#18217
14208
+ return kind === IndexKind.String ? isRelatedTo(getTemplateTypeFromMappedType(source), targetInfo.type, reportErrors) : Ternary.False;
14211
14209
}
14212
14210
if (isObjectTypeWithInferableIndex(source)) {
14213
14211
let related = Ternary.True;
0 commit comments