prettier/tests/comments/__snapshots__/jsfmt.spec.js.snap

2379 lines
45 KiB
Plaintext
Raw Normal View History

// 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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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.<String, Mapping>} 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.<String, Mapping>} ConfigurationMapping
*/
/**
* @typedef {Function} D3Scale - a D3 scale
* @property {Function} ticks
* @property {Function} tickFormat
*/
// comment
// comment
================================================================================
`;
exports[`break-continue-statements.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
parsers: ["flow", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
render( // Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
React.render( // Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
=====================================output=====================================
render(
// Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
React.render(
// Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
================================================================================
`;
exports[`dangling.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
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<string> {/* 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<string> {
/* dangling */
}
export /* dangling */{};
================================================================================
`;
exports[`dangling_array.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
parsers: ["flow", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
for // comment
(;;);
for /* comment */(;;);
=====================================output=====================================
// comment
for (;;);
/* comment */
for (;;);
================================================================================
`;
exports[`dynamic_imports.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
parsers: ["flow", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
2017-09-05 04:57:36 +03:00
import(/* Hello */ 'something')
import('something' /* Hello */)
import(/* Hello */ 'something' /* Hello */)
import('something' /* Hello */ + 'else')
import(
/* Hello */
'something'
/* Hello */
)
wrap(
import(/* Hello */
'something'
)
)
=====================================output=====================================
2017-09-05 04:57:36 +03:00
import(/* Hello */ "something");
import("something" /* Hello */);
import(/* Hello */ "something" /* Hello */);
import("something" /* Hello */ + "else");
import(
/* Hello */
"something"
/* Hello */
);
wrap(
import(
/* Hello */
"something"
)
);
================================================================================
2017-09-05 04:57:36 +03:00
`;
exports[`export.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
parsers: ["flow", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
a // comment
b
=====================================output=====================================
a; // comment
b;
================================================================================
`;
exports[`flow_union.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
parsers: ["flow", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
type UploadState<E, EM, D>
// 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<E, EM, D>
// 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<E, EM, D> =
// 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<E, EM, D> =
// 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=====================================
2018-12-27 16:05:19 +03:00
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
<div />
));
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
) => <div />);
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=====================================
2018-12-27 16:05:19 +03:00
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;
2018-04-05 21:53:41 +03:00
}
// comment
else if (2) true;
// multi
// ple
// lines
else if (3)
// existing comment
true;
2018-04-05 21:53:41 +03:00
// okay?
else if (4) {
// empty with existing comment
2018-04-05 21:53:41 +03:00
}
// comment
else {
}
if (5)
// comment
true;
if (6) {
// comment
true;
} else if (7)
// comment
true;
2018-04-05 21:53:41 +03:00
// comment
else {
true;
}
if (8) {
// comment
// comment
true;
} else if (9)
// comment
// comment
true;
2018-04-05 21:53:41 +03:00
// 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;
2018-04-05 21:53:41 +03:00
/* comment */ else {
true;
}
if (14) {
// comment
/* comment */
// comment
true;
} else if (15)
// comment
/* comment */
/* comment */ // comment
true;
================================================================================
`;
exports[`issues.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
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
<div>
{/* Some comment */}
</div>;
// Comments in JSX tag are placed in a non optimal way
<div
// comment
/>;
// 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
<div>{/* Some comment */}</div>;
// Comments in JSX tag are placed in a non optimal way
<div
// comment
2017-01-24 21:54:01 +03:00
/>;
// Comments disappear in empty blocks
if (1) {
// Comment
}
// Comments trigger invalid JavaScript in-between else if
if (1) {
2018-04-05 21:53:41 +03:00
}
// 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=====================================
2018-12-27 16:05:19 +03:00
parsers: ["flow", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
<div>
{
/* comment */
}
</div>;
<div>
{/* comment */
}
</div>;
<div>
{/* comment
*/
}
</div>;
<div>
{a/* comment
*/
}
</div>;
<div>
{/* comment
*/
a
}
</div>;
<div>
{/* comment */
}
</div>;
<div>
{/* comment */}
</div>;
<div>
{
// single line comment
}
</div>;
<div>
{
// multiple line comments 1
// multiple line comments 2
}
</div>;
<div>
{
// multiple mixed comments 1
/* multiple mixed comments 2 */
/* multiple mixed comments 3 */
// multiple mixed comments 4
}
</div>;
<div>
{
// Some very v ery very very merry (xmas) very very long line to break line width limit
}
</div>;
<div>{/*<div> Some very v ery very very long line to break line width limit </div>*/}</div>;
2017-08-25 04:02:44 +03:00
<div>
{/**
* JSDoc-y comment in JSX. I wonder what will happen to it?
*/}
</div>;
<div>
{
/**
* Another JSDoc comment in JSX.
*/
}
</div>;
<div
/**
* Handles clicks.
*/
onClick={() => {}}>
</div>;
<div
// comment
>
{foo}
</div>;
<div
className="foo" // comment
>
{foo}
</div>;
<div
className="foo"
// comment
>
{foo}
</div>;
<div // comment
id="foo"
>
{children}
</div>;
2017-08-25 04:02:44 +03:00
<Wrapper>
{}
<Component />
</Wrapper>
=====================================output=====================================
<div>{/* comment */}</div>;
<div>{/* comment */}</div>;
<div>
{/* comment
*/}
</div>;
<div>
{
a
/* comment
*/
}
</div>;
<div>
{
/* comment
*/
a
}
</div>;
<div>{/* comment */}</div>;
<div>{/* comment */}</div>;
<div>
{
// single line comment
}
</div>;
<div>
{
// multiple line comments 1
// multiple line comments 2
}
</div>;
<div>
{
// multiple mixed comments 1
/* multiple mixed comments 2 */
/* multiple mixed comments 3 */
// multiple mixed comments 4
}
</div>;
<div>
{
// Some very v ery very very merry (xmas) very very long line to break line width limit
}
</div>;
<div>
{/*<div> Some very v ery very very long line to break line width limit </div>*/}
</div>;
<div>
{/**
* JSDoc-y comment in JSX. I wonder what will happen to it?
*/}
</div>;
<div>
{/**
* Another JSDoc comment in JSX.
*/}
</div>;
<div
/**
* Handles clicks.
*/
onClick={() => {}}
></div>;
<div
// comment
>
{foo}
</div>;
<div
className="foo" // comment
>
{foo}
</div>;
<div
className="foo"
// comment
>
{foo}
</div>;
<div // comment
id="foo"
>
{children}
</div>;
2017-08-25 04:02:44 +03:00
<Wrapper>
{}
<Component />
</Wrapper>;
================================================================================
`;
exports[`last-arg.js 1`] = `
====================================options=====================================
2018-12-27 16:05:19 +03:00
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<SectionMode> {
}
}
class X {
getSectionMode(
pageMetaData: PageMetaData,
sectionMetaData: SectionMetaData = ['unknown']
/* $FlowFixMe This error was exposed while converting keyMirror
* to keyMirrorRecursive */
): $Enum<SectionMode> {
}
}
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<SectionMode> {}
};
class X {
getSectionMode(
pageMetaData: PageMetaData,
sectionMetaData: SectionMetaData = ["unknown"]
/* $FlowFixMe This error was exposed while converting keyMirror
* to keyMirrorRecursive */
): $Enum<SectionMode> {}
}
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
parsers: ["flow", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
function jsx() {
return (
// Comment
<div />
);
}
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
<div />
);
}
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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=====================================
2017-04-07 19:37:53 +03:00
let obj =
// Comment
{
key: "val"
2017-04-07 19:37:53 +03:00
};
2017-04-07 19:37:53 +03:00
let obj =
// Comment
{
key: "val"
2017-04-07 19:37:53 +03:00
};
let obj = {
// Comment
key: "val"
};
let obj = {
// Comment
key: "val"
};
2017-04-07 19:37:53 +03:00
let obj =
// Comment
["val"];
2017-04-07 19:37:53 +03:00
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=====================================
2018-12-27 16:05:19 +03:00
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;
================================================================================
`;