Migrate class comments to the beginning (#831)
Instead of trying to figure out a complicated way to preserve their correct position, it's easier to just migrate those comments before the class. Fixes #693 Fixes #694master
parent
2ea1dbcb6a
commit
61482662cc
|
@ -145,7 +145,8 @@ function attach(comments, ast, text, options) {
|
||||||
if (
|
if (
|
||||||
handleMemberExpressionComments(enclosingNode, followingNode, comment) ||
|
handleMemberExpressionComments(enclosingNode, followingNode, comment) ||
|
||||||
handleIfStatementComments(enclosingNode, followingNode, comment) ||
|
handleIfStatementComments(enclosingNode, followingNode, comment) ||
|
||||||
handleTryStatementComments(enclosingNode, followingNode, comment)
|
handleTryStatementComments(enclosingNode, followingNode, comment) ||
|
||||||
|
handleClassComments(enclosingNode, comment)
|
||||||
) {
|
) {
|
||||||
// We're good
|
// We're good
|
||||||
} else if (followingNode) {
|
} else if (followingNode) {
|
||||||
|
@ -168,7 +169,8 @@ function attach(comments, ast, text, options) {
|
||||||
comment,
|
comment,
|
||||||
text
|
text
|
||||||
) ||
|
) ||
|
||||||
handleTemplateLiteralComments(enclosingNode, comment)
|
handleTemplateLiteralComments(enclosingNode, comment) ||
|
||||||
|
handleClassComments(enclosingNode, comment)
|
||||||
) {
|
) {
|
||||||
// We're good
|
// We're good
|
||||||
} else if (precedingNode) {
|
} else if (precedingNode) {
|
||||||
|
@ -454,6 +456,16 @@ function handleFunctionDeclarationComments(enclosingNode, comment) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleClassComments(enclosingNode, comment) {
|
||||||
|
if (enclosingNode &&
|
||||||
|
(enclosingNode.type === "ClassDeclaration" ||
|
||||||
|
enclosingNode.type === "ClassExpression")) {
|
||||||
|
addLeadingComment(enclosingNode, comment);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function printComment(commentPath) {
|
function printComment(commentPath) {
|
||||||
const comment = commentPath.getValue();
|
const comment = commentPath.getValue();
|
||||||
comment.printed = true;
|
comment.printed = true;
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`comments.js 1`] = `
|
||||||
|
"class A // comment 1
|
||||||
|
// comment 2
|
||||||
|
extends B {}
|
||||||
|
|
||||||
|
class A extends B // comment1
|
||||||
|
// comment2
|
||||||
|
// comment3
|
||||||
|
{}
|
||||||
|
|
||||||
|
class A /* a */ extends B {}
|
||||||
|
class A extends B /* a */ {}
|
||||||
|
class A extends /* a */ B {}
|
||||||
|
|
||||||
|
(class A // comment 1
|
||||||
|
// comment 2
|
||||||
|
extends B {});
|
||||||
|
|
||||||
|
(class A extends B // comment1
|
||||||
|
// comment2
|
||||||
|
// comment3
|
||||||
|
{});
|
||||||
|
|
||||||
|
(class A /* a */ extends B {});
|
||||||
|
(class A extends B /* a */ {});
|
||||||
|
(class A extends /* a */ B {});
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// comment 1
|
||||||
|
// comment 2
|
||||||
|
class A extends B {}
|
||||||
|
|
||||||
|
// comment1
|
||||||
|
// comment2
|
||||||
|
// comment3
|
||||||
|
class A extends B {}
|
||||||
|
|
||||||
|
class A /* a */ extends B {}
|
||||||
|
class A extends B /* a */ {
|
||||||
|
}
|
||||||
|
class A extends /* a */ B {}
|
||||||
|
|
||||||
|
// comment 1
|
||||||
|
// comment 2
|
||||||
|
(class A extends B {});
|
||||||
|
|
||||||
|
// comment1
|
||||||
|
// comment2
|
||||||
|
// comment3
|
||||||
|
(class A extends B {});
|
||||||
|
|
||||||
|
(class A /* a */ extends B {});
|
||||||
|
(class A extends B /* a */ {
|
||||||
|
});
|
||||||
|
(class A extends /* a */ B {});
|
||||||
|
"
|
||||||
|
`;
|
|
@ -0,0 +1,25 @@
|
||||||
|
class A // comment 1
|
||||||
|
// comment 2
|
||||||
|
extends B {}
|
||||||
|
|
||||||
|
class A extends B // comment1
|
||||||
|
// comment2
|
||||||
|
// comment3
|
||||||
|
{}
|
||||||
|
|
||||||
|
class A /* a */ extends B {}
|
||||||
|
class A extends B /* a */ {}
|
||||||
|
class A extends /* a */ B {}
|
||||||
|
|
||||||
|
(class A // comment 1
|
||||||
|
// comment 2
|
||||||
|
extends B {});
|
||||||
|
|
||||||
|
(class A extends B // comment1
|
||||||
|
// comment2
|
||||||
|
// comment3
|
||||||
|
{});
|
||||||
|
|
||||||
|
(class A /* a */ extends B {});
|
||||||
|
(class A extends B /* a */ {});
|
||||||
|
(class A extends /* a */ B {});
|
|
@ -0,0 +1 @@
|
||||||
|
run_spec(__dirname);
|
Loading…
Reference in New Issue