Skip to content

Commit 08701ac

Browse files
committed
Clean up some types
1 parent 23e4a14 commit 08701ac

File tree

3 files changed

+30
-13
lines changed

3 files changed

+30
-13
lines changed

src/compiler/types.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3821,16 +3821,21 @@ export type TypeOnlyCompatibleAliasDeclaration =
38213821
| NamespaceExport
38223822
;
38233823

3824-
export type TypeOnlyAliasDeclaration =
3824+
export type TypeOnlyImportDeclaration =
38253825
| ImportClause & { readonly isTypeOnly: true, readonly name: Identifier }
38263826
| ImportEqualsDeclaration & { readonly isTypeOnly: true }
38273827
| NamespaceImport & { readonly parent: ImportClause & { readonly isTypeOnly: true } }
38283828
| ImportSpecifier & ({ readonly isTypeOnly: true } | { readonly parent: NamedImports & { readonly parent: ImportClause & { readonly isTypeOnly: true } } })
3829+
;
3830+
3831+
export type TypeOnlyExportDeclaration =
38293832
| ExportSpecifier & ({ readonly isTypeOnly: true } | { readonly parent: NamedExports & { readonly parent: ExportDeclaration & { readonly isTypeOnly: true } } })
38303833
| ExportDeclaration & { readonly isTypeOnly: true } // export * from "mod"
38313834
| NamespaceExport & { readonly parent: ExportDeclaration & { readonly isTypeOnly: true } } // export * as ns from "mod"
38323835
;
38333836

3837+
export type TypeOnlyAliasDeclaration = TypeOnlyImportDeclaration | TypeOnlyExportDeclaration;
3838+
38343839
/**
38353840
* This is either an `export =` or an `export default` declaration.
38363841
* Unless `isExportEquals` is set, this node was parsed as an `export default`.

src/compiler/utilitiesPublic.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ import {
9292
Identifier,
9393
ImportClause,
9494
ImportEqualsDeclaration,
95-
ImportOrExportSpecifier,
9695
ImportSpecifier,
9796
ImportTypeNode,
9897
isAccessExpression,
@@ -263,6 +262,8 @@ import {
263262
TypeElement,
264263
TypeNode,
265264
TypeOnlyAliasDeclaration,
265+
TypeOnlyExportDeclaration,
266+
TypeOnlyImportDeclaration,
266267
TypeParameterDeclaration,
267268
TypeReferenceType,
268269
UnaryExpression,
@@ -1450,23 +1451,33 @@ export function isImportOrExportSpecifier(node: Node): node is ImportSpecifier |
14501451
return isImportSpecifier(node) || isExportSpecifier(node);
14511452
}
14521453

1453-
export function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration {
1454+
export function isTypeOnlyImportDeclaration(node: Node): node is TypeOnlyImportDeclaration {
14541455
switch (node.kind) {
14551456
case SyntaxKind.ImportSpecifier:
1456-
case SyntaxKind.ExportSpecifier:
1457-
return (node as ImportOrExportSpecifier).isTypeOnly || (node as ImportOrExportSpecifier).parent.parent.isTypeOnly;
1457+
return (node as ImportSpecifier).isTypeOnly || (node as ImportSpecifier).parent.parent.isTypeOnly;
14581458
case SyntaxKind.NamespaceImport:
14591459
return (node as NamespaceImport).parent.isTypeOnly;
14601460
case SyntaxKind.ImportClause:
14611461
case SyntaxKind.ImportEqualsDeclaration:
14621462
return (node as ImportClause | ImportEqualsDeclaration).isTypeOnly;
1463+
}
1464+
return false;
1465+
}
1466+
1467+
export function isTypeOnlyExportDeclaration(node: Node): node is TypeOnlyExportDeclaration {
1468+
switch (node.kind) {
1469+
case SyntaxKind.ExportSpecifier:
1470+
return (node as ExportSpecifier).isTypeOnly || (node as ExportSpecifier).parent.parent.isTypeOnly;
14631471
case SyntaxKind.ExportDeclaration:
14641472
return (node as ExportDeclaration).isTypeOnly && !!(node as ExportDeclaration).moduleSpecifier && !(node as ExportDeclaration).exportClause;
14651473
case SyntaxKind.NamespaceExport:
14661474
return (node as NamespaceExport).parent.isTypeOnly;
1467-
default:
1468-
return false;
14691475
}
1476+
return false;
1477+
}
1478+
1479+
export function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration {
1480+
return isTypeOnlyImportDeclaration(node) || isTypeOnlyExportDeclaration(node);
14701481
}
14711482

14721483
export function isAssertionKey(node: Node): node is AssertionKey {

src/services/completions.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ import {
227227
isTypeLiteralNode,
228228
isTypeNode,
229229
isTypeOfExpression,
230+
isTypeOnlyImportDeclaration,
230231
isTypeOnlyImportOrExportDeclaration,
231232
isTypeReferenceType,
232233
isValidTypeOnlyAliasUseSite,
@@ -351,7 +352,7 @@ import {
351352
typeHasCallOrConstructSignatures,
352353
TypeLiteralNode,
353354
TypeNode,
354-
TypeOnlyAliasDeclaration,
355+
TypeOnlyImportDeclaration,
355356
TypeQueryNode,
356357
TypeReferenceNode,
357358
unescapeLeadingUnderscores,
@@ -466,8 +467,8 @@ interface SymbolOriginInfoResolvedExport extends SymbolOriginInfo {
466467
moduleSpecifier: string;
467468
}
468469

469-
interface SymbolOriginInfoTypeOnlyAlias extends SymbolOriginInfo {
470-
declaration: TypeOnlyAliasDeclaration;
470+
interface SymbolOriginInfoTypeOnlyImport extends SymbolOriginInfo {
471+
declaration: TypeOnlyImportDeclaration;
471472
}
472473

473474
interface SymbolOriginInfoObjectLiteralMethod extends SymbolOriginInfo {
@@ -508,7 +509,7 @@ function originIsNullableMember(origin: SymbolOriginInfo): boolean {
508509
return !!(origin.kind & SymbolOriginInfoKind.Nullable);
509510
}
510511

511-
function originIsTypeOnlyAlias(origin: SymbolOriginInfo | undefined): origin is SymbolOriginInfoTypeOnlyAlias {
512+
function originIsTypeOnlyAlias(origin: SymbolOriginInfo | undefined): origin is SymbolOriginInfoTypeOnlyImport {
512513
return !!(origin && origin.kind & SymbolOriginInfoKind.TypeOnlyAlias);
513514
}
514515

@@ -3330,9 +3331,9 @@ function getCompletionData(
33303331
symbolToSortTextMap[getSymbolId(symbol)] = SortText.GlobalsOrKeywords;
33313332
}
33323333
if (typeOnlyAliasNeedsPromotion && !(symbol.flags & SymbolFlags.Value)) {
3333-
const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportOrExportDeclaration);
3334+
const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportDeclaration);
33343335
if (typeOnlyAliasDeclaration) {
3335-
const origin: SymbolOriginInfoTypeOnlyAlias = { kind: SymbolOriginInfoKind.TypeOnlyAlias, declaration: typeOnlyAliasDeclaration };
3336+
const origin: SymbolOriginInfoTypeOnlyImport = { kind: SymbolOriginInfoKind.TypeOnlyAlias, declaration: typeOnlyAliasDeclaration };
33363337
symbolToOriginInfoMap[i] = origin;
33373338
}
33383339
}

0 commit comments

Comments
 (0)