first commit
This commit is contained in:
295
node_modules/acorn-bigint/.eslintrc.json
generated
vendored
Normal file
295
node_modules/acorn-bigint/.eslintrc.json
generated
vendored
Normal file
@@ -0,0 +1,295 @@
|
||||
{
|
||||
"env": {
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"globals": { "BigInt": false },
|
||||
"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": "error",
|
||||
"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", {"capIsNewExceptions": ["BigInt"]}],
|
||||
"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": "off",
|
||||
"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": "error",
|
||||
"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": "error",
|
||||
"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"
|
||||
}
|
||||
}
|
21
node_modules/acorn-bigint/CHANGELOG.md
generated
vendored
Normal file
21
node_modules/acorn-bigint/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
## 0.4.0 (2019-04-04)
|
||||
|
||||
* Make compatible with acorn-numeric-separator
|
||||
|
||||
## 0.3.1 (2018-10-06)
|
||||
|
||||
* Fix creation of BigInt values everywhere (Thanks, Gus Caplan!)
|
||||
|
||||
## 0.3.0 (2018-09-14)
|
||||
|
||||
* Update to new acorn 6 interface
|
||||
* Actually support creating BigInt values in AST in Chrome
|
||||
* Change license to MIT
|
||||
|
||||
## 0.2.0 (2017-12-20)
|
||||
|
||||
* Emit BigInt values in AST if supported by runtime engine
|
||||
|
||||
## 0.1.0 (2017-12-19)
|
||||
|
||||
Initial release
|
19
node_modules/acorn-bigint/LICENSE
generated
vendored
Normal file
19
node_modules/acorn-bigint/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (C) 2017-2018 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-bigint/README.md
generated
vendored
Normal file
21
node_modules/acorn-bigint/README.md
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# BigInt support for Acorn
|
||||
|
||||
[](https://www.npmjs.org/package/acorn-bigint)
|
||||
|
||||
This is a plugin for [Acorn](http://marijnhaverbeke.nl/acorn/) - a tiny, fast JavaScript parser, written completely in JavaScript.
|
||||
|
||||
It implements support for arbitrary precision integers as defined in the stage 3 proposal [BigInt: Arbitrary precision integers in JavaScript](https://github.com/tc39/proposal-bigint). The emitted AST follows [an ESTree proposal](https://github.com/estree/estree/blob/132be9b9ec376adbc082dd5f6ba78aefd7a1a864/experimental/bigint.md).
|
||||
|
||||
## Usage
|
||||
|
||||
This module provides a plugin that can be used to extend the Acorn `Parser` class:
|
||||
|
||||
```javascript
|
||||
const {Parser} = require('acorn');
|
||||
const bigInt = require('acorn-bigint');
|
||||
Parser.extend(bigInt).parse('100n');
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This plugin is released under an [MIT License](./LICENSE).
|
59
node_modules/acorn-bigint/index.js
generated
vendored
Normal file
59
node_modules/acorn-bigint/index.js
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
"use strict"
|
||||
|
||||
const acorn = require("acorn")
|
||||
const tt = acorn.tokTypes
|
||||
const isIdentifierStart = acorn.isIdentifierStart
|
||||
|
||||
module.exports = function(Parser) {
|
||||
return class extends Parser {
|
||||
parseLiteral(value) {
|
||||
const node = super.parseLiteral(value)
|
||||
if (node.raw.charCodeAt(node.raw.length - 1) == 110) node.bigint = this.getNumberInput(node.start, node.end)
|
||||
return node
|
||||
}
|
||||
|
||||
readRadixNumber(radix) {
|
||||
let start = this.pos
|
||||
this.pos += 2 // 0x
|
||||
let val = this.readInt(radix)
|
||||
if (val === null) this.raise(this.start + 2, `Expected number in radix ${radix}`)
|
||||
if (this.input.charCodeAt(this.pos) == 110) {
|
||||
let str = this.getNumberInput(start, this.pos)
|
||||
val = typeof BigInt !== "undefined" ? BigInt(str) : null
|
||||
++this.pos
|
||||
} else if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, "Identifier directly after number")
|
||||
return this.finishToken(tt.num, val)
|
||||
}
|
||||
|
||||
readNumber(startsWithDot) {
|
||||
let start = this.pos
|
||||
|
||||
// Not an int
|
||||
if (startsWithDot) return super.readNumber(startsWithDot)
|
||||
|
||||
// Legacy octal
|
||||
if (this.input.charCodeAt(start) === 48 && this.input.charCodeAt(start + 1) !== 110) {
|
||||
return super.readNumber(startsWithDot)
|
||||
}
|
||||
|
||||
if (this.readInt(10) === null) this.raise(start, "Invalid number")
|
||||
|
||||
// Not a BigInt, reset and parse again
|
||||
if (this.input.charCodeAt(this.pos) != 110) {
|
||||
this.pos = start
|
||||
return super.readNumber(startsWithDot)
|
||||
}
|
||||
|
||||
let str = this.getNumberInput(start, this.pos)
|
||||
let val = typeof BigInt !== "undefined" ? BigInt(str) : null
|
||||
++this.pos
|
||||
return this.finishToken(tt.num, val)
|
||||
}
|
||||
|
||||
// This is basically a hook for acorn-numeric-separator
|
||||
getNumberInput(start, end) {
|
||||
if (super.getNumberInput) return super.getNumberInput(start, end)
|
||||
return this.input.slice(start, end)
|
||||
}
|
||||
}
|
||||
}
|
68
node_modules/acorn-bigint/package.json
generated
vendored
Normal file
68
node_modules/acorn-bigint/package.json
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"acorn-bigint@0.4.0",
|
||||
"D:\\Projects\\siag\\vanillajs-seed"
|
||||
]
|
||||
],
|
||||
"_development": true,
|
||||
"_from": "acorn-bigint@0.4.0",
|
||||
"_id": "acorn-bigint@0.4.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-W9iaqWzqFo7ZBLmI9dMjHYGrN0Nm/ZgToqhvd3RELJux7RsX6k1/80h+bD9TtTpeKky/kYNbr3+vHWqI3hdyfA==",
|
||||
"_location": "/acorn-bigint",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "acorn-bigint@0.4.0",
|
||||
"name": "acorn-bigint",
|
||||
"escapedName": "acorn-bigint",
|
||||
"rawSpec": "0.4.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "0.4.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/acorn-stage3"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/acorn-bigint/-/acorn-bigint-0.4.0.tgz",
|
||||
"_spec": "0.4.0",
|
||||
"_where": "D:\\Projects\\siag\\vanillajs-seed",
|
||||
"bugs": {
|
||||
"url": "https://github.com/acornjs/acorn-bigint/issues"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Adrian Heine",
|
||||
"email": "mail@adrianheine.de"
|
||||
}
|
||||
],
|
||||
"description": "Support for BigInt in acorn",
|
||||
"devDependencies": {
|
||||
"acorn": "^6.1.1",
|
||||
"eslint": "^5.16.0",
|
||||
"eslint-plugin-node": "^8.0.1",
|
||||
"mocha": "^6.0.2",
|
||||
"test262": "git+https://github.com/tc39/test262.git#611919174ffe060503691a0c7e3eb2a65b646124",
|
||||
"test262-parser-runner": "^0.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.8.2"
|
||||
},
|
||||
"homepage": "https://github.com/acornjs/acorn-bigint",
|
||||
"license": "MIT",
|
||||
"name": "acorn-bigint",
|
||||
"peerDependencies": {
|
||||
"acorn": "^6.0.0"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/acornjs/acorn-bigint.git"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint -c .eslintrc.json .",
|
||||
"test": "mocha",
|
||||
"test:test262": "node run_test262.js"
|
||||
},
|
||||
"version": "0.4.0"
|
||||
}
|
21
node_modules/acorn-bigint/run_test262.js
generated
vendored
Normal file
21
node_modules/acorn-bigint/run_test262.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
"use strict"
|
||||
|
||||
const path = require("path")
|
||||
const run = require("test262-parser-runner")
|
||||
const acorn = require("acorn")
|
||||
const bigInt = require(".")
|
||||
const Parser = acorn.Parser.extend(bigInt)
|
||||
|
||||
const unsupportedFeatures = [
|
||||
"async-iteration",
|
||||
"class-fields-private",
|
||||
"class-fields-public"
|
||||
]
|
||||
|
||||
run(
|
||||
(content, options) => Parser.parse(content, {sourceType: options.sourceType, ecmaVersion: 9}),
|
||||
{
|
||||
testsDirectory: path.dirname(require.resolve("test262/package.json")),
|
||||
skip: test => (!test.attrs.features || !test.attrs.features.includes("BigInt") || unsupportedFeatures.some(f => test.attrs.features.includes(f))),
|
||||
}
|
||||
)
|
5
node_modules/acorn-bigint/test/.eslintrc.json
generated
vendored
Normal file
5
node_modules/acorn-bigint/test/.eslintrc.json
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"env": {
|
||||
"mocha": true
|
||||
}
|
||||
}
|
193
node_modules/acorn-bigint/test/test.js
generated
vendored
Normal file
193
node_modules/acorn-bigint/test/test.js
generated
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
"use strict"
|
||||
|
||||
const assert = require("assert")
|
||||
const acorn = require("acorn")
|
||||
const Parser = acorn.Parser.extend(require(".."))
|
||||
|
||||
function test(text, expectedResult, additionalOptions) {
|
||||
it(text, function () {
|
||||
const result = Parser.parse(text, Object.assign({ ecmaVersion: 9 }, 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: 9 }, additionalOptions))
|
||||
} catch (e) {
|
||||
assert.strictEqual(e.message, expectedError)
|
||||
failed = true
|
||||
}
|
||||
assert(failed)
|
||||
})
|
||||
}
|
||||
|
||||
const newNode = (start, props) => Object.assign(new acorn.Node({options: {}}, start), props)
|
||||
const newBigIntLiteral = (start, stringValue) => newNode(start, {
|
||||
type: "Literal",
|
||||
end: start + stringValue.length + 1,
|
||||
value: typeof BigInt !== "undefined" ? BigInt(stringValue) : null,
|
||||
raw: `${stringValue}n`,
|
||||
bigint: `${stringValue}n`
|
||||
})
|
||||
|
||||
describe("acorn-bigint", function () {
|
||||
const digits = [
|
||||
{d: "0", ast: start => newBigIntLiteral(start, "0")},
|
||||
{d: "2", ast: start => newBigIntLiteral(start, "2")},
|
||||
{d: "0x2", ast: start => newBigIntLiteral(start, "0x2")},
|
||||
{d: "0o2", ast: start => newBigIntLiteral(start, "0o2")},
|
||||
{d: "0b10", ast: start => newBigIntLiteral(start, "0b10")},
|
||||
{d: "-0xbf2ed51ff75d380fd3be813ec6185780", ast: start => newNode(start, {
|
||||
type: "UnaryExpression",
|
||||
end: start + 36,
|
||||
operator: "-",
|
||||
prefix: true,
|
||||
argument: newBigIntLiteral(start + 1, "0xbf2ed51ff75d380fd3be813ec6185780")
|
||||
})},
|
||||
{d: "02", error: start => `Identifier directly after number (1:${start + 2})`},
|
||||
{d: "2e2", error: start => `Identifier directly after number (1:${start + 3})`},
|
||||
{d: "2.4", error: start => `Identifier directly after number (1:${start + 3})`},
|
||||
{d: ".4", error: start => `Identifier directly after number (1:${start + 2})`},
|
||||
]
|
||||
const statements = [
|
||||
{s: "let i = %s", ast: content => newNode(0, {
|
||||
type: "VariableDeclaration",
|
||||
end: content.end,
|
||||
kind: "let",
|
||||
declarations: [newNode(4, {
|
||||
type: "VariableDeclarator",
|
||||
end: content.end,
|
||||
id: newNode(4, {
|
||||
type: "Identifier",
|
||||
end: 5,
|
||||
name: "i"
|
||||
}),
|
||||
init: content
|
||||
})]
|
||||
})},
|
||||
|
||||
{s: "i = %s", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
end: content.end,
|
||||
expression: newNode(0, {
|
||||
type: "AssignmentExpression",
|
||||
end: content.end,
|
||||
operator: "=",
|
||||
left: newNode(0, {
|
||||
type: "Identifier",
|
||||
end: 1,
|
||||
name: "i"
|
||||
}),
|
||||
right: content
|
||||
})
|
||||
})},
|
||||
|
||||
{s: "((i = %s) => {})", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
end: content.end + 8,
|
||||
expression: newNode(1, {
|
||||
type: "ArrowFunctionExpression",
|
||||
end: content.end + 7,
|
||||
id: null,
|
||||
generator: false,
|
||||
expression: false,
|
||||
async: false,
|
||||
params: [
|
||||
newNode(2, {
|
||||
type: "AssignmentPattern",
|
||||
end: content.end,
|
||||
left: newNode(2, {
|
||||
type: "Identifier",
|
||||
end: 3,
|
||||
name: "i"
|
||||
}),
|
||||
right: content
|
||||
})
|
||||
],
|
||||
body: newNode(content.end + 5, {
|
||||
type: "BlockStatement",
|
||||
end: content.end + 7,
|
||||
body: []
|
||||
})
|
||||
})
|
||||
})},
|
||||
|
||||
{s: "for (let i = 0n; i < %s;++i) {}", ast: content => newNode(0, {
|
||||
type: "ForStatement",
|
||||
end: content.end + 8,
|
||||
init: newNode(5, {
|
||||
type: "VariableDeclaration",
|
||||
end: 15,
|
||||
declarations: [
|
||||
newNode(9, {
|
||||
type: "VariableDeclarator",
|
||||
end: 15,
|
||||
id: newNode(9, {
|
||||
type: "Identifier",
|
||||
end: 10,
|
||||
name: "i"
|
||||
}),
|
||||
init: newBigIntLiteral(13, "0")
|
||||
})
|
||||
],
|
||||
kind: "let"
|
||||
}),
|
||||
test: newNode(17, {
|
||||
type: "BinaryExpression",
|
||||
end: content.end,
|
||||
left: newNode(17, {
|
||||
type: "Identifier",
|
||||
start: 17,
|
||||
end: 18,
|
||||
name: "i"
|
||||
}),
|
||||
operator: "<",
|
||||
right: content
|
||||
}),
|
||||
update: newNode(content.end + 1, {
|
||||
type: "UpdateExpression",
|
||||
end: content.end + 4,
|
||||
operator: "++",
|
||||
prefix: true,
|
||||
argument: newNode(content.end + 3, {
|
||||
type: "Identifier",
|
||||
end: content.end + 4,
|
||||
name: "i"
|
||||
})
|
||||
}),
|
||||
body: newNode(content.end + 6, {
|
||||
type: "BlockStatement",
|
||||
end: content.end + 8,
|
||||
body: []
|
||||
})
|
||||
})},
|
||||
|
||||
{s: "i + %s", ast: content => newNode(0, {
|
||||
type: "ExpressionStatement",
|
||||
end: content.end,
|
||||
expression: newNode(0, {
|
||||
type: "BinaryExpression",
|
||||
end: content.end,
|
||||
left: newNode(0, {
|
||||
type: "Identifier",
|
||||
start: 0,
|
||||
end: 1,
|
||||
name: "i"
|
||||
}),
|
||||
operator: "+",
|
||||
right: content
|
||||
})
|
||||
})}
|
||||
]
|
||||
statements.forEach(statement => {
|
||||
const start = statement.s.indexOf("%s")
|
||||
digits.forEach(d => {
|
||||
(d.error ? testFail : test)(
|
||||
statement.s.replace("%s", `${d.d}n`),
|
||||
d.error ? d.error(start) : statement.ast(d.ast(start))
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user