mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
ImportAttributes should go through the same emit phases when in an ImportTypeNode (#56395)
This commit is contained in:
+15
-9
@@ -223,6 +223,7 @@ import {
|
||||
isGeneratedIdentifier,
|
||||
isGeneratedPrivateIdentifier,
|
||||
isIdentifier,
|
||||
isImportAttributes,
|
||||
isIncrementalCompilation,
|
||||
isInJsonFile,
|
||||
isInternalDeclaration,
|
||||
@@ -1840,6 +1841,7 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
|
||||
if (hint === EmitHint.IdentifierName) return emitIdentifier(cast(node, isIdentifier));
|
||||
if (hint === EmitHint.JsxAttributeValue) return emitLiteral(cast(node, isStringLiteral), /*jsxAttributeEscape*/ true);
|
||||
if (hint === EmitHint.MappedTypeParameter) return emitMappedTypeParameter(cast(node, isTypeParameterDeclaration));
|
||||
if (hint === EmitHint.ImportTypeNodeAttributes) return emitImportTypeNodeAttributes(cast(node, isImportAttributes));
|
||||
if (hint === EmitHint.EmbeddedStatement) {
|
||||
Debug.assertNode(node, isEmptyStatement);
|
||||
return emitEmptyStatement(/*isEmbeddedStatement*/ true);
|
||||
@@ -2944,15 +2946,7 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
|
||||
if (node.attributes) {
|
||||
writePunctuation(",");
|
||||
writeSpace();
|
||||
writePunctuation("{");
|
||||
writeSpace();
|
||||
writeKeyword(node.attributes.token === SyntaxKind.AssertKeyword ? "assert" : "with");
|
||||
writePunctuation(":");
|
||||
writeSpace();
|
||||
const elements = node.attributes.elements;
|
||||
emitList(node.attributes, elements, ListFormat.ImportAttributes);
|
||||
writeSpace();
|
||||
writePunctuation("}");
|
||||
pipelineEmit(EmitHint.ImportTypeNodeAttributes, node.attributes);
|
||||
}
|
||||
writePunctuation(")");
|
||||
if (node.qualifier) {
|
||||
@@ -4077,6 +4071,18 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
|
||||
writeTrailingSemicolon();
|
||||
}
|
||||
|
||||
function emitImportTypeNodeAttributes(node: ImportAttributes) {
|
||||
writePunctuation("{");
|
||||
writeSpace();
|
||||
writeKeyword(node.token === SyntaxKind.AssertKeyword ? "assert" : "with");
|
||||
writePunctuation(":");
|
||||
writeSpace();
|
||||
const elements = node.elements;
|
||||
emitList(node, elements, ListFormat.ImportAttributes);
|
||||
writeSpace();
|
||||
writePunctuation("}");
|
||||
}
|
||||
|
||||
function emitImportAttributes(node: ImportAttributes) {
|
||||
emitTokenWithComment(node.token, node.pos, writeKeyword, node);
|
||||
writeSpace();
|
||||
|
||||
@@ -8143,13 +8143,14 @@ export const enum ExternalEmitHelpers {
|
||||
|
||||
// dprint-ignore
|
||||
export const enum EmitHint {
|
||||
SourceFile, // Emitting a SourceFile
|
||||
Expression, // Emitting an Expression
|
||||
IdentifierName, // Emitting an IdentifierName
|
||||
MappedTypeParameter, // Emitting a TypeParameterDeclaration inside of a MappedTypeNode
|
||||
Unspecified, // Emitting an otherwise unspecified node
|
||||
EmbeddedStatement, // Emitting an embedded statement
|
||||
JsxAttributeValue, // Emitting a JSX attribute value
|
||||
SourceFile, // Emitting a SourceFile
|
||||
Expression, // Emitting an Expression
|
||||
IdentifierName, // Emitting an IdentifierName
|
||||
MappedTypeParameter, // Emitting a TypeParameterDeclaration inside of a MappedTypeNode
|
||||
Unspecified, // Emitting an otherwise unspecified node
|
||||
EmbeddedStatement, // Emitting an embedded statement
|
||||
JsxAttributeValue, // Emitting a JSX attribute value
|
||||
ImportTypeNodeAttributes,// Emitting attributes as part of an ImportTypeNode
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
|
||||
Reference in New Issue
Block a user