diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2024-08-30 17:21:18 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2024-08-30 17:21:18 +0800 |
| commit | efbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch) | |
| tree | 2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/@babel/generator/lib/printer.js | |
| parent | 43acceb75957c880a5ba5a31aae221394a36d5f6 (diff) | |
node fixes, updates
Diffstat (limited to 'node_modules/@babel/generator/lib/printer.js')
| -rw-r--r-- | node_modules/@babel/generator/lib/printer.js | 71 |
1 files changed, 41 insertions, 30 deletions
diff --git a/node_modules/@babel/generator/lib/printer.js b/node_modules/@babel/generator/lib/printer.js index 95fb1f00..caf822ad 100644 --- a/node_modules/@babel/generator/lib/printer.js +++ b/node_modules/@babel/generator/lib/printer.js @@ -24,8 +24,9 @@ const { } = n; class Printer { constructor(format, map) { - this.inForStatementInitCounter = 0; - this._printStack = []; + this.inForStatementInit = false; + this.tokenContext = 0; + this._currentNode = null; this._indent = 0; this._indentRepeat = 0; this._insideAux = false; @@ -35,6 +36,7 @@ class Printer { this._printedComments = new Set(); this._endsWithInteger = false; this._endsWithWord = false; + this._endsWithDiv = false; this._lastCommentLine = 0; this._endsWithInnerRaw = false; this._indentInnerComments = true; @@ -43,6 +45,14 @@ class Printer { this._inputMap = map == null ? void 0 : map._inputMap; this._buf = new _buffer.default(map, format.indent.style[0]); } + enterForStatementInit(val) { + const old = this.inForStatementInit; + if (old === val) return () => {}; + this.inForStatementInit = val; + return () => { + this.inForStatementInit = old; + }; + } generate(ast) { this.print(ast); this._maybeAddAuxComment(); @@ -88,8 +98,9 @@ class Printer { } } word(str, noLineTerminatorAfter = false) { + this.tokenContext = 0; this._maybePrintInnerComments(); - if (this._endsWithWord || str.charCodeAt(0) === 47 && this.endsWith(47)) { + if (this._endsWithWord || this._endsWithDiv && str.charCodeAt(0) === 47) { this._space(); } this._maybeAddAuxComment(); @@ -109,6 +120,7 @@ class Printer { this._endsWithInteger = Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46; } token(str, maybeNewline = false) { + this.tokenContext = 0; this._maybePrintInnerComments(); const lastChar = this.getLastChar(); const strFirst = str.charCodeAt(0); @@ -120,6 +132,7 @@ class Printer { this._noLineTerminator = false; } tokenChar(char) { + this.tokenContext = 0; this._maybePrintInnerComments(); const lastChar = this.getLastChar(); if (char === 43 && lastChar === 43 || char === 45 && lastChar === 45 || char === 46 && this._endsWithInteger) { @@ -175,14 +188,6 @@ class Printer { this._catchUp(prop, loc); this._buf.sourceWithOffset(prop, loc, columnOffset); } - withSource(prop, loc, cb) { - if (!loc) { - cb(); - return; - } - this._catchUp(prop, loc); - this._buf.withSource(prop, loc, cb); - } sourceIdentifierName(identifierName, pos) { if (!this._buf._canMarkIdName) return; const sourcePosition = this._buf._sourcePosition; @@ -201,6 +206,7 @@ class Printer { this._buf.append(str, maybeNewline); this._endsWithWord = false; this._endsWithInteger = false; + this._endsWithDiv = false; } _appendChar(char) { this._maybeAddParenChar(char); @@ -208,6 +214,7 @@ class Printer { this._buf.appendChar(char); this._endsWithWord = false; this._endsWithInteger = false; + this._endsWithDiv = false; } _queue(char) { this._maybeAddParenChar(char); @@ -288,16 +295,16 @@ class Printer { _getIndent() { return this._indentRepeat * this._indent; } - printTerminatorless(node, parent, isLabel) { + printTerminatorless(node, isLabel) { if (isLabel) { this._noLineTerminator = true; - this.print(node, parent); + this.print(node); } else { const terminatorState = { printed: false }; this._parenPushNewlineState = terminatorState; - this.print(node, parent); + this.print(node); if (terminatorState.printed) { this.dedent(); this.newline(); @@ -305,7 +312,7 @@ class Printer { } } } - print(node, parent, noLineTerminatorAfter, trailingCommentsLineOffset, forceParens) { + print(node, noLineTerminatorAfter, trailingCommentsLineOffset, forceParens) { var _node$extra, _node$leadingComments; if (!node) return; this._endsWithInnerRaw = false; @@ -319,12 +326,13 @@ class Printer { if (printMethod === undefined) { throw new ReferenceError(`unknown node of type ${JSON.stringify(nodeType)} with constructor ${JSON.stringify(node.constructor.name)}`); } - this._printStack.push(node); + const parent = this._currentNode; + this._currentNode = node; const oldInAux = this._insideAux; this._insideAux = node.loc == null; this._maybeAddAuxComment(this._insideAux && !oldInAux); const parenthesized = (_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized; - let shouldPrintParens = forceParens || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this._printStack); + let shouldPrintParens = forceParens || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this.tokenContext, this.inForStatementInit); if (!shouldPrintParens && parenthesized && (_node$leadingComments = node.leadingComments) != null && _node$leadingComments.length && node.leadingComments[0].type === "CommentBlock") { const parentType = parent == null ? void 0 : parent.type; switch (parentType) { @@ -341,9 +349,11 @@ class Printer { shouldPrintParens = true; } } + let exitInForStatementInit; if (shouldPrintParens) { this.tokenChar(40); this._endsWithInnerRaw = false; + exitInForStatementInit = this.enterForStatementInit(false); } this._lastCommentLine = 0; this._printLeadingComments(node, parent); @@ -353,13 +363,14 @@ class Printer { this._printTrailingComments(node, parent); this.tokenChar(41); this._noLineTerminator = noLineTerminatorAfter; + exitInForStatementInit(); } else if (noLineTerminatorAfter && !this._noLineTerminator) { this._noLineTerminator = true; this._printTrailingComments(node, parent); } else { this._printTrailingComments(node, parent, trailingCommentsLineOffset); } - this._printStack.pop(); + this._currentNode = parent; format.concise = oldConcise; this._insideAux = oldInAux; this._endsWithInnerRaw = false; @@ -396,7 +407,7 @@ class Printer { return extra.raw; } } - printJoin(nodes, parent, opts = {}) { + printJoin(nodes, opts = {}) { if (!(nodes != null && nodes.length)) return; let { indent @@ -419,7 +430,7 @@ class Printer { const node = nodes[i]; if (!node) continue; if (opts.statement) this._printNewline(i === 0, newlineOpts); - this.print(node, parent, undefined, opts.trailingCommentsLineOffset || 0); + this.print(node, undefined, opts.trailingCommentsLineOffset || 0); opts.iterator == null || opts.iterator(node, i); if (i < len - 1) separator == null || separator(); if (opts.statement) { @@ -439,10 +450,10 @@ class Printer { } if (indent) this.dedent(); } - printAndIndentOnComments(node, parent) { + printAndIndentOnComments(node) { const indent = node.leadingComments && node.leadingComments.length > 0; if (indent) this.indent(); - this.print(node, parent); + this.print(node); if (indent) this.dedent(); } printBlock(parent) { @@ -450,7 +461,7 @@ class Printer { if (node.type !== "EmptyStatement") { this.space(); } - this.print(node, parent); + this.print(node); } _printTrailingComments(node, parent, lineOffset) { const { @@ -475,7 +486,7 @@ class Printer { this._indentInnerComments = true; } printInnerComments() { - const node = this._printStack[this._printStack.length - 1]; + const node = this._currentNode; const comments = node.innerComments; if (!(comments != null && comments.length)) return; const hasSpace = this.endsWith(32); @@ -491,17 +502,17 @@ class Printer { noIndentInnerCommentsHere() { this._indentInnerComments = false; } - printSequence(nodes, parent, opts = {}) { + printSequence(nodes, opts = {}) { var _opts$indent; opts.statement = true; (_opts$indent = opts.indent) != null ? _opts$indent : opts.indent = false; - this.printJoin(nodes, parent, opts); + this.printJoin(nodes, opts); } - printList(items, parent, opts = {}) { + printList(items, opts = {}) { if (opts.separator == null) { opts.separator = commaSeparator; } - this.printJoin(items, parent, opts); + this.printJoin(items, opts); } _printNewline(newLine, opts) { const format = this.format; @@ -546,7 +557,7 @@ class Printer { this.newline(1); } const lastCharCode = this.getLastChar(); - if (lastCharCode !== 91 && lastCharCode !== 123) { + if (lastCharCode !== 91 && lastCharCode !== 123 && lastCharCode !== 40) { this.space(); } let val; @@ -582,7 +593,7 @@ class Printer { } else { val = `/*${comment.value}*/`; } - if (this.endsWith(47)) this._space(); + if (this._endsWithDiv) this._space(); this.source("start", comment.loc); this._append(val, isBlockComment); if (!isBlockComment && !noLineTerminator) { |
