parent
e8f12cf621
commit
486a89bfdc
|
@ -130,7 +130,7 @@ FastPath.prototype.map = function map(callback /*, name1, name2, ... */) {
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
FastPath.prototype.needsParens = function() {
|
FastPath.prototype.needsParens = function(options) {
|
||||||
const parent = this.getParentNode();
|
const parent = this.getParentNode();
|
||||||
if (!parent) {
|
if (!parent) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -441,7 +441,11 @@ FastPath.prototype.needsParens = function() {
|
||||||
if (
|
if (
|
||||||
typeof node.value === "string" &&
|
typeof node.value === "string" &&
|
||||||
parent.type === "ExpressionStatement" &&
|
parent.type === "ExpressionStatement" &&
|
||||||
!parent.directive
|
// TypeScript workaround for eslint/typescript-eslint-parser#267
|
||||||
|
// See corresponding workaround in printer.js case: "Literal"
|
||||||
|
((options.parser !== "typescript" && !parent.directive) ||
|
||||||
|
(options.parser === "typescript" &&
|
||||||
|
options.originalText.substr(util.locStart(node) - 1, 1) === "("))
|
||||||
) {
|
) {
|
||||||
// To avoid becoming a directive
|
// To avoid becoming a directive
|
||||||
const grandParent = this.getParentNode(1);
|
const grandParent = this.getParentNode(1);
|
||||||
|
|
|
@ -166,7 +166,7 @@ function genericPrint(path, options, printPath, args) {
|
||||||
} else {
|
} else {
|
||||||
// Nodes with decorators can't have parentheses, so we can avoid
|
// Nodes with decorators can't have parentheses, so we can avoid
|
||||||
// computing path.needsParens() except in this case.
|
// computing path.needsParens() except in this case.
|
||||||
needsParens = path.needsParens();
|
needsParens = path.needsParens(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node.type) {
|
if (node.type) {
|
||||||
|
@ -1137,7 +1137,7 @@ function genericPrintNoParens(path, options, print, args) {
|
||||||
return printNumber(n.extra.raw);
|
return printNumber(n.extra.raw);
|
||||||
case "BooleanLiteral": // Babel 6 Literal split
|
case "BooleanLiteral": // Babel 6 Literal split
|
||||||
case "StringLiteral": // Babel 6 Literal split
|
case "StringLiteral": // Babel 6 Literal split
|
||||||
case "Literal":
|
case "Literal": {
|
||||||
if (n.regex) {
|
if (n.regex) {
|
||||||
return printRegex(n.regex);
|
return printRegex(n.regex);
|
||||||
}
|
}
|
||||||
|
@ -1147,7 +1147,18 @@ function genericPrintNoParens(path, options, print, args) {
|
||||||
if (typeof n.value !== "string") {
|
if (typeof n.value !== "string") {
|
||||||
return "" + n.value;
|
return "" + n.value;
|
||||||
}
|
}
|
||||||
return nodeStr(n, options); // Babel 6
|
// TypeScript workaround for eslint/typescript-eslint-parser#267
|
||||||
|
// See corresponding workaround in fast-path.js needsParens()
|
||||||
|
const grandParent = path.getParentNode(1);
|
||||||
|
const isTypeScriptDirective =
|
||||||
|
options.parser === "typescript" &&
|
||||||
|
typeof n.value === "string" &&
|
||||||
|
grandParent &&
|
||||||
|
(grandParent.type === "Program" ||
|
||||||
|
grandParent.type === "BlockStatement");
|
||||||
|
|
||||||
|
return nodeStr(n, options, isTypeScriptDirective);
|
||||||
|
}
|
||||||
case "Directive":
|
case "Directive":
|
||||||
return path.call(print, "value"); // Babel 6
|
return path.call(print, "value"); // Babel 6
|
||||||
case "DirectiveLiteral":
|
case "DirectiveLiteral":
|
||||||
|
@ -4103,7 +4114,7 @@ function adjustClause(node, clause, forceSpace) {
|
||||||
return indent(concat([line, clause]));
|
return indent(concat([line, clause]));
|
||||||
}
|
}
|
||||||
|
|
||||||
function nodeStr(node, options, isFlowDirectiveLiteral) {
|
function nodeStr(node, options, isFlowOrTypeScriptDirectiveLiteral) {
|
||||||
const raw = node.extra ? node.extra.raw : node.raw;
|
const raw = node.extra ? node.extra.raw : node.raw;
|
||||||
// `rawContent` is the string exactly like it appeared in the input source
|
// `rawContent` is the string exactly like it appeared in the input source
|
||||||
// code, with its enclosing quote.
|
// code, with its enclosing quote.
|
||||||
|
@ -4117,7 +4128,8 @@ function nodeStr(node, options, isFlowDirectiveLiteral) {
|
||||||
|
|
||||||
let shouldUseAlternateQuote = false;
|
let shouldUseAlternateQuote = false;
|
||||||
const isDirectiveLiteral =
|
const isDirectiveLiteral =
|
||||||
isFlowDirectiveLiteral || node.type === "DirectiveLiteral";
|
isFlowOrTypeScriptDirectiveLiteral || node.type === "DirectiveLiteral";
|
||||||
|
|
||||||
let canChangeDirectiveQuotes = false;
|
let canChangeDirectiveQuotes = false;
|
||||||
|
|
||||||
// If `rawContent` contains at least one of the quote preferred for enclosing
|
// If `rawContent` contains at least one of the quote preferred for enclosing
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, null, ["babylon" /*, "typescript"*/]);
|
run_spec(__dirname, null, ["babylon", "typescript"]);
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "babylon" }, ["flow"]);
|
run_spec(__dirname, { parser: "babylon" }, ["flow", "typescript"]);
|
||||||
|
|
Loading…
Reference in New Issue