From 12ae8fed7ebc5b7c894c5976575f33cf36a223cc Mon Sep 17 00:00:00 2001 From: tuesmiddt Date: Tue, 25 Feb 2020 00:13:40 +0800 Subject: [PATCH] Parameterize dummy value and export `isDummy` --- acorn-loose/README.md | 4 ++++ acorn-loose/src/index.js | 1 + acorn-loose/src/parseutil.js | 4 +++- acorn-loose/src/state.js | 5 +++-- acorn-loose/src/tokenize.js | 3 ++- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/acorn-loose/README.md b/acorn-loose/README.md index 3d8f5bac5..4641bd4fd 100644 --- a/acorn-loose/README.md +++ b/acorn-loose/README.md @@ -60,3 +60,7 @@ take the **`LooseParser`** class exported by the module, and call its static `extend` method with one or more plugins to get a customized parser class. The class has a static `parse` method that acts like the top-level `parse` method. + +**isDummy**`(node)` takes a `Node` and returns `true` if it is a dummy node +inserted by the parser. The function performs a simple equality check on the +node's name. diff --git a/acorn-loose/src/index.js b/acorn-loose/src/index.js index 903781c5f..cfa0b497b 100644 --- a/acorn-loose/src/index.js +++ b/acorn-loose/src/index.js @@ -36,6 +36,7 @@ import "./statement" import "./expression" export {LooseParser} from "./state" +export {isDummy} from "./parseutil" defaultOptions.tabSize = 4 diff --git a/acorn-loose/src/parseutil.js b/acorn-loose/src/parseutil.js index 4501e2d46..534efd4b0 100644 --- a/acorn-loose/src/parseutil.js +++ b/acorn-loose/src/parseutil.js @@ -1 +1,3 @@ -export function isDummy(node) { return node.name === "✖" } +export const dummyValue = "✖" + +export function isDummy(node) { return node.name === dummyValue } diff --git a/acorn-loose/src/state.js b/acorn-loose/src/state.js index 52887231d..322306fe4 100644 --- a/acorn-loose/src/state.js +++ b/acorn-loose/src/state.js @@ -1,4 +1,5 @@ import {Parser, SourceLocation, tokTypes as tt, Node, lineBreak, isNewLine} from "acorn" +import {dummyValue} from "./parseutil" function noop() {} @@ -63,13 +64,13 @@ export class LooseParser { dummyIdent() { let dummy = this.dummyNode("Identifier") - dummy.name = "✖" + dummy.name = dummyValue return dummy } dummyString() { let dummy = this.dummyNode("Literal") - dummy.value = dummy.raw = "✖" + dummy.value = dummy.raw = dummyValue return dummy } diff --git a/acorn-loose/src/tokenize.js b/acorn-loose/src/tokenize.js index e838b48d8..da20b7daf 100644 --- a/acorn-loose/src/tokenize.js +++ b/acorn-loose/src/tokenize.js @@ -1,5 +1,6 @@ import {tokTypes as tt, Token, isNewLine, SourceLocation, getLineInfo, lineBreakG} from "acorn" import {LooseParser} from "./state" +import {dummyValue} from "./parseutil" const lp = LooseParser.prototype @@ -73,7 +74,7 @@ lp.readToken = function() { throw e } this.resetTo(pos) - if (replace === true) replace = {start: pos, end: pos, type: tt.name, value: "✖"} + if (replace === true) replace = {start: pos, end: pos, type: tt.name, value: dummyValue} if (replace) { if (this.options.locations) replace.loc = new SourceLocation(