Fix inconsistent call print between CallExpression and NewExpression (#18206)
This commit is contained in:
1 parent
81859299b9
commit
35718f2993
8 files changed
+205
-2
No files matched your search
@@ -0,0 +1,40 @@
|
||||
#### Fix inconsistent print between `CallExpression` and `NewExpression` (#18206 by @fisker)
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```jsx
|
||||
// Input
|
||||
TelemetryTrustedValue(
|
||||
instance.capabilities.get(
|
||||
TerminalCapability?.PromptTypeDetection
|
||||
)?.promptType
|
||||
)
|
||||
|
||||
new TelemetryTrustedValue(
|
||||
instance.capabilities.get(
|
||||
TerminalCapability?.PromptTypeDetection
|
||||
)?.promptType
|
||||
)
|
||||
|
||||
// Prettier stable
|
||||
TelemetryTrustedValue(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
new TelemetryTrustedValue(
|
||||
instance.capabilities.get(
|
||||
TerminalCapability?.PromptTypeDetection,
|
||||
)?.promptType,
|
||||
);
|
||||
|
||||
// Prettier main
|
||||
TelemetryTrustedValue(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
new TelemetryTrustedValue(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
)
|
||||
```
|
||||
@@ -14,6 +14,25 @@ const isCallExpressionWithArguments = (node) => {
|
||||
return isCallExpression(node) && getCallArguments(node).length > 0;
|
||||
};
|
||||
|
||||
function shouldInlineNewExpressionCallee(path) {
|
||||
let { node: child, ancestors } = path;
|
||||
for (const ancestor of ancestors) {
|
||||
if (
|
||||
!(
|
||||
(isMemberExpression(ancestor) && ancestor.object === child) ||
|
||||
(ancestor.type === "TSNonNullExpression" &&
|
||||
ancestor.expression === child)
|
||||
)
|
||||
) {
|
||||
return ancestor.type === "NewExpression" && ancestor.callee === child;
|
||||
}
|
||||
|
||||
child = ancestor;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function printMemberExpression(path, options, print) {
|
||||
const objectDoc = print("object");
|
||||
const lookupDoc = printMemberLookup(path, options, print);
|
||||
@@ -29,10 +48,10 @@ function printMemberExpression(path, options, print) {
|
||||
|
||||
const shouldInline =
|
||||
(firstNonMemberParent &&
|
||||
(firstNonMemberParent.type === "NewExpression" ||
|
||||
firstNonMemberParent.type === "BindExpression" ||
|
||||
(firstNonMemberParent.type === "BindExpression" ||
|
||||
(firstNonMemberParent.type === "AssignmentExpression" &&
|
||||
firstNonMemberParent.left.type !== "Identifier"))) ||
|
||||
shouldInlineNewExpressionCallee(path) ||
|
||||
node.computed ||
|
||||
(node.object.type === "Identifier" &&
|
||||
node.property.type === "Identifier" &&
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
callExprssion(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
optionalCallExprssion?.(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
new NewExpression(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
@@ -28,6 +28,46 @@ foo(a--).bar().leet();
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`18171.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "flow", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
callExprssion(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
optionalCallExprssion?.(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
new NewExpression(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
=====================================output=====================================
|
||||
callExprssion(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
optionalCallExprssion?.(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
new NewExpression(
|
||||
instance.capabilities.get(TerminalCapability?.PromptTypeDetection)
|
||||
?.promptType,
|
||||
);
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`array-and-object.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "flow", "typescript"]
|
||||
|
||||
@@ -67,6 +67,13 @@ function functionName() {
|
||||
}
|
||||
}
|
||||
|
||||
foo = new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
foo = long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
|
||||
=====================================output=====================================
|
||||
function functionName() {
|
||||
// indent to make the line break
|
||||
@@ -79,5 +86,18 @@ function functionName() {
|
||||
}
|
||||
}
|
||||
|
||||
foo =
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(
|
||||
x,
|
||||
);
|
||||
foo =
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(
|
||||
x,
|
||||
);
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -8,3 +8,10 @@ function functionName() {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
foo = new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
foo = long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
@@ -140,3 +140,53 @@ interface TimerConstructor {
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`with-member-expression.ts format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
foo = new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
foo = new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
|
||||
foo = long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
foo = long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
|
||||
=====================================output=====================================
|
||||
foo =
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(
|
||||
x,
|
||||
);
|
||||
foo =
|
||||
new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member(
|
||||
x,
|
||||
);
|
||||
|
||||
foo =
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(
|
||||
x,
|
||||
);
|
||||
foo =
|
||||
long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member(
|
||||
x,
|
||||
);
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -0,0 +1,13 @@
|
||||
foo = new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
foo = new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
new long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
|
||||
foo = long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
foo = long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member();
|
||||
long_long_member!.long_long_member.long_long_member.long_long_member.long_long_member(x);
|
||||
Reference in new issue
Block a user