@@ -381,11 +381,11 @@ namespace ts {
381
381
typeToTypeNode: nodeBuilder.typeToTypeNode,
382
382
indexInfoToIndexSignatureDeclaration: nodeBuilder.indexInfoToIndexSignatureDeclaration,
383
383
signatureToSignatureDeclaration: nodeBuilder.signatureToSignatureDeclaration,
384
- symbolToEntityName: nodeBuilder.symbolToEntityName as (symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => EntityName, // TODO: GH#18217
385
- symbolToExpression: nodeBuilder.symbolToExpression as (symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => Expression, // TODO: GH#18217
384
+ symbolToEntityName: nodeBuilder.symbolToEntityName,
385
+ symbolToExpression: nodeBuilder.symbolToExpression,
386
386
symbolToTypeParameterDeclarations: nodeBuilder.symbolToTypeParameterDeclarations,
387
- symbolToParameterDeclaration: nodeBuilder.symbolToParameterDeclaration as (symbol: Symbol, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => ParameterDeclaration, // TODO: GH#18217
388
- typeParameterToDeclaration: nodeBuilder.typeParameterToDeclaration as (parameter: TypeParameter, enclosingDeclaration?: Node, flags?: NodeBuilderFlags) => TypeParameterDeclaration, // TODO: GH#18217
387
+ symbolToParameterDeclaration: nodeBuilder.symbolToParameterDeclaration,
388
+ typeParameterToDeclaration: nodeBuilder.typeParameterToDeclaration,
389
389
getSymbolsInScope: (location, meaning) => {
390
390
location = getParseTreeNode(location);
391
391
return location ? getSymbolsInScope(location, meaning) : [];
@@ -554,7 +554,7 @@ namespace ts {
554
554
},
555
555
getJsxNamespace: n => unescapeLeadingUnderscores(getJsxNamespace(n)),
556
556
getAccessibleSymbolChain,
557
- getTypePredicateOfSignature: getTypePredicateOfSignature as (signature: Signature) => TypePredicate, // TODO: GH#18217
557
+ getTypePredicateOfSignature,
558
558
resolveExternalModuleSymbol,
559
559
tryGetThisTypeAt: (node, includeGlobalThis) => {
560
560
node = getParseTreeNode(node);
@@ -881,7 +881,7 @@ namespace ts {
881
881
}
882
882
const jsxPragma = file.pragmas.get("jsx");
883
883
if (jsxPragma) {
884
- const chosenpragma: any = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma; // TODO: GH#18217
884
+ const chosenpragma = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma;
885
885
file.localJsxFactory = parseIsolatedEntityName(chosenpragma.arguments.factory, languageVersion);
886
886
if (file.localJsxFactory) {
887
887
return file.localJsxNamespace = getFirstIdentifier(file.localJsxFactory).escapedText;
@@ -2562,10 +2562,6 @@ namespace ts {
2562
2562
}
2563
2563
2564
2564
function resolveExternalModule(location: Node, moduleReference: string, moduleNotFoundError: DiagnosticMessage | undefined, errorNode: Node, isForAugmentation = false): Symbol | undefined {
2565
- if (moduleReference === undefined) {
2566
- return;
2567
- }
2568
-
2569
2565
if (startsWith(moduleReference, "@types/")) {
2570
2566
const diag = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
2571
2567
const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -3263,12 +3259,12 @@ namespace ts {
3263
3259
return access.accessibility === SymbolAccessibility.Accessible;
3264
3260
}
3265
3261
3266
- function isValueSymbolAccessible(typeSymbol: Symbol, enclosingDeclaration: Node): boolean {
3262
+ function isValueSymbolAccessible(typeSymbol: Symbol, enclosingDeclaration: Node | undefined ): boolean {
3267
3263
const access = isSymbolAccessible(typeSymbol, enclosingDeclaration, SymbolFlags.Value, /*shouldComputeAliasesToMakeVisible*/ false);
3268
3264
return access.accessibility === SymbolAccessibility.Accessible;
3269
3265
}
3270
3266
3271
- function isAnySymbolAccessible(symbols: Symbol[] | undefined, enclosingDeclaration: Node, initialSymbol: Symbol, meaning: SymbolFlags, shouldComputeAliasesToMakeVisible: boolean): SymbolAccessibilityResult | undefined {
3267
+ function isAnySymbolAccessible(symbols: Symbol[] | undefined, enclosingDeclaration: Node | undefined , initialSymbol: Symbol, meaning: SymbolFlags, shouldComputeAliasesToMakeVisible: boolean): SymbolAccessibilityResult | undefined {
3272
3268
if (!length(symbols)) return;
3273
3269
3274
3270
let hadAccessibleChain: Symbol | undefined;
@@ -3542,7 +3538,7 @@ namespace ts {
3542
3538
typeToTypeNode: (type: Type, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
3543
3539
withContext(enclosingDeclaration, flags, tracker, context => typeToTypeNodeHelper(type, context)),
3544
3540
indexInfoToIndexSignatureDeclaration: (indexInfo: IndexInfo, kind: IndexKind, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
3545
- withContext(enclosingDeclaration, flags, tracker, context => indexInfoToIndexSignatureDeclarationHelper(indexInfo, kind, context))!, // TODO: GH#18217
3541
+ withContext(enclosingDeclaration, flags, tracker, context => indexInfoToIndexSignatureDeclarationHelper(indexInfo, kind, context)),
3546
3542
signatureToSignatureDeclaration: (signature: Signature, kind: SyntaxKind, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
3547
3543
withContext(enclosingDeclaration, flags, tracker, context => signatureToSignatureDeclarationHelper(signature, kind, context)),
3548
3544
symbolToEntityName: (symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) =>
@@ -3651,7 +3647,7 @@ namespace ts {
3651
3647
}
3652
3648
if (type.flags & TypeFlags.UniqueESSymbol) {
3653
3649
if (!(context.flags & NodeBuilderFlags.AllowUniqueESSymbolType)) {
3654
- if (isValueSymbolAccessible(type.symbol, context.enclosingDeclaration! )) {
3650
+ if (isValueSymbolAccessible(type.symbol, context.enclosingDeclaration)) {
3655
3651
context.approximateLength += 6;
3656
3652
return symbolToTypeNode(type.symbol, context, SymbolFlags.Value);
3657
3653
}
@@ -3862,7 +3858,7 @@ namespace ts {
3862
3858
if (isStaticMethodSymbol || isNonLocalFunctionSymbol) {
3863
3859
// typeof is allowed only for static/non local functions
3864
3860
return (!!(context.flags & NodeBuilderFlags.UseTypeOfFunction) || (context.visitedTypes && context.visitedTypes.has(typeId))) && // it is type of the symbol uses itself recursively
3865
- (!(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
3861
+ (!(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
3866
3862
}
3867
3863
}
3868
3864
}
@@ -3939,7 +3935,7 @@ namespace ts {
3939
3935
else if (context.flags & NodeBuilderFlags.WriteClassExpressionAsTypeLiteral &&
3940
3936
type.symbol.valueDeclaration &&
3941
3937
isClassLike(type.symbol.valueDeclaration) &&
3942
- !isValueSymbolAccessible(type.symbol, context.enclosingDeclaration! )
3938
+ !isValueSymbolAccessible(type.symbol, context.enclosingDeclaration)
3943
3939
) {
3944
3940
return createAnonymousTypeNode(type);
3945
3941
}
@@ -7155,7 +7151,7 @@ namespace ts {
7155
7151
const baseConstructorType = getBaseConstructorTypeOfClass(classType);
7156
7152
const baseSignatures = getSignaturesOfType(baseConstructorType, SignatureKind.Construct);
7157
7153
if (baseSignatures.length === 0) {
7158
- return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false)]; // TODO: GH#18217
7154
+ return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false)];
7159
7155
}
7160
7156
const baseTypeNode = getBaseTypeNodeOfClass(classType)!;
7161
7157
const isJavaScript = isInJSFile(baseTypeNode);
@@ -10224,9 +10220,11 @@ namespace ts {
10224
10220
case SyntaxKind.ReadonlyKeyword:
10225
10221
links.resolvedType = getTypeFromTypeNode(node.type);
10226
10222
break;
10223
+ default:
10224
+ throw Debug.assertNever(node.operator);
10227
10225
}
10228
10226
}
10229
- return links.resolvedType!; // TODO: GH#18217
10227
+ return links.resolvedType;
10230
10228
}
10231
10229
10232
10230
function createIndexedAccessType(objectType: Type, indexType: Type) {
@@ -10811,11 +10809,11 @@ namespace ts {
10811
10809
getNodeLinks(current.parent).resolvedSymbol = next;
10812
10810
currentNamespace = next;
10813
10811
}
10814
- resolveImportSymbolType(node, links, currentNamespace, targetMeaning);
10812
+ links.resolvedType = resolveImportSymbolType(node, links, currentNamespace, targetMeaning);
10815
10813
}
10816
10814
else {
10817
10815
if (moduleSymbol.flags & targetMeaning) {
10818
- resolveImportSymbolType(node, links, moduleSymbol, targetMeaning);
10816
+ links.resolvedType = resolveImportSymbolType(node, links, moduleSymbol, targetMeaning);
10819
10817
}
10820
10818
else {
10821
10819
const errorMessage = targetMeaning === SymbolFlags.Value
@@ -10829,17 +10827,17 @@ namespace ts {
10829
10827
}
10830
10828
}
10831
10829
}
10832
- return links.resolvedType!; // TODO: GH#18217
10830
+ return links.resolvedType;
10833
10831
}
10834
10832
10835
10833
function resolveImportSymbolType(node: ImportTypeNode, links: NodeLinks, symbol: Symbol, meaning: SymbolFlags) {
10836
10834
const resolvedSymbol = resolveSymbol(symbol);
10837
10835
links.resolvedSymbol = resolvedSymbol;
10838
10836
if (meaning === SymbolFlags.Value) {
10839
- return links.resolvedType = getTypeOfSymbol(symbol); // intentionally doesn't use resolved symbol so type is cached as expected on the alias
10837
+ return getTypeOfSymbol(symbol); // intentionally doesn't use resolved symbol so type is cached as expected on the alias
10840
10838
}
10841
10839
else {
10842
- return links.resolvedType = getTypeReferenceType(node, resolvedSymbol); // getTypeReferenceType doesn't handle aliases - it must get the resolved symbol
10840
+ return getTypeReferenceType(node, resolvedSymbol); // getTypeReferenceType doesn't handle aliases - it must get the resolved symbol
10843
10841
}
10844
10842
}
10845
10843
@@ -14202,7 +14200,7 @@ namespace ts {
14202
14200
if (isGenericMappedType(source)) {
14203
14201
// A generic mapped type { [P in K]: T } is related to an index signature { [x: string]: U }
14204
14202
// if T is related to U.
14205
- return ( kind === IndexKind.String && isRelatedTo(getTemplateTypeFromMappedType(source), targetInfo.type, reportErrors)) as any as Ternary; // TODO: GH#18217
14203
+ return kind === IndexKind.String ? isRelatedTo(getTemplateTypeFromMappedType(source), targetInfo.type, reportErrors) : Ternary.False;
14206
14204
}
14207
14205
if (isObjectTypeWithInferableIndex(source)) {
14208
14206
let related = Ternary.True;
0 commit comments