diff --git a/src/testRunner/unittests/transform.ts b/src/testRunner/unittests/transform.ts index bbba52f2fdd..cae0ee7deb2 100644 --- a/src/testRunner/unittests/transform.ts +++ b/src/testRunner/unittests/transform.ts @@ -268,33 +268,34 @@ namespace ts { return fs.readFileSync("/.src/index.d.ts").toString(); } + function addSyntheticComment(nodeFilter: (node: Node) => boolean) { + return (context: TransformationContext) => { + return (sourceFile: SourceFile): SourceFile => { + return visitNode(sourceFile, rootTransform, isSourceFile); + }; + function rootTransform(node: T): VisitResult { + if (nodeFilter(node)) { + setEmitFlags(node, EmitFlags.NoLeadingComments); + setSyntheticLeadingComments(node, [{ kind: SyntaxKind.MultiLineCommentTrivia, text: "comment", pos: -1, end: -1, hasTrailingNewLine: true }]); + } + return visitEachChild(node, rootTransform, context); + } + }; + } + // https://github.com/Microsoft/TypeScript/issues/24096 testBaseline("transformAddCommentToArrowReturnValue", () => { return transpileModule(`const foo = () => void 0 `, { transformers: { - before: [addSyntheticComment], + before: [addSyntheticComment(isVoidExpression)], }, compilerOptions: { target: ScriptTarget.ES5, newLine: NewLineKind.CarriageReturnLineFeed, } }).outputText; - - function addSyntheticComment(context: TransformationContext) { - return (sourceFile: SourceFile): SourceFile => { - return visitNode(sourceFile, rootTransform, isSourceFile); - }; - function rootTransform(node: T): VisitResult { - if (isVoidExpression(node)) { - setEmitFlags(node, EmitFlags.NoLeadingComments); - setSyntheticLeadingComments(node, [{ kind: SyntaxKind.SingleLineCommentTrivia, text: "// comment!", pos: -1, end: -1, hasTrailingNewLine: true }]); - return node; - } - return visitEachChild(node, rootTransform, context); - } - } }); // https://github.com/Microsoft/TypeScript/issues/17594 @@ -304,27 +305,13 @@ const exportedSeparately = 2; export {exportedSeparately}; `, { transformers: { - before: [addSyntheticComment], + before: [addSyntheticComment(isVariableStatement)], }, compilerOptions: { target: ScriptTarget.ES5, newLine: NewLineKind.CarriageReturnLineFeed, } }).outputText; - - function addSyntheticComment(context: TransformationContext) { - return (sourceFile: SourceFile): SourceFile => { - return visitNode(sourceFile, rootTransform, isSourceFile); - }; - function rootTransform(node: T): VisitResult { - if (isVariableStatement(node)) { - setEmitFlags(node, EmitFlags.NoLeadingComments); - setSyntheticLeadingComments(node, [{ kind: SyntaxKind.MultiLineCommentTrivia, text: "* @type {number} ", pos: -1, end: -1, hasTrailingNewLine: true }]); - return node; - } - return visitEachChild(node, rootTransform, context); - } - } }); // https://github.com/Microsoft/TypeScript/issues/17594 @@ -339,26 +326,14 @@ export * from 'somewhere'; export {Value}; `, { transformers: { - before: [addSyntheticComment], + before: [addSyntheticComment(n => isImportDeclaration(n) || isExportDeclaration(n) || isImportSpecifier(n) || isExportSpecifier(n))], }, compilerOptions: { target: ScriptTarget.ES5, newLine: NewLineKind.CarriageReturnLineFeed, } }).outputText; - - function addSyntheticComment(context: TransformationContext) { - return (sourceFile: SourceFile): SourceFile => { - return visitNode(sourceFile, rootTransform, isSourceFile); - }; - function rootTransform(node: T): VisitResult { - if (isImportDeclaration(node) || isExportDeclaration(node) || isImportSpecifier(node) || isExportSpecifier(node)) { - setEmitFlags(node, EmitFlags.NoLeadingComments); - setSyntheticLeadingComments(node, [{ kind: SyntaxKind.MultiLineCommentTrivia, text: `comment!`, pos: -1, end: -1, hasTrailingNewLine: true }]); - } - return visitEachChild(node, rootTransform, context); - } - } - }); }); + }); + }); } diff --git a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToArrowReturnValue.js b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToArrowReturnValue.js index 37ff0597054..5697e888ef0 100644 --- a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToArrowReturnValue.js +++ b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToArrowReturnValue.js @@ -1,4 +1,4 @@ var foo = function () { - //// comment! + /*comment*/ return void 0; }; diff --git a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToExportedVar.js b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToExportedVar.js index 32be082c1f4..d4f60514b8f 100644 --- a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToExportedVar.js +++ b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToExportedVar.js @@ -1,7 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -/** @type {number} */ +/*comment*/ exports.exportedDirectly = 1; -/** @type {number} */ +/*comment*/ var exportedSeparately = 2; exports.exportedSeparately = exportedSeparately; diff --git a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js index 9fe48f05e61..de19b854d20 100644 --- a/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js +++ b/tests/baselines/reference/transformApi/transformsCorrectly.transformAddCommentToImport.js @@ -3,14 +3,14 @@ function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); -/*comment!*/ +/*comment*/ var somewhere_1 = require("somewhere"); exports.Value = somewhere_1.Value; -/*comment!*/ +/*comment*/ var somewhere_2 = require("somewhere"); -/*comment!*/ +/*comment*/ exports.X = somewhere_2.X; -/*comment!*/ +/*comment*/ exports.Y = somewhere_2.Y; -/*comment!*/ +/*comment*/ __export(require("somewhere"));