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

1748 lines
28 KiB
Plaintext
Raw Normal View History

// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`assignment-pattern.js 1`] = `
const { a /* comment */ = 1 } = b;
const { c = 1 /* comment */ } = d;
let {a //comment
= b} = c
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
const { a /* comment */ = 1 } = b;
const { c = 1 /* comment */ } = d;
let {
a = b //comment
} = c;
`;
exports[`before-comma.js 1`] = `
const foo = {
a: 'a' /* comment for this line */,
/* Section B */
b: 'b',
};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
const foo = {
a: "a" /* comment for this line */,
/* Section B */
b: "b"
};
`;
exports[`blank.js 1`] = `
// 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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 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`] = `
for (;;) {
break /* comment */;
continue /* comment */;
}
loop: for (;;) {
break /* comment */ loop;
break loop /* comment */;
continue /* comment */ loop;
continue loop /* comment */;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for (;;) {
break; /* comment */
continue; /* comment */
}
loop: for (;;) {
break /* comment */ loop;
break loop /* comment */;
continue /* comment */ loop;
continue loop /* comment */;
}
`;
exports[`call_comment.js 1`] = `
render( // Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
React.render( // Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
render(
// Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
React.render(
// Warm any cache
<ChildUpdates renderAnchor={true} anchorClassOn={true} />,
container
);
`;
exports[`closure-compiler-type-cast.js 1`] = `
// test to make sure comments are attached correctly
let inlineComment = /* some comment */ (
someReallyLongFunctionCall(withLots, ofArguments));
let object = {
key: /* some comment */ (someReallyLongFunctionCall(withLots, ofArguments))
};
// preserve parens only for type casts
let assignment = /** @type {string} */ (getValue());
functionCall(1 + /** @type {string} */ (value), /** @type {!Foo} */ ({}));
function returnValue() {
return /** @type {!Array.<string>} */ (['hello', 'you']);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// test to make sure comments are attached correctly
let inlineComment = /* some comment */ someReallyLongFunctionCall(
withLots,
ofArguments
);
let object = {
key: /* some comment */ someReallyLongFunctionCall(withLots, ofArguments)
};
// preserve parens only for type casts
let assignment = /** @type {string} */ (getValue());
functionCall(1 + /** @type {string} */ (value), /** @type {!Foo} */ ({}));
function returnValue() {
return /** @type {!Array.<string>} */ (["hello", "you"]);
}
`;
exports[`dangling.js 1`] = `
var x = {/* dangling */};
var x = {
// dangling
};
var x = [/* dangling */];
function x() {
/* dangling */
}
declare class Foo extends Qux<string> {/* dangling */}
export /* dangling */{};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var x = {
/* dangling */
};
var x = {
// dangling
};
var x = [
/* dangling */
];
function x() {
/* dangling */
}
declare class Foo extends Qux<string> {
/* dangling */
}
export /* dangling */{};
`;
exports[`dangling_array.js 1`] = `
expect(() => {}).toTriggerReadyStateChanges([
// Nothing.
]);
[1 /*first comment */, 2 /* second comment */, 3];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
expect(() => {}).toTriggerReadyStateChanges([
// Nothing.
]);
[1 /*first comment */, 2 /* second comment */, 3];
`;
exports[`dangling_for.js 1`] = `
for // comment
(;;);
for /* comment */(;;);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// comment
for (;;);
/* comment */
for (;;);
`;
2017-09-05 04:57:36 +03:00
exports[`dynamic_imports.js 1`] = `
import(/* Hello */ 'something')
import('something' /* Hello */)
import(/* Hello */ 'something' /* Hello */)
import('something' /* Hello */ + 'else')
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import(/* Hello */ "something");
import("something" /* Hello */);
import(/* Hello */ "something" /* Hello */);
import("something" /* Hello */ + "else");
`;
exports[`export.js 1`] = `
export //comment
{}
export /* comment */ {};
export {
foo // comment
}
export {
// comment
bar
}
export {
fooo, // comment
barr, // comment
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export //comment
{};
export /* comment */{};
export {
foo // comment
};
export {
// comment
bar
};
export {
fooo, // comment
barr // comment
};
`;
exports[`first-line.js 1`] = `
a // comment
b
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a; // comment
b;
`;
exports[`flow_union.js 1`] = `
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;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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`] = `
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 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 */ {}
}
`;
exports[`if.js 1`] = `
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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`] = `
// 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
);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 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`] = `
<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>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<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
// 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`] = `
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*/
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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`] = `
function f() {
a
/* eslint-disable */
}
function f() {
a
/* eslint-disable */
}
function name() {
// comment1
func1()
// comment2
func2()
// comment3 why func3 commented
// func3()
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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`] = `
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
a.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
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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 (
a
.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[`switch.js 1`] = `
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
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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`] = `
\`
\${a // comment
}
\${b /* comment */}
\${/* comment */ c /* comment */}
\${// comment
d //comment
};
\`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\`
\${
a // comment
}
\${b /* comment */}
\${/* comment */ c /* comment */}
\${
// comment
d //comment
};
\`;
`;
exports[`trailing_space.js 1`] = `
#!/there/is-space-here->
// Do not trim trailing whitespace from this source file!
// There is some space here ->
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/there/is-space-here->
// Do not trim trailing whitespace from this source file!
// There is some space here ->
`;
exports[`try.js 1`] = `
// comment 1
try {
// comment 2
}
// comment 3
catch(e) {
// comment 4
}
// comment 5
finally // comment 6
{
// comment 7
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// comment 1
try {
// comment 2
} catch (e) {
// comment 3
// comment 4
} finally { // comment 6
// comment 5
// comment 7
}
`;
exports[`variable_declarator.js 1`] = `
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'
]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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"
];
`;