first commit
This commit is contained in:
294
node_modules/acorn-logical-assignment/.eslintrc.json
generated
vendored
Normal file
294
node_modules/acorn-logical-assignment/.eslintrc.json
generated
vendored
Normal file
@@ -0,0 +1,294 @@
|
||||
{
|
||||
"env": {
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": ["eslint:recommended", "plugin:node/recommended"],
|
||||
"plugins": ["node"],
|
||||
"rules": {
|
||||
"accessor-pairs": "error",
|
||||
"array-bracket-newline": "off",
|
||||
"array-bracket-spacing": "off",
|
||||
"array-callback-return": "error",
|
||||
"array-element-newline": "off",
|
||||
"arrow-body-style": "error",
|
||||
"arrow-parens": [
|
||||
"error",
|
||||
"as-needed"
|
||||
],
|
||||
"arrow-spacing": [
|
||||
"error",
|
||||
{
|
||||
"after": true,
|
||||
"before": true
|
||||
}
|
||||
],
|
||||
"block-scoped-var": "error",
|
||||
"block-spacing": "off",
|
||||
"brace-style": [
|
||||
"error",
|
||||
"1tbs",
|
||||
{
|
||||
"allowSingleLine": true
|
||||
}
|
||||
],
|
||||
"callback-return": "error",
|
||||
"camelcase": "error",
|
||||
"capitalized-comments": "off",
|
||||
"class-methods-use-this": "error",
|
||||
"comma-dangle": "off",
|
||||
"comma-spacing": [
|
||||
"error",
|
||||
{
|
||||
"after": true,
|
||||
"before": false
|
||||
}
|
||||
],
|
||||
"comma-style": [
|
||||
"error",
|
||||
"last"
|
||||
],
|
||||
"complexity": "off",
|
||||
"computed-property-spacing": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"consistent-return": "error",
|
||||
"consistent-this": "error",
|
||||
"curly": [ "error", "multi-line" ],
|
||||
"default-case": "error",
|
||||
"dot-location": "error",
|
||||
"dot-notation": [
|
||||
"error",
|
||||
{
|
||||
"allowKeywords": true
|
||||
}
|
||||
],
|
||||
"eol-last": "error",
|
||||
"eqeqeq": "off",
|
||||
"for-direction": "error",
|
||||
"func-call-spacing": "error",
|
||||
"func-name-matching": "error",
|
||||
"func-names": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"func-style": [
|
||||
"error",
|
||||
"declaration",
|
||||
{ "allowArrowFunctions": true }
|
||||
],
|
||||
"function-paren-newline": "off",
|
||||
"generator-star-spacing": "error",
|
||||
"getter-return": "error",
|
||||
"global-require": "warn",
|
||||
"guard-for-in": "error",
|
||||
"handle-callback-err": "error",
|
||||
"id-blacklist": "error",
|
||||
"id-length": "off",
|
||||
"id-match": "error",
|
||||
"implicit-arrow-linebreak": [
|
||||
"error",
|
||||
"beside"
|
||||
],
|
||||
"indent": ["error", 2],
|
||||
"indent-legacy": "off",
|
||||
"init-declarations": "off",
|
||||
"jsx-quotes": "error",
|
||||
"key-spacing": "error",
|
||||
"keyword-spacing": [
|
||||
"error",
|
||||
{
|
||||
"after": true,
|
||||
"before": true
|
||||
}
|
||||
],
|
||||
"line-comment-position": "off",
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"unix"
|
||||
],
|
||||
"lines-around-comment": "error",
|
||||
"lines-around-directive": "error",
|
||||
"lines-between-class-members": "error",
|
||||
"max-depth": "error",
|
||||
"max-len": "off",
|
||||
"max-lines": "off",
|
||||
"max-nested-callbacks": "error",
|
||||
"max-params": "off",
|
||||
"max-statements": "off",
|
||||
"max-statements-per-line": "off",
|
||||
"multiline-comment-style": [
|
||||
"error",
|
||||
"separate-lines"
|
||||
],
|
||||
"new-cap": "error",
|
||||
"new-parens": "error",
|
||||
"newline-after-var": "off",
|
||||
"newline-before-return": "off",
|
||||
"newline-per-chained-call": "off",
|
||||
"no-alert": "error",
|
||||
"no-array-constructor": "error",
|
||||
"no-await-in-loop": "error",
|
||||
"no-bitwise": "error",
|
||||
"no-buffer-constructor": "error",
|
||||
"no-caller": "error",
|
||||
"no-catch-shadow": "error",
|
||||
"no-confusing-arrow": "error",
|
||||
"no-continue": "off",
|
||||
"no-div-regex": "error",
|
||||
"no-duplicate-imports": "error",
|
||||
"no-else-return": "error",
|
||||
"no-empty-function": "error",
|
||||
"no-eq-null": "error",
|
||||
"no-eval": "error",
|
||||
"no-extend-native": "error",
|
||||
"no-extra-bind": "error",
|
||||
"no-extra-label": "error",
|
||||
"no-extra-parens": "off",
|
||||
"no-floating-decimal": "error",
|
||||
"no-implicit-coercion": "error",
|
||||
"no-implicit-globals": "error",
|
||||
"no-implied-eval": "error",
|
||||
"no-inline-comments": "off",
|
||||
"no-invalid-this": "off",
|
||||
"no-iterator": "error",
|
||||
"no-label-var": "error",
|
||||
"no-labels": "error",
|
||||
"no-lone-blocks": "error",
|
||||
"no-lonely-if": "off",
|
||||
"no-loop-func": "error",
|
||||
"no-magic-numbers": "off",
|
||||
"no-mixed-operators": "off",
|
||||
"no-mixed-requires": "error",
|
||||
"no-multi-assign": "error",
|
||||
"no-multi-spaces": "error",
|
||||
"no-multi-str": "error",
|
||||
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0, "maxBOF": 0 }],
|
||||
"no-native-reassign": "error",
|
||||
"no-negated-condition": "off",
|
||||
"no-negated-in-lhs": "error",
|
||||
"no-nested-ternary": "error",
|
||||
"no-new": "error",
|
||||
"no-new-func": "error",
|
||||
"no-new-object": "error",
|
||||
"no-new-require": "error",
|
||||
"no-new-wrappers": "error",
|
||||
"no-octal-escape": "error",
|
||||
"no-param-reassign": "off",
|
||||
"no-path-concat": "error",
|
||||
"no-plusplus": "off",
|
||||
"no-process-env": "error",
|
||||
"no-process-exit": "error",
|
||||
"no-proto": "error",
|
||||
"no-prototype-builtins": "error",
|
||||
"no-restricted-globals": "error",
|
||||
"no-restricted-imports": "error",
|
||||
"no-restricted-modules": "error",
|
||||
"no-restricted-properties": "error",
|
||||
"no-restricted-syntax": "error",
|
||||
"no-return-assign": "error",
|
||||
"no-return-await": "error",
|
||||
"no-script-url": "error",
|
||||
"no-self-compare": "error",
|
||||
"no-sequences": "error",
|
||||
"no-shadow": "error",
|
||||
"no-shadow-restricted-names": "error",
|
||||
"no-spaced-func": "error",
|
||||
"no-sync": [
|
||||
"error",
|
||||
{
|
||||
"allowAtRootLevel": true
|
||||
}
|
||||
],
|
||||
"no-tabs": "error",
|
||||
"no-template-curly-in-string": "error",
|
||||
"no-ternary": "off",
|
||||
"no-throw-literal": "error",
|
||||
"no-trailing-spaces": "error",
|
||||
"no-undef-init": "error",
|
||||
"no-undefined": "error",
|
||||
"no-underscore-dangle": "off",
|
||||
"no-unmodified-loop-condition": "error",
|
||||
"no-unneeded-ternary": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-unused-vars": ["error", {"argsIgnorePattern": "^_"}],
|
||||
"no-use-before-define": "error",
|
||||
"no-useless-call": "error",
|
||||
"no-useless-computed-key": "error",
|
||||
"no-useless-concat": "error",
|
||||
"no-useless-constructor": "error",
|
||||
"no-useless-rename": "error",
|
||||
"no-useless-return": "error",
|
||||
"no-var": "error",
|
||||
"no-void": "error",
|
||||
"no-warning-comments": "warn",
|
||||
"no-whitespace-before-property": "error",
|
||||
"no-with": "error",
|
||||
"nonblock-statement-body-position": [
|
||||
"error",
|
||||
"any"
|
||||
],
|
||||
"object-curly-newline": "off",
|
||||
"object-curly-spacing": "off",
|
||||
"object-property-newline": "off",
|
||||
"object-shorthand": "off",
|
||||
"one-var": "off",
|
||||
"one-var-declaration-per-line": "off",
|
||||
"operator-assignment": "error",
|
||||
"operator-linebreak": "error",
|
||||
"padded-blocks": "off",
|
||||
"padding-line-between-statements": "error",
|
||||
"prefer-arrow-callback": "off",
|
||||
"prefer-const": "off",
|
||||
"prefer-destructuring": "off",
|
||||
"prefer-numeric-literals": "error",
|
||||
"prefer-promise-reject-errors": "error",
|
||||
"prefer-reflect": "off",
|
||||
"prefer-rest-params": "off",
|
||||
"prefer-spread": "error",
|
||||
"prefer-template": "error",
|
||||
"quote-props": ["error", "as-needed"],
|
||||
"quotes": ["error", "double"],
|
||||
"radix": "error",
|
||||
"require-await": "error",
|
||||
"require-jsdoc": "off",
|
||||
"rest-spread-spacing": "error",
|
||||
"semi": ["error", "never"],
|
||||
"semi-spacing": "error",
|
||||
"semi-style": [
|
||||
"error",
|
||||
"last"
|
||||
],
|
||||
"sort-imports": "error",
|
||||
"sort-keys": "off",
|
||||
"sort-vars": "off",
|
||||
"space-before-blocks": "error",
|
||||
"space-before-function-paren": "off",
|
||||
"space-in-parens": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"space-infix-ops": "error",
|
||||
"space-unary-ops": "error",
|
||||
"spaced-comment": "off",
|
||||
"strict": "error",
|
||||
"switch-colon-spacing": "error",
|
||||
"symbol-description": "error",
|
||||
"template-curly-spacing": "error",
|
||||
"template-tag-spacing": "error",
|
||||
"unicode-bom": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"valid-jsdoc": "error",
|
||||
"vars-on-top": "off",
|
||||
"wrap-regex": "error",
|
||||
"yield-star-spacing": "error",
|
||||
"yoda": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"node/no-unpublished-require": "off"
|
||||
}
|
||||
}
|
3
node_modules/acorn-logical-assignment/CHANGELOG.md
generated
vendored
Normal file
3
node_modules/acorn-logical-assignment/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
## 0.1.0 (2020-05-04)
|
||||
|
||||
Initial release
|
19
node_modules/acorn-logical-assignment/LICENSE
generated
vendored
Normal file
19
node_modules/acorn-logical-assignment/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (C) 2020 by Adrian Heine
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
21
node_modules/acorn-logical-assignment/README.md
generated
vendored
Normal file
21
node_modules/acorn-logical-assignment/README.md
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Logical assignment support for Acorn
|
||||
|
||||
[](https://www.npmjs.org/package/acorn-logical-assignment)
|
||||
|
||||
This is a plugin for [Acorn](http://marijnhaverbeke.nl/acorn/) - a tiny, fast JavaScript parser, written completely in JavaScript.
|
||||
|
||||
It implements support for logical assignments as defined in the stage 3 proposal [Logical Assignments](https://github.com/tc39/proposal-logical-assignments). The AST follows [ESTree](https://github.com/estree/estree/blob/master/experimental/logical-assignment-operators.md).
|
||||
|
||||
## Usage
|
||||
|
||||
This module provides a plugin that can be used to extend the Acorn `Parser` class to parse logical assignments:
|
||||
|
||||
```javascript
|
||||
var acorn = require('acorn');
|
||||
var logicalAssignments = require('acorn-logical-assignments');
|
||||
acorn.Parser.extend(logicalAssignments).parse('x ||= y');
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This plugin is released under an [MIT License](./LICENSE).
|
37
node_modules/acorn-logical-assignment/index.js
generated
vendored
Normal file
37
node_modules/acorn-logical-assignment/index.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
"use strict"
|
||||
|
||||
module.exports = function(Parser) {
|
||||
const acorn = Parser.acorn || require("acorn")
|
||||
const tt = acorn.tokTypes
|
||||
return class extends Parser {
|
||||
// eslint-disable-next-line camelcase
|
||||
readToken_pipe_amp(code) { // '|&'
|
||||
let next = this.input.charCodeAt(this.pos + 1)
|
||||
if (next === code) {
|
||||
next = this.input.charCodeAt(this.pos + 2)
|
||||
if (next === 61) return this.finishOp(tt.assign, 3)
|
||||
return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)
|
||||
}
|
||||
if (next === 61) return this.finishOp(tt.assign, 2)
|
||||
return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)
|
||||
}
|
||||
|
||||
getTokenFromCode(code) {
|
||||
return code == 63 ? this.readToken_question() : super.getTokenFromCode(code)
|
||||
}
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
readToken_question() { // '?'
|
||||
if (this.options.ecmaVersion >= 11) {
|
||||
let next = this.input.charCodeAt(this.pos + 1)
|
||||
if (next === 63) {
|
||||
next = this.input.charCodeAt(this.pos + 2)
|
||||
if (next === 61) return this.finishOp(tt.assign, 3)
|
||||
// Check if acorn has nullish coalescing support
|
||||
if (tt.coalesce) return this.finishOp(tt.coalesce, 2)
|
||||
}
|
||||
}
|
||||
return this.finishOp(tt.question, 1)
|
||||
}
|
||||
}
|
||||
}
|
67
node_modules/acorn-logical-assignment/package.json
generated
vendored
Normal file
67
node_modules/acorn-logical-assignment/package.json
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"acorn-logical-assignment@0.1.0",
|
||||
"D:\\Projects\\siag\\vanillajs-seed"
|
||||
]
|
||||
],
|
||||
"_development": true,
|
||||
"_from": "acorn-logical-assignment@0.1.0",
|
||||
"_id": "acorn-logical-assignment@0.1.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-YRLT5fRDsI1cy6OHxancnf06baCNz0UA2zCbhK5/IrsjUI6QtBC+AcyVvX8Os3g2TxRS2CCqeYzuGCx0l/Apug==",
|
||||
"_location": "/acorn-logical-assignment",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "acorn-logical-assignment@0.1.0",
|
||||
"name": "acorn-logical-assignment",
|
||||
"escapedName": "acorn-logical-assignment",
|
||||
"rawSpec": "0.1.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "0.1.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/acorn-stage3"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/acorn-logical-assignment/-/acorn-logical-assignment-0.1.0.tgz",
|
||||
"_spec": "0.1.0",
|
||||
"_where": "D:\\Projects\\siag\\vanillajs-seed",
|
||||
"author": {
|
||||
"name": "Adrian Heine",
|
||||
"email": "mail@adrianheine.de"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/acornjs/acorn-logical-assignment/issues"
|
||||
},
|
||||
"description": "Support fot logical assignments in acorn",
|
||||
"devDependencies": {
|
||||
"acorn": "^7",
|
||||
"eslint": "^6",
|
||||
"eslint-plugin-node": "^11",
|
||||
"mocha": "^7",
|
||||
"test262": "git+https://github.com/tc39/test262.git#57fa74b170e9554bfe89a29c10de2447fe7d3b27",
|
||||
"test262-parser-runner": "^0.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.8.2"
|
||||
},
|
||||
"homepage": "https://github.com/acornjs/acorn-logical-assignment#readme",
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "acorn-logical-assignment",
|
||||
"peerDependencies": {
|
||||
"acorn": "^6 || ^7"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/acornjs/acorn-logical-assignment.git"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint -c .eslintrc.json .",
|
||||
"test": "mocha",
|
||||
"test:test262": "node run_test262.js"
|
||||
},
|
||||
"version": "0.1.0"
|
||||
}
|
28
node_modules/acorn-logical-assignment/run_test262.js
generated
vendored
Normal file
28
node_modules/acorn-logical-assignment/run_test262.js
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
"use strict"
|
||||
|
||||
const path = require("path")
|
||||
const run = require("test262-parser-runner")
|
||||
const acorn = require("acorn")
|
||||
const logicalAssignments = require(".")
|
||||
const Parser = acorn.Parser.extend(logicalAssignments)
|
||||
|
||||
const unsupportedFeatures = [
|
||||
"class-fields-private",
|
||||
"class-fields-public",
|
||||
"class-static-fields-public",
|
||||
"class-static-fields-private",
|
||||
"class-static-methods-private"
|
||||
]
|
||||
|
||||
const implementedFeatures = [
|
||||
"logical-assignment-operators"
|
||||
]
|
||||
|
||||
run(
|
||||
(content, options) => Parser.parse(content, {sourceType: options.sourceType, ecmaVersion: 11}),
|
||||
{
|
||||
testsDirectory: path.dirname(require.resolve("test262/package.json")),
|
||||
skip: test => (!test.attrs.features || !implementedFeatures.some(f => test.attrs.features.includes(f)) || unsupportedFeatures.some(f => test.attrs.features.includes(f))),
|
||||
whitelist: []
|
||||
}
|
||||
)
|
5
node_modules/acorn-logical-assignment/test/.eslintrc.json
generated
vendored
Normal file
5
node_modules/acorn-logical-assignment/test/.eslintrc.json
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"env": {
|
||||
"mocha": true
|
||||
}
|
||||
}
|
116
node_modules/acorn-logical-assignment/test/test.js
generated
vendored
Normal file
116
node_modules/acorn-logical-assignment/test/test.js
generated
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
"use strict"
|
||||
|
||||
const assert = require("assert")
|
||||
const acorn = require("acorn")
|
||||
const logicalAssignments = require("..")
|
||||
const Parser = acorn.Parser.extend(logicalAssignments)
|
||||
|
||||
function test(text, expectedResult, additionalOptions) {
|
||||
it(text, function () {
|
||||
const result = Parser.parse(text, Object.assign({ ecmaVersion: 11 }, additionalOptions))
|
||||
assert.deepStrictEqual(result.body[0], expectedResult)
|
||||
})
|
||||
}
|
||||
function testFail(text, expectedError, additionalOptions) {
|
||||
it(text, function () {
|
||||
let failed = false
|
||||
try {
|
||||
Parser.parse(text, Object.assign({ ecmaVersion: 11 }, additionalOptions))
|
||||
} catch (e) {
|
||||
assert.strictEqual(e.message, expectedError)
|
||||
failed = true
|
||||
}
|
||||
assert(failed)
|
||||
})
|
||||
}
|
||||
|
||||
const newNode = (start, props) => Object.assign(new acorn.Node({options: {}}, start), props)
|
||||
|
||||
describe("acorn-logical-assignments", function () {
|
||||
const lhs = [
|
||||
{d: "x", ast: start => newNode(start, {
|
||||
type: "Identifier",
|
||||
start: 0,
|
||||
end: 1,
|
||||
name: "x"
|
||||
})},
|
||||
{d: "x.y", ast: start => newNode(start, {
|
||||
type: "MemberExpression",
|
||||
start: 0,
|
||||
end: 3,
|
||||
object: newNode(0, {
|
||||
type: "Identifier",
|
||||
start: 0,
|
||||
end: 1,
|
||||
name: "x"
|
||||
}),
|
||||
property: newNode(0, {
|
||||
type: "Identifier",
|
||||
start: 2,
|
||||
end: 3,
|
||||
name: "y"
|
||||
}),
|
||||
computed: false
|
||||
})},
|
||||
{d: "var x", error: "Unexpected token (1:5)"},
|
||||
{d: "{ x }", error: "Unexpected token (1:5)"},
|
||||
{d: "() => {}", error: "Assigning to rvalue (1:0)"},
|
||||
{d: "'use strict'; arguments", error: "Assigning to arguments in strict mode (1:14)"},
|
||||
{d: "/x/", error: "Assigning to rvalue (1:0)"},
|
||||
]
|
||||
const getRight = start => newNode(start, {
|
||||
type: "Identifier",
|
||||
start: start,
|
||||
end: start + 1,
|
||||
name: "x"
|
||||
})
|
||||
const ops = [
|
||||
{s: "&&=", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
start: 0,
|
||||
end: content.end + 4,
|
||||
expression: newNode(0, {
|
||||
type: "AssignmentExpression",
|
||||
start: 0,
|
||||
end: content.end + 4,
|
||||
operator: "&&=",
|
||||
left: content,
|
||||
right: getRight(content.end + 3)
|
||||
})
|
||||
})},
|
||||
{s: "||=", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
start: 0,
|
||||
end: content.end + 4,
|
||||
expression: newNode(0, {
|
||||
type: "AssignmentExpression",
|
||||
start: 0,
|
||||
end: content.end + 4,
|
||||
operator: "||=",
|
||||
left: content,
|
||||
right: getRight(content.end + 3)
|
||||
})
|
||||
})},
|
||||
{s: "??=", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
start: 0,
|
||||
end: content.end + 4,
|
||||
expression: newNode(0, {
|
||||
type: "AssignmentExpression",
|
||||
start: 0,
|
||||
end: content.end + 4,
|
||||
operator: "??=",
|
||||
left: content,
|
||||
right: getRight(content.end + 3)
|
||||
})
|
||||
})},
|
||||
]
|
||||
ops.forEach(op => {
|
||||
lhs.forEach(d => {
|
||||
(d.error ? testFail : test)(
|
||||
`${d.d}${op.s}x`,
|
||||
d.error || op.ast(d.ast(0))
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user