// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`arrow.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== const fn = (/*event, data*/) => doSomething(); const fn2 = (/*event, data*/) => doSomething(anything); =====================================output===================================== const fn = (/*event, data*/) => doSomething(); const fn2 = (/*event, data*/) => doSomething(anything); ================================================================================ `; exports[`assignment-pattern.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== const { a /* comment */ = 1 } = b; const { c = 1 /* comment */ } = d; let {a //comment = b} = c =====================================output===================================== const { a /* comment */ = 1 } = b; const { c = 1 /* comment */ } = d; let { a = b //comment } = c; ================================================================================ `; exports[`before-comma.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== const foo = { a: 'a' /* comment for this line */, /* Section B */ b: 'b', }; =====================================output===================================== const foo = { a: "a" /* comment for this line */, /* Section B */ b: "b" }; ================================================================================ `; exports[`binary-expressions.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== function addition() { 0 // Comment + x } function multiplication() { 0 // Comment * x } function division() { 0 // Comment / x } function substraction() { 0 // Comment - x } function remainder() { 0 // Comment % x } function exponentiation() { 0 // Comment ** x } function leftShift() { 0 // Comment << x } function rightShift() { 0 // Comment >> x } function unsignedRightShift() { 0 // Comment >>> x } function bitwiseAnd() { 0 // Comment & x } function bitwiseOr() { 0 // Comment | x } function bitwiseXor() { 0 // Comment ^ x } =====================================output===================================== function addition() { 0 + // Comment x; } function multiplication() { 0 * // Comment x; } function division() { 0 / // Comment x; } function substraction() { 0 - // Comment x; } function remainder() { 0 % // Comment x; } function exponentiation() { 0 ** // Comment x; } function leftShift() { 0 << // Comment x; } function rightShift() { 0 >> // Comment x; } function unsignedRightShift() { 0 >>> // Comment x; } function bitwiseAnd() { 0 & // Comment x; } function bitwiseOr() { 0 | // Comment x; } function bitwiseXor() { 0 ^ // Comment x; } ================================================================================ `; exports[`blank.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== // This file only // has comments. This comment // should still exist // // when printed. /** * @typedef {DataDrivenMapping|ConstantMapping} Mapping */ /** * @typedef {Object.} ConfigurationMapping */ /** * @typedef {Function} D3Scale - a D3 scale * @property {Function} ticks * @property {Function} tickFormat */ // comment // comment =====================================output===================================== // This file only // has comments. This comment // should still exist // // when printed. /** * @typedef {DataDrivenMapping|ConstantMapping} Mapping */ /** * @typedef {Object.} ConfigurationMapping */ /** * @typedef {Function} D3Scale - a D3 scale * @property {Function} ticks * @property {Function} tickFormat */ // comment // comment ================================================================================ `; exports[`break-continue-statements.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== for (;;) { break /* comment */; continue /* comment */; } loop: for (;;) { break /* comment */ loop; break loop /* comment */; continue /* comment */ loop; continue loop /* comment */; } =====================================output===================================== for (;;) { break; /* comment */ continue; /* comment */ } loop: for (;;) { break /* comment */ loop; break loop /* comment */; continue /* comment */ loop; continue loop /* comment */; } ================================================================================ `; exports[`call_comment.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== render( // Warm any cache , container ); React.render( // Warm any cache , container ); =====================================output===================================== render( // Warm any cache , container ); React.render( // Warm any cache , container ); ================================================================================ `; exports[`dangling.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== var x = {/* dangling */}; var x = { // dangling }; var x = [/* dangling */]; function x() { /* dangling */ } new Thing(/* dangling */); Thing(/* dangling */); declare class Foo extends Qux {/* dangling */} export /* dangling */{}; =====================================output===================================== var x = { /* dangling */ }; var x = { // dangling }; var x = [ /* dangling */ ]; function x() { /* dangling */ } new Thing(/* dangling */); Thing(/* dangling */); declare class Foo extends Qux { /* dangling */ } export /* dangling */{}; ================================================================================ `; exports[`dangling_array.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== expect(() => {}).toTriggerReadyStateChanges([ // Nothing. ]); [1 /* first comment */, 2 /* second comment */, 3]; =====================================output===================================== expect(() => {}).toTriggerReadyStateChanges([ // Nothing. ]); [1 /* first comment */, 2 /* second comment */, 3]; ================================================================================ `; exports[`dangling_for.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== for // comment (;;); for /* comment */(;;); =====================================output===================================== // comment for (;;); /* comment */ for (;;); ================================================================================ `; exports[`dynamic_imports.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== import(/* Hello */ 'something') import('something' /* Hello */) import(/* Hello */ 'something' /* Hello */) import('something' /* Hello */ + 'else') import( /* Hello */ 'something' /* Hello */ ) wrap( import(/* Hello */ 'something' ) ) =====================================output===================================== import(/* Hello */ "something"); import("something" /* Hello */); import(/* Hello */ "something" /* Hello */); import("something" /* Hello */ + "else"); import( /* Hello */ "something" /* Hello */ ); wrap( import( /* Hello */ "something" ) ); ================================================================================ `; exports[`export.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== export //comment {} export /* comment */ {}; export { foo // comment } export { // comment bar } export { fooo, // comment barr, // comment } =====================================output===================================== export //comment {}; export /* comment */{}; export { foo // comment }; export { // comment bar }; export { fooo, // comment barr // comment }; ================================================================================ `; exports[`first-line.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== a // comment b =====================================output===================================== a; // comment b; ================================================================================ `; exports[`flow_union.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== type UploadState // The upload hasnt begun yet = {type: "Not_begun"} // The upload timed out | {type: "Timed_out"} // Failed somewhere on the line | {type: "Failed", error: E, errorMsg: EM} // Uploading to aws3 and CreatePostMutation succeeded | {type: "Success", data: D}; type UploadState // The upload hasnt begun yet = A // The upload timed out | B // Failed somewhere on the line | C // Uploading to aws3 and CreatePostMutation succeeded | D; =====================================output===================================== type UploadState = // The upload hasnt begun yet | { type: "Not_begun" } // The upload timed out | { type: "Timed_out" } // Failed somewhere on the line | { type: "Failed", error: E, errorMsg: EM } // Uploading to aws3 and CreatePostMutation succeeded | { type: "Success", data: D }; type UploadState = // The upload hasnt begun yet | A // The upload timed out | B // Failed somewhere on the line | C // Uploading to aws3 and CreatePostMutation succeeded | D; ================================================================================ `; exports[`function-declaration.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== function a(/* comment */) {} // comment function b() {} // comment function c(/* comment */ argA, argB, argC) {} // comment call((/*object*/ row) => {}); KEYPAD_NUMBERS.map(num => ( // Buttons 0-9
)); function f /* f */() {} function f (/* args */) {} function f () /* returns */ {} function f /* f */(/* args */) /* returns */ {} function f /* f */(/* a */ a) {} function f /* f */(a /* a */) {} function f /* f */(/* a */ a) /* returns */ {} const obj = { f1 /* f */() {}, f2 (/* args */) {}, f3 () /* returns */ {}, f4 /* f */(/* args */) /* returns */ {}, }; (function f /* f */() {})(); (function f (/* args */) {})(); (function f () /* returns */ {})(); (function f /* f */(/* args */) /* returns */ {})(); class C { f/* f */() {} } class C { f(/* args */) {} } class C { f() /* returns */ {} } class C { f/* f */(/* args */) /* returns */ {} } function foo() // this is a function { return 42 } function foo() // this is a function { return 42 } function foo() { // this is a function return 42 } function foo() { // this is a function return 42; } =====================================output===================================== function a(/* comment */) {} // comment function b() {} // comment function c(/* comment */ argA, argB, argC) {} // comment call((/*object*/ row) => {}); KEYPAD_NUMBERS.map(( num // Buttons 0-9 ) =>
); function f /* f */() {} function f(/* args */) {} function f() /* returns */ {} function f /* f */(/* args */) /* returns */ {} function f /* f */(/* a */ a) {} function f /* f */(a /* a */) {} function f /* f */(/* a */ a) /* returns */ {} const obj = { f1 /* f */() {}, f2(/* args */) {}, f3() /* returns */ {}, f4 /* f */(/* args */) /* returns */ {} }; (function f /* f */() {})(); (function f(/* args */) {})(); (function f() /* returns */ {})(); (function f /* f */(/* args */) /* returns */ {})(); class C { f /* f */() {} } class C { f(/* args */) {} } class C { f() /* returns */ {} } class C { f /* f */(/* args */) /* returns */ {} } function foo() { // this is a function return 42; } function foo() { // this is a function return 42; } function foo() { // this is a function return 42; } function foo() { // this is a function return 42; } ================================================================================ `; exports[`if.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== if (1) // comment { false } // comment else if (2) true // multi // ple // lines else if (3) // existing comment true // okay? else if (4) { // empty with existing comment } // comment else { } if (5) // comment true if (6) // comment {true} else if (7) // comment true else // comment {true} if (8) // comment // comment {true} else if (9) // comment // comment true else // comment // comment {true} if (10) /* comment */ // comment {true} else if (11) /* comment */ true else if (12) // comment /* comment */ // comment true else if (13) /* comment */ /* comment */ // comment true else /* comment */ {true} if (14) // comment /* comment */ // comment {true} else if (15) // comment /* comment */ /* comment */ // comment true =====================================output===================================== if (1) { // comment false; } // comment else if (2) true; // multi // ple // lines else if (3) // existing comment true; // okay? else if (4) { // empty with existing comment } // comment else { } if (5) // comment true; if (6) { // comment true; } else if (7) // comment true; // comment else { true; } if (8) { // comment // comment true; } else if (9) // comment // comment true; // comment // comment else { true; } if (10) { /* comment */ // comment true; } else if (11) /* comment */ true; else if (12) // comment /* comment */ // comment true; else if (13) /* comment */ /* comment */ // comment true; /* comment */ else { true; } if (14) { // comment /* comment */ // comment true; } else if (15) // comment /* comment */ /* comment */ // comment true; ================================================================================ `; exports[`issues.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== // Does not need to break as it fits in 80 columns this.call(a, /* comment */ b); function f( someReallyLongArgument: WithSomeLongType, someReallyLongArgument2: WithSomeLongType, // Trailing comment should stay after ) {} // Comments should either stay at the end of the line or always before, but // not one before and one after. throw new ProcessSystemError({ code: acc.error.code, // Alias of errno originalError: acc.error, // Just in case. }); // Adding a comment stops the pretty printing process and everything is // squished in a single line afterward export type BuckWebSocketMessage = { // Not actually from Buck - this is to let the receiver know that the socket is connected. type: 'SocketConnected', } | { type: 'BuildProgressUpdated', progressValue: number, } | { type: 'BuildFinished', exitCode: number, } | { type: 'BuildStarted', } | { type: 'ParseStarted', } | { type: 'ParseFinished', } | { type: 'RunStarted', } | { type: 'RunComplete', }; // Missing one level of indentation because of the comment const rootEpic = (actions, store) => ( combineEpics(...epics)(actions, store) // Log errors and continue. .catch((err, stream) => { getLogger().error(err); return stream; }) ); // Two extra levels of indentation because of the comment export type AsyncExecuteOptions = child_process$execFileOpts & { // The contents to write to stdin. stdin?: ?string, dontLogInNuclide?: ?boolean, }; // optional trailing comma gets moved all the way to the beginning const regex = new RegExp( '^\\\\s*' + // beginning of the line 'name\\\\s*=\\\\s*' + // name = '[\\'"]' + // opening quotation mark escapeStringRegExp(target.name) + // target name '[\\'"]' + // closing quotation mark ',?$', // optional trailing comma ); // The comment is moved and doesn't trigger the eslint rule anymore import path from 'path'; // eslint-disable-line nuclide-internal/prefer-nuclide-uri // Comments disappear in-between MemberExpressions Observable.of(process) // Don't complete until we say so! .merge(Observable.never()) // Get the errors. .takeUntil(throwOnError ? errors.flatMap(Observable.throw) : errors) .takeUntil(exit); // Comments disappear inside of JSX
{/* Some comment */}
; // Comments in JSX tag are placed in a non optimal way
; // Comments disappear in empty blocks if (1) { // Comment } // Comments trigger invalid JavaScript in-between else if if (1) { } // Comment else { } // The comment makes the line break in a weird way const result = asyncExecute('non_existing_command', /* args */ []); // The closing paren is printed on the same line as the comment foo({} // Hi ); =====================================output===================================== // Does not need to break as it fits in 80 columns this.call(a, /* comment */ b); function f( someReallyLongArgument: WithSomeLongType, someReallyLongArgument2: WithSomeLongType // Trailing comment should stay after ) {} // Comments should either stay at the end of the line or always before, but // not one before and one after. throw new ProcessSystemError({ code: acc.error.code, // Alias of errno originalError: acc.error // Just in case. }); // Adding a comment stops the pretty printing process and everything is // squished in a single line afterward export type BuckWebSocketMessage = | { // Not actually from Buck - this is to let the receiver know that the socket is connected. type: "SocketConnected" } | { type: "BuildProgressUpdated", progressValue: number } | { type: "BuildFinished", exitCode: number } | { type: "BuildStarted" } | { type: "ParseStarted" } | { type: "ParseFinished" } | { type: "RunStarted" } | { type: "RunComplete" }; // Missing one level of indentation because of the comment const rootEpic = (actions, store) => combineEpics(...epics)(actions, store) // Log errors and continue. .catch((err, stream) => { getLogger().error(err); return stream; }); // Two extra levels of indentation because of the comment export type AsyncExecuteOptions = child_process$execFileOpts & { // The contents to write to stdin. stdin?: ?string, dontLogInNuclide?: ?boolean }; // optional trailing comma gets moved all the way to the beginning const regex = new RegExp( "^\\\\s*" + // beginning of the line "name\\\\s*=\\\\s*" + // name = "['\\"]" + // opening quotation mark escapeStringRegExp(target.name) + // target name "['\\"]" + // closing quotation mark ",?$" // optional trailing comma ); // The comment is moved and doesn't trigger the eslint rule anymore import path from "path"; // eslint-disable-line nuclide-internal/prefer-nuclide-uri // Comments disappear in-between MemberExpressions Observable.of(process) // Don't complete until we say so! .merge(Observable.never()) // Get the errors. .takeUntil(throwOnError ? errors.flatMap(Observable.throw) : errors) .takeUntil(exit); // Comments disappear inside of JSX
{/* Some comment */}
; // Comments in JSX tag are placed in a non optimal way
; // Comments disappear in empty blocks if (1) { // Comment } // Comments trigger invalid JavaScript in-between else if if (1) { } // Comment else { } // The comment makes the line break in a weird way const result = asyncExecute("non_existing_command", /* args */ []); // The closing paren is printed on the same line as the comment foo( {} // Hi ); ================================================================================ `; exports[`jsx.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input======================================
{ /* comment */ }
;
{/* comment */ }
;
{/* comment */ }
;
{a/* comment */ }
;
{/* comment */ a }
;
{/* comment */ }
;
{/* comment */}
;
{ // single line comment }
;
{ // multiple line comments 1 // multiple line comments 2 }
;
{ // multiple mixed comments 1 /* multiple mixed comments 2 */ /* multiple mixed comments 3 */ // multiple mixed comments 4 }
;
{ // Some very v ery very very merry (xmas) very very long line to break line width limit }
;
{/*
Some very v ery very very long line to break line width limit
*/}
;
{/** * JSDoc-y comment in JSX. I wonder what will happen to it? */}
;
{ /** * Another JSDoc comment in JSX. */ }
;
{}}>
;
{foo}
;
{foo}
;
{foo}
;
{children}
; {} =====================================output=====================================
{/* comment */}
;
{/* comment */}
;
{/* comment */}
;
{ a /* comment */ }
;
{ /* comment */ a }
;
{/* comment */}
;
{/* comment */}
;
{ // single line comment }
;
{ // multiple line comments 1 // multiple line comments 2 }
;
{ // multiple mixed comments 1 /* multiple mixed comments 2 */ /* multiple mixed comments 3 */ // multiple mixed comments 4 }
;
{ // Some very v ery very very merry (xmas) very very long line to break line width limit }
;
{/*
Some very v ery very very long line to break line width limit
*/}
;
{/** * JSDoc-y comment in JSX. I wonder what will happen to it? */}
;
{/** * Another JSDoc comment in JSX. */}
;
{}} >
;
{foo}
;
{foo}
;
{foo}
;
{children}
; {} ; ================================================================================ `; exports[`last-arg.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== type f = ( currentRequest: {a: number}, // TODO this is a very very very very long comment that makes it go > 80 columns ) => number; f = ( currentRequest: {a: number}, // TODO this is a very very very very long comment that makes it go > 80 columns ): number => {}; f = ( currentRequest: {a: number}, // TODO this is a very very very very long comment that makes it go > 80 columns ) => {}; f = function( currentRequest: {a: number}, // TODO this is a very very very very long comment that makes it go > 80 columns ) {}; class X { f( currentRequest: {a: number}, // TODO this is a very very very very long comment that makes it go > 80 columns ) {} } function f( a: number // some comment here ): number { return a + 1; } var x = { getSectionMode( pageMetaData: PageMetaData, sectionMetaData: SectionMetaData /* $FlowFixMe This error was exposed while converting keyMirror * to keyMirrorRecursive */ ): $Enum { } } class X { getSectionMode( pageMetaData: PageMetaData, sectionMetaData: SectionMetaData = ['unknown'] /* $FlowFixMe This error was exposed while converting keyMirror * to keyMirrorRecursive */ ): $Enum { } } class Foo { a(lol /*string*/) {} b(lol /*string*/ ) {} d( lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/ ) {} d( lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/ ) /*string*/ {} // prettier-ignore c(lol /*string*/ ) {} // prettier-ignore d( lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/ ) {} // prettier-ignore e( lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/ ) {} /* string*/ } =====================================output===================================== type f = ( currentRequest: { a: number } // TODO this is a very very very very long comment that makes it go > 80 columns ) => number; f = ( currentRequest: { a: number } // TODO this is a very very very very long comment that makes it go > 80 columns ): number => {}; f = ( currentRequest: { a: number } // TODO this is a very very very very long comment that makes it go > 80 columns ) => {}; f = function( currentRequest: { a: number } // TODO this is a very very very very long comment that makes it go > 80 columns ) {}; class X { f( currentRequest: { a: number } // TODO this is a very very very very long comment that makes it go > 80 columns ) {} } function f( a: number // some comment here ): number { return a + 1; } var x = { getSectionMode( pageMetaData: PageMetaData, sectionMetaData: SectionMetaData /* $FlowFixMe This error was exposed while converting keyMirror * to keyMirrorRecursive */ ): $Enum {} }; class X { getSectionMode( pageMetaData: PageMetaData, sectionMetaData: SectionMetaData = ["unknown"] /* $FlowFixMe This error was exposed while converting keyMirror * to keyMirrorRecursive */ ): $Enum {} } class Foo { a(lol /*string*/) {} b(lol /*string*/) {} d(lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/) {} d( lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/ ) /*string*/ {} // prettier-ignore c(lol /*string*/ ) {} // prettier-ignore d( lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/ ) {} // prettier-ignore e( lol /*string*/, lol2 /*string*/, lol3 /*string*/, lol4 /*string*/ ) {} /* string*/ } ================================================================================ `; exports[`preserve-new-line-last.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== function f() { a /* eslint-disable */ } function f() { a /* eslint-disable */ } function name() { // comment1 func1() // comment2 func2() // comment3 why func3 commented // func3() } =====================================output===================================== function f() { a; /* eslint-disable */ } function f() { a; /* eslint-disable */ } function name() { // comment1 func1(); // comment2 func2(); // comment3 why func3 commented // func3() } ================================================================================ `; exports[`return-statement.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== function jsx() { return ( // Comment
); } function unary() { return ( // Comment !!x ); } function numericLiteralNoParen() { return 1337; // Comment } function logical() { return ( // Reason for 42 42 ) && 84 } function binary() { return ( // Reason for 42 42 ) * 84 } function binaryInBinaryLeft() { return ( // Reason for 42 42 ) * 84 + 2 } function binaryInBinaryRight() { return ( // Reason for 42 42 ) + 84 * 2 } function conditional() { return ( // Reason for 42 42 ) ? 1 : 2 } function binaryInConditional() { return ( // Reason for 42 42 ) * 3 ? 1 : 2 } function call() { return ( // Reason for a a )() } function memberInside() { return ( // Reason for a.b a.b ).c } function memberOutside() { return ( // Reason for a a ).b.c } function memberInAndOutWithCalls() { return ( // Reason for a aFunction.b() ).c.d() } function excessiveEverything() { return ( // Reason for stuff a.b() * 3 + 4 ? (a\`hi\`, 1) ? 1 : 1 : 1 ) } // See https://github.com/prettier/prettier/issues/2392 // function sequenceExpression() { // return ( // // Reason for a // a // ), b // } function sequenceExpressionInside() { return ( // Reason for a a, b ); } function taggedTemplate() { return ( // Reason for a a )\`b\` } function inlineComment() { return ( /* hi */ 42 ) || 42 } =====================================output===================================== function jsx() { return ( // Comment
); } function unary() { return ( // Comment !!x ); } function numericLiteralNoParen() { return 1337; // Comment } function logical() { return ( // Reason for 42 42 && 84 ); } function binary() { return ( // Reason for 42 42 * 84 ); } function binaryInBinaryLeft() { return ( // Reason for 42 42 * 84 + 2 ); } function binaryInBinaryRight() { return ( // Reason for 42 42 + 84 * 2 ); } function conditional() { return ( // Reason for 42 42 ? 1 : 2 ); } function binaryInConditional() { return ( // Reason for 42 42 * 3 ? 1 : 2 ); } function call() { return ( // Reason for a a() ); } function memberInside() { return ( // Reason for a.b a.b.c ); } function memberOutside() { return ( // Reason for a a.b.c ); } function memberInAndOutWithCalls() { return ( aFunction .b// Reason for a () .c.d() ); } function excessiveEverything() { return ( // Reason for stuff a.b() * 3 + 4 ? ((a\`hi\`, 1) ? 1 : 1) : 1 ); } // See https://github.com/prettier/prettier/issues/2392 // function sequenceExpression() { // return ( // // Reason for a // a // ), b // } function sequenceExpressionInside() { return ( // Reason for a a, b ); } function taggedTemplate() { return ( // Reason for a a\`b\` ); } function inlineComment() { return /* hi */ 42 || 42; } ================================================================================ `; exports[`single-star-jsdoc.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== /* * Looking good! */ if(true) { /* * Oh no */ } /** first line * second line * third line */ /* first line * second line * third line */ /*! first line *second line * third line */ /*! * Extracted from vue codebase * https://github.com/vuejs/vue/blob/cfd73c2386623341fdbb3ac636c4baf84ea89c2c/src/compiler/parser/html-parser.js * HTML Parser By John Resig (ejohn.org) * Modified by Juriy "kangax" Zaytsev * Original code by Erik Arvidsson, Mozilla Public License * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js */ =====================================output===================================== /* * Looking good! */ if (true) { /* * Oh no */ } /** first line * second line * third line */ /* first line * second line * third line */ /*! first line *second line * third line */ /*! * Extracted from vue codebase * https://github.com/vuejs/vue/blob/cfd73c2386623341fdbb3ac636c4baf84ea89c2c/src/compiler/parser/html-parser.js * HTML Parser By John Resig (ejohn.org) * Modified by Juriy "kangax" Zaytsev * Original code by Erik Arvidsson, Mozilla Public License * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js */ ================================================================================ `; exports[`switch.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== switch (node && node.type) { case "Property": case "MethodDefinition": prop = node.key; break; case "MemberExpression": prop = node.property; break; // no default } switch (foo) { case "bar": doThing() // no default } switch (foo) { case "bar": //comment doThing(); //comment case "baz": doOtherThing(); //comment } switch (foo) { case "bar": { doThing(); } //comment case "baz": { doThing(); } //comment } =====================================output===================================== switch (node && node.type) { case "Property": case "MethodDefinition": prop = node.key; break; case "MemberExpression": prop = node.property; break; // no default } switch (foo) { case "bar": doThing(); // no default } switch (foo) { case "bar": //comment doThing(); //comment case "baz": doOtherThing(); //comment } switch (foo) { case "bar": { doThing(); } //comment case "baz": { doThing(); } //comment } ================================================================================ `; exports[`template-literal.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== \` \${a // comment } \${b /* comment */} \${/* comment */ c /* comment */} \${// comment d //comment }; \` =====================================output===================================== \` \${ a // comment } \${b /* comment */} \${/* comment */ c /* comment */} \${ // comment d //comment }; \`; ================================================================================ `; exports[`trailing_space.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== #!/there/is-space-here-> // Do not trim trailing whitespace from this source file! // There is some space here -> =====================================output===================================== #!/there/is-space-here-> // Do not trim trailing whitespace from this source file! // There is some space here -> ================================================================================ `; exports[`trailing-jsdocs.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== const CONNECTION_STATUS = exports.CONNECTION_STATUS = { CLOSED: Object.freeze({ kind: 'CLOSED' }), CONNECTED: Object.freeze({ kind: 'CONNECTED' }), CONNECTING: Object.freeze({ kind: 'CONNECTING' }), NOT_CONNECTED: Object.freeze({ kind: 'NOT_CONNECTED' }) }; /* A comment */ /** * A type that can be written to a buffer. */ /** * Describes the connection status of a ReactiveSocket/DuplexConnection. * - NOT_CONNECTED: no connection established or pending. * - CONNECTING: when \`connect()\` has been called but a connection is not yet * established. * - CONNECTED: when a connection is established. * - CLOSED: when the connection has been explicitly closed via \`close()\`. * - ERROR: when the connection has been closed for any other reason. */ /** * A contract providing different interaction models per the [ReactiveSocket protocol] * (https://github.com/ReactiveSocket/reactivesocket/blob/master/Protocol.md). */ /** * A single unit of data exchanged between the peers of a \`ReactiveSocket\`. */ =====================================output===================================== const CONNECTION_STATUS = (exports.CONNECTION_STATUS = { CLOSED: Object.freeze({ kind: "CLOSED" }), CONNECTED: Object.freeze({ kind: "CONNECTED" }), CONNECTING: Object.freeze({ kind: "CONNECTING" }), NOT_CONNECTED: Object.freeze({ kind: "NOT_CONNECTED" }) }); /* A comment */ /** * A type that can be written to a buffer. */ /** * Describes the connection status of a ReactiveSocket/DuplexConnection. * - NOT_CONNECTED: no connection established or pending. * - CONNECTING: when \`connect()\` has been called but a connection is not yet * established. * - CONNECTED: when a connection is established. * - CLOSED: when the connection has been explicitly closed via \`close()\`. * - ERROR: when the connection has been closed for any other reason. */ /** * A contract providing different interaction models per the [ReactiveSocket protocol] * (https://github.com/ReactiveSocket/reactivesocket/blob/master/Protocol.md). */ /** * A single unit of data exchanged between the peers of a \`ReactiveSocket\`. */ ================================================================================ `; exports[`try.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== // Comment 1 try { // Comment 2 // Comment 3 } // Comment 4 catch(e) { // Comment 5 // Comment 6 } // Comment 7 finally { // Comment 8 // Comment 9 } // Comment 10 =====================================output===================================== // Comment 1 try { // Comment 2 // Comment 3 } catch (e) { // Comment 4 // Comment 5 // Comment 6 } finally { // Comment 7 // Comment 8 // Comment 9 } // Comment 10 ================================================================================ `; exports[`variable_declarator.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== let obj = // Comment { key: 'val' } let obj // Comment = { key: 'val' } let obj = { // Comment key: 'val' } let obj = { // Comment key: 'val' } let obj = // Comment [ 'val' ] let obj // Comment = [ 'val' ] let obj = [ // Comment 'val' ] let obj = [ // Comment 'val' ] let obj = // Comment \`val\`; let obj = // Comment \` val val \`; let obj = // Comment tag\`val\`; let obj = // Comment tag\` val val \`; let // Comment foo = 'val'; let // Comment foo = 'val', bar = 'val'; const foo = 123 // Nothing to see here. ;["2", "3"].forEach(x => console.log(x)) =====================================output===================================== let obj = // Comment { key: "val" }; let obj = // Comment { key: "val" }; let obj = { // Comment key: "val" }; let obj = { // Comment key: "val" }; let obj = // Comment ["val"]; let obj = // Comment ["val"]; let obj = [ // Comment "val" ]; let obj = [ // Comment "val" ]; let obj = // Comment \`val\`; let obj = // Comment \` val val \`; let obj = // Comment tag\`val\`; let obj = // Comment tag\` val val \`; let // Comment foo = "val"; let // Comment foo = "val", bar = "val"; const foo = 123; // Nothing to see here. ["2", "3"].forEach(x => console.log(x)); ================================================================================ `; exports[`while.js 1`] = ` ====================================options===================================== parsers: ["flow", "babel"] printWidth: 80 | printWidth =====================================input====================================== while( true // Comment ) {} while(true)// Comment {} while(true){}// Comment while(true)/*Comment*/{} while( true // Comment && true // Comment ){} while(true) {} // comment while(true) /* comment */ ++x; =====================================output===================================== while ( true // Comment ) {} while (true) { // Comment } while (true) {} // Comment while (true) { /*Comment*/ } while ( true && // Comment true // Comment ) {} while (true) {} // comment while (true) /* comment */ ++x; ================================================================================ `;