Copy disabled (too large)
Download .txt
Showing preview only (57,326K chars total). Download the full file to get everything.
Repository: jquery/esprima
Branch: main
Commit: 512cd66c6ffd
Files: 3395
Total size: 54.0 MB
Directory structure:
gitextract_sgqz2li3/
├── .editorconfig
├── .eslintrc.json
├── .github/
│ ├── ISSUE_TEMPLATE.md
│ └── workflows/
│ ├── codestyle.yml
│ ├── downstream.yml
│ ├── ecma262suite.yml
│ ├── nightly.yml
│ └── tests.yml
├── .gitignore
├── .npmignore
├── CONTRIBUTING.md
├── ChangeLog
├── LICENSE.BSD
├── README.md
├── bin/
│ ├── esparse.js
│ └── esvalidate.js
├── dist/
│ └── .gitignore
├── docs/
│ ├── Makefile
│ ├── README.md
│ ├── _static/
│ │ └── custom.css
│ ├── conf.py
│ ├── getting-started.md
│ ├── index.rst
│ ├── lexical-analysis.md
│ ├── requirements.txt
│ ├── syntactic-analysis.md
│ └── syntax-tree-format.md
├── eslint/
│ ├── index.js
│ └── package.json
├── package.json
├── src/
│ ├── assert.ts
│ ├── character.ts
│ ├── comment-handler.ts
│ ├── error-handler.ts
│ ├── esprima.ts
│ ├── jsx-nodes.ts
│ ├── jsx-parser.ts
│ ├── jsx-syntax.ts
│ ├── messages.ts
│ ├── nodes.ts
│ ├── parser.ts
│ ├── scanner.ts
│ ├── syntax.ts
│ ├── token.ts
│ ├── tokenizer.ts
│ ├── tsconfig.json
│ └── xhtml-entities.ts
├── test/
│ ├── .gitattributes
│ ├── 3rdparty/
│ │ ├── angular-1.2.5.js
│ │ ├── backbone-1.1.0.js
│ │ ├── benchmark.js
│ │ ├── jquery-1.9.1.js
│ │ ├── jquery.mobile-1.4.2.js
│ │ ├── mootools-1.4.5.js
│ │ ├── syntax/
│ │ │ ├── .gitignore
│ │ │ ├── README
│ │ │ ├── angular-1.2.5.json
│ │ │ ├── angular-1.2.5.tokens
│ │ │ ├── backbone-1.1.0.json
│ │ │ ├── backbone-1.1.0.tokens
│ │ │ ├── jquery-1.9.1.json
│ │ │ ├── jquery-1.9.1.tokens
│ │ │ ├── jquery.mobile-1.4.2.json
│ │ │ ├── jquery.mobile-1.4.2.tokens
│ │ │ ├── mootools-1.4.5.json
│ │ │ ├── mootools-1.4.5.tokens
│ │ │ ├── underscore-1.5.2.json
│ │ │ ├── underscore-1.5.2.tokens
│ │ │ ├── yui-3.12.0.json
│ │ │ └── yui-3.12.0.tokens
│ │ ├── underscore-1.5.2.js
│ │ └── yui-3.12.0.js
│ ├── api-tests.js
│ ├── benchmark-parser.js
│ ├── benchmark-tokenizer.js
│ ├── check-version.js
│ ├── downstream.js
│ ├── fixtures/
│ │ ├── ES2016/
│ │ │ ├── exponent/
│ │ │ │ ├── exp_assign.js
│ │ │ │ ├── exp_assign.tree.json
│ │ │ │ ├── exp_bitnot.js
│ │ │ │ ├── exp_bitnot.tree.json
│ │ │ │ ├── exp_delete.js
│ │ │ │ ├── exp_delete.tree.json
│ │ │ │ ├── exp_minus.js
│ │ │ │ ├── exp_minus.tree.json
│ │ │ │ ├── exp_minusminus.js
│ │ │ │ ├── exp_minusminus.tree.json
│ │ │ │ ├── exp_not.js
│ │ │ │ ├── exp_not.tree.json
│ │ │ │ ├── exp_operator.js
│ │ │ │ ├── exp_operator.tree.json
│ │ │ │ ├── exp_plus.js
│ │ │ │ ├── exp_plus.tree.json
│ │ │ │ ├── exp_plusplus.js
│ │ │ │ ├── exp_plusplus.tree.json
│ │ │ │ ├── exp_precedence.js
│ │ │ │ ├── exp_precedence.tree.json
│ │ │ │ ├── exp_typeof.js
│ │ │ │ ├── exp_typeof.tree.json
│ │ │ │ ├── exp_void.js
│ │ │ │ ├── exp_void.tree.json
│ │ │ │ ├── invalid_bitnot_exp.failure.json
│ │ │ │ ├── invalid_bitnot_exp.js
│ │ │ │ ├── invalid_delete_exp.failure.json
│ │ │ │ ├── invalid_delete_exp.js
│ │ │ │ ├── invalid_minus_exp.failure.json
│ │ │ │ ├── invalid_minus_exp.js
│ │ │ │ ├── invalid_not_exp.failure.json
│ │ │ │ ├── invalid_not_exp.js
│ │ │ │ ├── invalid_plus_exp.failure.json
│ │ │ │ ├── invalid_plus_exp.js
│ │ │ │ ├── invalid_typeof_exp.failure.json
│ │ │ │ ├── invalid_typeof_exp.js
│ │ │ │ ├── invalid_void_exp.failure.json
│ │ │ │ ├── invalid_void_exp.js
│ │ │ │ ├── update_exp.js
│ │ │ │ └── update_exp.tree.json
│ │ │ ├── identifier/
│ │ │ │ ├── gujarati_zha.js
│ │ │ │ └── gujarati_zha.tree.json
│ │ │ └── strict-directive/
│ │ │ ├── invalid-strict-arrow-expression-array-destructuring.js
│ │ │ ├── invalid-strict-arrow-expression-array-destructuring.tree.json
│ │ │ ├── invalid-strict-arrow-expression-default-value.js
│ │ │ ├── invalid-strict-arrow-expression-default-value.tree.json
│ │ │ ├── invalid-strict-arrow-expression-object-destructuring.js
│ │ │ ├── invalid-strict-arrow-expression-object-destructuring.tree.json
│ │ │ ├── invalid-strict-arrow-expression-rest.js
│ │ │ ├── invalid-strict-arrow-expression-rest.tree.json
│ │ │ ├── invalid-strict-function-declaration-array-destructuring.js
│ │ │ ├── invalid-strict-function-declaration-array-destructuring.tree.json
│ │ │ ├── invalid-strict-function-declaration-default-value.js
│ │ │ ├── invalid-strict-function-declaration-default-value.tree.json
│ │ │ ├── invalid-strict-function-declaration-object-destructuring.js
│ │ │ ├── invalid-strict-function-declaration-object-destructuring.tree.json
│ │ │ ├── invalid-strict-function-declaration-rest.js
│ │ │ ├── invalid-strict-function-declaration-rest.tree.json
│ │ │ ├── invalid-strict-function-expression-array-destructuring.js
│ │ │ ├── invalid-strict-function-expression-array-destructuring.tree.json
│ │ │ ├── invalid-strict-function-expression-default-value.js
│ │ │ ├── invalid-strict-function-expression-default-value.tree.json
│ │ │ ├── invalid-strict-function-expression-object-destructuring.js
│ │ │ ├── invalid-strict-function-expression-object-destructuring.tree.json
│ │ │ ├── invalid-strict-function-expression-rest.js
│ │ │ ├── invalid-strict-function-expression-rest.tree.json
│ │ │ ├── invalid-strict-generator-array-destructuring.js
│ │ │ ├── invalid-strict-generator-array-destructuring.tree.json
│ │ │ ├── invalid-strict-generator-default-value.js
│ │ │ ├── invalid-strict-generator-default-value.tree.json
│ │ │ ├── invalid-strict-generator-object-destructuring.js
│ │ │ ├── invalid-strict-generator-object-destructuring.tree.json
│ │ │ ├── invalid-strict-generator-rest.js
│ │ │ ├── invalid-strict-generator-rest.tree.json
│ │ │ ├── invalid-strict-method-array-destructuring.js
│ │ │ ├── invalid-strict-method-array-destructuring.tree.json
│ │ │ ├── invalid-strict-method-default-value.js
│ │ │ ├── invalid-strict-method-default-value.tree.json
│ │ │ ├── invalid-strict-method-object-destructuring.js
│ │ │ ├── invalid-strict-method-object-destructuring.tree.json
│ │ │ ├── invalid-strict-method-rest.js
│ │ │ ├── invalid-strict-method-rest.tree.json
│ │ │ ├── invalid-strict-setter-array-destructuring.js
│ │ │ ├── invalid-strict-setter-array-destructuring.tree.json
│ │ │ ├── invalid-strict-setter-default-value.js
│ │ │ ├── invalid-strict-setter-default-value.tree.json
│ │ │ ├── invalid-strict-setter-object-destructuring.js
│ │ │ └── invalid-strict-setter-object-destructuring.tree.json
│ │ ├── ES6/
│ │ │ ├── arrow-function/
│ │ │ │ ├── array-binding-pattern/
│ │ │ │ │ ├── array-binding-pattern-01.js
│ │ │ │ │ ├── array-binding-pattern-01.tree.json
│ │ │ │ │ ├── array-binding-pattern-02.js
│ │ │ │ │ ├── array-binding-pattern-02.tree.json
│ │ │ │ │ ├── array-binding-pattern-03.js
│ │ │ │ │ ├── array-binding-pattern-03.tree.json
│ │ │ │ │ ├── array-binding-pattern-empty.js
│ │ │ │ │ ├── array-binding-pattern-empty.tree.json
│ │ │ │ │ ├── elision.js
│ │ │ │ │ ├── elision.tree.json
│ │ │ │ │ ├── invalid-dup-param.failure.json
│ │ │ │ │ ├── invalid-dup-param.js
│ │ │ │ │ ├── invalid-elision-after-rest.failure.json
│ │ │ │ │ └── invalid-elision-after-rest.js
│ │ │ │ ├── arrow-rest-forgetting-comma.failure.json
│ │ │ │ ├── arrow-rest-forgetting-comma.js
│ │ │ │ ├── arrow-with-multiple-arg-and-rest.js
│ │ │ │ ├── arrow-with-multiple-arg-and-rest.tree.json
│ │ │ │ ├── arrow-with-multiple-rest.failure.json
│ │ │ │ ├── arrow-with-multiple-rest.js
│ │ │ │ ├── arrow-with-only-rest.js
│ │ │ │ ├── arrow-with-only-rest.tree.json
│ │ │ │ ├── concise-body-in.js
│ │ │ │ ├── concise-body-in.tree.json
│ │ │ │ ├── invalid-duplicated-names-rest-parameter.failure.json
│ │ │ │ ├── invalid-duplicated-names-rest-parameter.js
│ │ │ │ ├── invalid-duplicated-params.failure.json
│ │ │ │ ├── invalid-duplicated-params.js
│ │ │ │ ├── invalid-line-terminator-arrow.failure.json
│ │ │ │ ├── invalid-line-terminator-arrow.js
│ │ │ │ ├── invalid-param-strict-mode.failure.json
│ │ │ │ ├── invalid-param-strict-mode.js
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── migrated_0007.js
│ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ ├── migrated_0008.js
│ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ ├── migrated_0009.js
│ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ ├── migrated_0010.js
│ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ ├── migrated_0011.js
│ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ ├── migrated_0012.js
│ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ ├── migrated_0013.js
│ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ ├── migrated_0014.js
│ │ │ │ ├── migrated_0014.tree.json
│ │ │ │ ├── migrated_0015.js
│ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ ├── migrated_0016.js
│ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ ├── migrated_0017.js
│ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ ├── migrated_0018.js
│ │ │ │ ├── migrated_0018.tree.json
│ │ │ │ ├── migrated_0019.js
│ │ │ │ ├── migrated_0019.tree.json
│ │ │ │ ├── migrated_0020.js
│ │ │ │ ├── migrated_0020.tree.json
│ │ │ │ ├── non-arrow-param-followed-by-arrow.failure.json
│ │ │ │ ├── non-arrow-param-followed-by-arrow.js
│ │ │ │ ├── non-arrow-param-followed-by-rest.failure.json
│ │ │ │ ├── non-arrow-param-followed-by-rest.js
│ │ │ │ ├── object-binding-pattern/
│ │ │ │ │ ├── invalid-member-expr.failure.json
│ │ │ │ │ ├── invalid-member-expr.js
│ │ │ │ │ ├── invalid-method-in-pattern.failure.json
│ │ │ │ │ ├── invalid-method-in-pattern.js
│ │ │ │ │ ├── invalid-nested-param.failure.json
│ │ │ │ │ ├── invalid-nested-param.js
│ │ │ │ │ ├── invalid-pattern-without-parenthesis.failure.json
│ │ │ │ │ ├── invalid-pattern-without-parenthesis.js
│ │ │ │ │ ├── nested-cover-grammar.js
│ │ │ │ │ ├── nested-cover-grammar.tree.json
│ │ │ │ │ ├── object-binding-pattern-01.js
│ │ │ │ │ ├── object-binding-pattern-01.tree.json
│ │ │ │ │ ├── object-binding-pattern-empty.js
│ │ │ │ │ └── object-binding-pattern-empty.tree.json
│ │ │ │ ├── param-with-rest-without-arrow.failure.json
│ │ │ │ ├── param-with-rest-without-arrow.js
│ │ │ │ ├── rest-without-arrow.failure.json
│ │ │ │ └── rest-without-arrow.js
│ │ │ ├── binary-integer-literal/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ └── migrated_0005.tree.json
│ │ │ ├── binding-pattern/
│ │ │ │ ├── array-pattern/
│ │ │ │ │ ├── dupe-param.failure.json
│ │ │ │ │ ├── dupe-param.js
│ │ │ │ │ ├── elision.js
│ │ │ │ │ ├── elision.tree.json
│ │ │ │ │ ├── empty-pattern-catch-param.js
│ │ │ │ │ ├── empty-pattern-catch-param.tree.json
│ │ │ │ │ ├── empty-pattern-fn.js
│ │ │ │ │ ├── empty-pattern-fn.tree.json
│ │ │ │ │ ├── empty-pattern-lexical.js
│ │ │ │ │ ├── empty-pattern-lexical.tree.json
│ │ │ │ │ ├── empty-pattern-var.js
│ │ │ │ │ ├── empty-pattern-var.tree.json
│ │ │ │ │ ├── for-let-let.js
│ │ │ │ │ ├── for-let-let.tree.json
│ │ │ │ │ ├── hole.js
│ │ │ │ │ ├── hole.tree.json
│ │ │ │ │ ├── invalid-strict-for-let-let.failure.json
│ │ │ │ │ ├── invalid-strict-for-let-let.js
│ │ │ │ │ ├── nested-pattern.js
│ │ │ │ │ ├── nested-pattern.tree.json
│ │ │ │ │ ├── patterned-catch-dupe.failure.json
│ │ │ │ │ ├── patterned-catch-dupe.js
│ │ │ │ │ ├── patterned-catch.js
│ │ │ │ │ ├── patterned-catch.tree.json
│ │ │ │ │ ├── rest-element-array-pattern.js
│ │ │ │ │ ├── rest-element-array-pattern.tree.json
│ │ │ │ │ ├── rest-element-object-pattern.js
│ │ │ │ │ ├── rest-element-object-pattern.tree.json
│ │ │ │ │ ├── rest.elision.failure.json
│ │ │ │ │ ├── rest.elision.js
│ │ │ │ │ ├── rest.js
│ │ │ │ │ ├── rest.tree.json
│ │ │ │ │ ├── tailing-hold.js
│ │ │ │ │ ├── tailing-hold.tree.json
│ │ │ │ │ ├── var-for-in.js
│ │ │ │ │ ├── var-for-in.tree.json
│ │ │ │ │ ├── var_let_array.js
│ │ │ │ │ ├── var_let_array.tree.json
│ │ │ │ │ ├── with-default-catch-param-fail.failure.json
│ │ │ │ │ ├── with-default-catch-param-fail.js
│ │ │ │ │ ├── with-default-catch-param.js
│ │ │ │ │ ├── with-default-catch-param.tree.json
│ │ │ │ │ ├── with-default-fn.js
│ │ │ │ │ ├── with-default-fn.tree.json
│ │ │ │ │ ├── with-object-pattern.js
│ │ │ │ │ └── with-object-pattern.tree.json
│ │ │ │ └── object-pattern/
│ │ │ │ ├── elision.js
│ │ │ │ ├── elision.tree.json
│ │ │ │ ├── empty-catch-param.js
│ │ │ │ ├── empty-catch-param.tree.json
│ │ │ │ ├── empty-fn.js
│ │ │ │ ├── empty-fn.tree.json
│ │ │ │ ├── empty-for-lex.js
│ │ │ │ ├── empty-for-lex.tree.json
│ │ │ │ ├── empty-lexical.js
│ │ │ │ ├── empty-lexical.tree.json
│ │ │ │ ├── empty-var.js
│ │ │ │ ├── empty-var.tree.json
│ │ │ │ ├── for-let-let.js
│ │ │ │ ├── for-let-let.tree.json
│ │ │ │ ├── invalid-strict-for-let-let.failure.json
│ │ │ │ ├── invalid-strict-for-let-let.js
│ │ │ │ ├── nested.js
│ │ │ │ ├── nested.tree.json
│ │ │ │ ├── properties.js
│ │ │ │ ├── properties.tree.json
│ │ │ │ ├── var-for-in.js
│ │ │ │ └── var-for-in.tree.json
│ │ │ ├── class/
│ │ │ │ ├── invalid-labelled-class-declaration.js
│ │ │ │ ├── invalid-labelled-class-declaration.tree.json
│ │ │ │ ├── invalid-setter-method-rest.js
│ │ │ │ ├── invalid-setter-method-rest.tree.json
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── migrated_0007.js
│ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ ├── migrated_0008.js
│ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ ├── migrated_0009.js
│ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ ├── migrated_0010.js
│ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ ├── migrated_0011.js
│ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ ├── migrated_0012.js
│ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ ├── migrated_0013.js
│ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ ├── migrated_0014.js
│ │ │ │ ├── migrated_0014.tree.json
│ │ │ │ ├── migrated_0015.js
│ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ ├── migrated_0016.js
│ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ ├── migrated_0017.js
│ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ ├── migrated_0018.js
│ │ │ │ ├── migrated_0018.tree.json
│ │ │ │ ├── migrated_0019.js
│ │ │ │ ├── migrated_0019.tree.json
│ │ │ │ ├── migrated_0020.js
│ │ │ │ ├── migrated_0020.tree.json
│ │ │ │ ├── migrated_0021.js
│ │ │ │ ├── migrated_0021.tree.json
│ │ │ │ ├── migrated_0022.js
│ │ │ │ ├── migrated_0022.tree.json
│ │ │ │ ├── migrated_0023.js
│ │ │ │ ├── migrated_0023.tree.json
│ │ │ │ ├── migrated_0024.js
│ │ │ │ ├── migrated_0024.tree.json
│ │ │ │ ├── migrated_0025.js
│ │ │ │ ├── migrated_0025.tree.json
│ │ │ │ ├── migrated_0026.js
│ │ │ │ └── migrated_0026.tree.json
│ │ │ ├── default-parameter-value/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── destructuring-assignment/
│ │ │ │ ├── array-pattern/
│ │ │ │ │ ├── dup-assignment.js
│ │ │ │ │ ├── dup-assignment.tree.json
│ │ │ │ │ ├── elision.js
│ │ │ │ │ ├── elision.tree.json
│ │ │ │ │ ├── member-expr-in-rest.js
│ │ │ │ │ ├── member-expr-in-rest.tree.json
│ │ │ │ │ ├── nested-assignment.js
│ │ │ │ │ ├── nested-assignment.tree.json
│ │ │ │ │ ├── nested-cover-grammar.js
│ │ │ │ │ ├── nested-cover-grammar.tree.json
│ │ │ │ │ ├── simple-assignment.js
│ │ │ │ │ └── simple-assignment.tree.json
│ │ │ │ ├── invalid-cover-grammar.failure.json
│ │ │ │ ├── invalid-cover-grammar.js
│ │ │ │ ├── invalid-group-assignment.failure.json
│ │ │ │ ├── invalid-group-assignment.js
│ │ │ │ └── object-pattern/
│ │ │ │ ├── empty-object-pattern-assignment.js
│ │ │ │ ├── empty-object-pattern-assignment.tree.json
│ │ │ │ ├── invalid-lhs-01.failure.json
│ │ │ │ ├── invalid-lhs-01.js
│ │ │ │ ├── invalid-lhs-02.failure.json
│ │ │ │ ├── invalid-lhs-02.js
│ │ │ │ ├── invalid-pattern-with-method.failure.json
│ │ │ │ ├── invalid-pattern-with-method.js
│ │ │ │ ├── nested-cover-grammar.js
│ │ │ │ ├── nested-cover-grammar.tree.json
│ │ │ │ ├── object-pattern-assignment.js
│ │ │ │ └── object-pattern-assignment.tree.json
│ │ │ ├── export-declaration/
│ │ │ │ ├── export-const-number.js
│ │ │ │ ├── export-const-number.tree.json
│ │ │ │ ├── export-default-array.js
│ │ │ │ ├── export-default-array.tree.json
│ │ │ │ ├── export-default-assignment.module.js
│ │ │ │ ├── export-default-assignment.module.tree.json
│ │ │ │ ├── export-default-class.js
│ │ │ │ ├── export-default-class.tree.json
│ │ │ │ ├── export-default-expression.js
│ │ │ │ ├── export-default-expression.tree.json
│ │ │ │ ├── export-default-function.js
│ │ │ │ ├── export-default-function.tree.json
│ │ │ │ ├── export-default-named-class.js
│ │ │ │ ├── export-default-named-class.tree.json
│ │ │ │ ├── export-default-named-function.js
│ │ │ │ ├── export-default-named-function.tree.json
│ │ │ │ ├── export-default-number.js
│ │ │ │ ├── export-default-number.tree.json
│ │ │ │ ├── export-default-object.js
│ │ │ │ ├── export-default-object.tree.json
│ │ │ │ ├── export-default-value.js
│ │ │ │ ├── export-default-value.tree.json
│ │ │ │ ├── export-from-batch.js
│ │ │ │ ├── export-from-batch.tree.json
│ │ │ │ ├── export-from-default.js
│ │ │ │ ├── export-from-default.tree.json
│ │ │ │ ├── export-from-named-as-default.js
│ │ │ │ ├── export-from-named-as-default.tree.json
│ │ │ │ ├── export-from-named-as-specifier.js
│ │ │ │ ├── export-from-named-as-specifier.tree.json
│ │ │ │ ├── export-from-named-as-specifiers.js
│ │ │ │ ├── export-from-named-as-specifiers.tree.json
│ │ │ │ ├── export-from-specifier.js
│ │ │ │ ├── export-from-specifier.tree.json
│ │ │ │ ├── export-from-specifiers.js
│ │ │ │ ├── export-from-specifiers.tree.json
│ │ │ │ ├── export-function-declaration.js
│ │ │ │ ├── export-function-declaration.tree.json
│ │ │ │ ├── export-function.js
│ │ │ │ ├── export-function.tree.json
│ │ │ │ ├── export-let-number.js
│ │ │ │ ├── export-let-number.tree.json
│ │ │ │ ├── export-named-as-default.js
│ │ │ │ ├── export-named-as-default.tree.json
│ │ │ │ ├── export-named-as-specifier.js
│ │ │ │ ├── export-named-as-specifier.tree.json
│ │ │ │ ├── export-named-as-specifiers.js
│ │ │ │ ├── export-named-as-specifiers.tree.json
│ │ │ │ ├── export-named-empty.js
│ │ │ │ ├── export-named-empty.tree.json
│ │ │ │ ├── export-named-keyword-as-specifier.js
│ │ │ │ ├── export-named-keyword-as-specifier.tree.json
│ │ │ │ ├── export-named-keyword-specifier.js
│ │ │ │ ├── export-named-keyword-specifier.tree.json
│ │ │ │ ├── export-named-specifier.js
│ │ │ │ ├── export-named-specifier.tree.json
│ │ │ │ ├── export-named-specifiers-comma.js
│ │ │ │ ├── export-named-specifiers-comma.tree.json
│ │ │ │ ├── export-named-specifiers.js
│ │ │ │ ├── export-named-specifiers.tree.json
│ │ │ │ ├── export-var-anonymous-function.js
│ │ │ │ ├── export-var-anonymous-function.tree.json
│ │ │ │ ├── export-var-number.js
│ │ │ │ ├── export-var-number.tree.json
│ │ │ │ ├── export-var.js
│ │ │ │ ├── export-var.tree.json
│ │ │ │ ├── invalid-export-batch-missing-from-clause.module.failure.json
│ │ │ │ ├── invalid-export-batch-missing-from-clause.module.js
│ │ │ │ ├── invalid-export-batch-token.module.failure.json
│ │ │ │ ├── invalid-export-batch-token.module.js
│ │ │ │ ├── invalid-export-default-equal.module.failure.json
│ │ │ │ ├── invalid-export-default-equal.module.js
│ │ │ │ ├── invalid-export-default-token.module.failure.json
│ │ │ │ ├── invalid-export-default-token.module.js
│ │ │ │ ├── invalid-export-default.module.failure.json
│ │ │ │ ├── invalid-export-default.module.js
│ │ │ │ ├── invalid-export-named-default.module.failure.json
│ │ │ │ └── invalid-export-named-default.module.js
│ │ │ ├── for-of/
│ │ │ │ ├── for-of-array-pattern-let.js
│ │ │ │ ├── for-of-array-pattern-let.tree.json
│ │ │ │ ├── for-of-array-pattern-var.js
│ │ │ │ ├── for-of-array-pattern-var.tree.json
│ │ │ │ ├── for-of-array-pattern.js
│ │ │ │ ├── for-of-array-pattern.tree.json
│ │ │ │ ├── for-of-let.js
│ │ │ │ ├── for-of-let.tree.json
│ │ │ │ ├── for-of-object-pattern-const.js
│ │ │ │ ├── for-of-object-pattern-const.tree.json
│ │ │ │ ├── for-of-object-pattern-var.js
│ │ │ │ ├── for-of-object-pattern-var.tree.json
│ │ │ │ ├── for-of-object-pattern.js
│ │ │ │ ├── for-of-object-pattern.tree.json
│ │ │ │ ├── for-of-with-const.js
│ │ │ │ ├── for-of-with-const.tree.json
│ │ │ │ ├── for-of-with-let.js
│ │ │ │ ├── for-of-with-let.tree.json
│ │ │ │ ├── for-of-with-var.js
│ │ │ │ ├── for-of-with-var.tree.json
│ │ │ │ ├── for-of.js
│ │ │ │ ├── for-of.tree.json
│ │ │ │ ├── invalid-assign-for-of.failure.json
│ │ │ │ ├── invalid-assign-for-of.js
│ │ │ │ ├── invalid-const-init.failure.json
│ │ │ │ ├── invalid-const-init.js
│ │ │ │ ├── invalid-decl-cls.failure.json
│ │ │ │ ├── invalid-decl-cls.js
│ │ │ │ ├── invalid-for-of-array-pattern.failure.json
│ │ │ │ ├── invalid-for-of-array-pattern.js
│ │ │ │ ├── invalid-for-of-object-pattern.failure.json
│ │ │ │ ├── invalid-for-of-object-pattern.js
│ │ │ │ ├── invalid-let-init.failure.json
│ │ │ │ ├── invalid-let-init.js
│ │ │ │ ├── invalid-lhs-init.failure.json
│ │ │ │ ├── invalid-lhs-init.js
│ │ │ │ ├── invalid-strict-for-of-let.failure.json
│ │ │ │ ├── invalid-strict-for-of-let.js
│ │ │ │ ├── invalid-var-init.failure.json
│ │ │ │ ├── invalid-var-init.js
│ │ │ │ ├── invalid_const_let.failure.json
│ │ │ │ ├── invalid_const_let.js
│ │ │ │ ├── invalid_let_let.failure.json
│ │ │ │ ├── invalid_let_let.js
│ │ │ │ ├── let-of-of.js
│ │ │ │ ├── let-of-of.tree.json
│ │ │ │ ├── unexpected-number.failure.json
│ │ │ │ └── unexpected-number.js
│ │ │ ├── generator/
│ │ │ │ ├── generator-declaration-with-params.js
│ │ │ │ ├── generator-declaration-with-params.tree.json
│ │ │ │ ├── generator-declaration-with-yield-delegate.js
│ │ │ │ ├── generator-declaration-with-yield-delegate.tree.json
│ │ │ │ ├── generator-declaration-with-yield.js
│ │ │ │ ├── generator-declaration-with-yield.tree.json
│ │ │ │ ├── generator-declaration.js
│ │ │ │ ├── generator-declaration.tree.json
│ │ │ │ ├── generator-expression-rest-param.js
│ │ │ │ ├── generator-expression-rest-param.tree.json
│ │ │ │ ├── generator-expression-with-params.js
│ │ │ │ ├── generator-expression-with-params.tree.json
│ │ │ │ ├── generator-expression-with-yield-delegate.js
│ │ │ │ ├── generator-expression-with-yield-delegate.tree.json
│ │ │ │ ├── generator-expression-with-yield.js
│ │ │ │ ├── generator-expression-with-yield.tree.json
│ │ │ │ ├── generator-expression.js
│ │ │ │ ├── generator-expression.tree.json
│ │ │ │ ├── generator-method-with-computed-name.failure.json
│ │ │ │ ├── generator-method-with-computed-name.js
│ │ │ │ ├── generator-method-with-invalid-computed-name.failure.json
│ │ │ │ ├── generator-method-with-invalid-computed-name.js
│ │ │ │ ├── generator-method-with-params.js
│ │ │ │ ├── generator-method-with-params.tree.json
│ │ │ │ ├── generator-method-with-yield-delegate.js
│ │ │ │ ├── generator-method-with-yield-delegate.tree.json
│ │ │ │ ├── generator-method-with-yield-expression.js
│ │ │ │ ├── generator-method-with-yield-expression.tree.json
│ │ │ │ ├── generator-method-with-yield-line-terminator.js
│ │ │ │ ├── generator-method-with-yield-line-terminator.tree.json
│ │ │ │ ├── generator-method-with-yield.js
│ │ │ │ ├── generator-method-with-yield.tree.json
│ │ │ │ ├── generator-method.js
│ │ │ │ ├── generator-method.tree.json
│ │ │ │ ├── generator-parameter-binding-element.failure.json
│ │ │ │ ├── generator-parameter-binding-element.js
│ │ │ │ ├── generator-parameter-binding-property-reserved.failure.json
│ │ │ │ ├── generator-parameter-binding-property-reserved.js
│ │ │ │ ├── generator-parameter-binding-property.failure.json
│ │ │ │ ├── generator-parameter-binding-property.js
│ │ │ │ ├── generator-parameter-computed-property-name.failure.json
│ │ │ │ ├── generator-parameter-computed-property-name.js
│ │ │ │ ├── generator-parameter-invalid-binding-element.failure.json
│ │ │ │ ├── generator-parameter-invalid-binding-element.js
│ │ │ │ ├── generator-parameter-invalid-binding-property.failure.json
│ │ │ │ ├── generator-parameter-invalid-binding-property.js
│ │ │ │ ├── generator-parameter-invalid-computed-property-name.failure.json
│ │ │ │ ├── generator-parameter-invalid-computed-property-name.js
│ │ │ │ ├── incomplete-yield-delegate.failure.json
│ │ │ │ ├── incomplete-yield-delegate.js
│ │ │ │ ├── invalid-labelled-generator.js
│ │ │ │ ├── invalid-labelled-generator.tree.json
│ │ │ │ ├── malformed-generator-method-2.failure.json
│ │ │ │ ├── malformed-generator-method-2.js
│ │ │ │ ├── malformed-generator-method.failure.json
│ │ │ │ ├── malformed-generator-method.js
│ │ │ │ ├── static-generator-method-with-computed-name.js
│ │ │ │ ├── static-generator-method-with-computed-name.tree.json
│ │ │ │ ├── static-generator-method.js
│ │ │ │ └── static-generator-method.tree.json
│ │ │ ├── identifier/
│ │ │ │ ├── dakuten_handakuten.js
│ │ │ │ ├── dakuten_handakuten.tree.json
│ │ │ │ ├── escaped_all.js
│ │ │ │ ├── escaped_all.tree.json
│ │ │ │ ├── escaped_math_alef.js
│ │ │ │ ├── escaped_math_alef.tree.json
│ │ │ │ ├── escaped_math_dal_part.js
│ │ │ │ ├── escaped_math_dal_part.tree.json
│ │ │ │ ├── escaped_math_kaf_lam.js
│ │ │ │ ├── escaped_math_kaf_lam.tree.json
│ │ │ │ ├── escaped_math_zain_start.js
│ │ │ │ ├── escaped_math_zain_start.tree.json
│ │ │ │ ├── escaped_part.js
│ │ │ │ ├── escaped_part.tree.json
│ │ │ │ ├── escaped_start.js
│ │ │ │ ├── escaped_start.tree.json
│ │ │ │ ├── estimated.js
│ │ │ │ ├── estimated.tree.json
│ │ │ │ ├── ethiopic_digits.js
│ │ │ │ ├── ethiopic_digits.tree.json
│ │ │ │ ├── invalid-hex-escape-sequence.failure.json
│ │ │ │ ├── invalid-hex-escape-sequence.js
│ │ │ │ ├── invalid_escaped_surrogate_pairs.failure.json
│ │ │ │ ├── invalid_escaped_surrogate_pairs.js
│ │ │ │ ├── invalid_expression_await.module.failure.json
│ │ │ │ ├── invalid_expression_await.module.js
│ │ │ │ ├── invalid_function_await.module.failure.json
│ │ │ │ ├── invalid_function_await.module.js
│ │ │ │ ├── invalid_id_smp.failure.json
│ │ │ │ ├── invalid_id_smp.js
│ │ │ │ ├── invalid_lone_surrogate.failure.json
│ │ │ │ ├── invalid_lone_surrogate.source.js
│ │ │ │ ├── invalid_var_await.module.failure.json
│ │ │ │ ├── invalid_var_await.module.js
│ │ │ │ ├── math_alef.js
│ │ │ │ ├── math_alef.tree.json
│ │ │ │ ├── math_dal_part.js
│ │ │ │ ├── math_dal_part.tree.json
│ │ │ │ ├── math_kaf_lam.js
│ │ │ │ ├── math_kaf_lam.tree.json
│ │ │ │ ├── math_zain_start.js
│ │ │ │ ├── math_zain_start.tree.json
│ │ │ │ ├── module_await.js
│ │ │ │ ├── module_await.tree.json
│ │ │ │ ├── valid_await.js
│ │ │ │ ├── valid_await.tree.json
│ │ │ │ ├── weierstrass.js
│ │ │ │ ├── weierstrass.tree.json
│ │ │ │ ├── weierstrass_weierstrass.js
│ │ │ │ └── weierstrass_weierstrass.tree.json
│ │ │ ├── import-declaration/
│ │ │ │ ├── import-default-and-named-specifiers.js
│ │ │ │ ├── import-default-and-named-specifiers.tree.json
│ │ │ │ ├── import-default-and-namespace-specifiers.js
│ │ │ │ ├── import-default-and-namespace-specifiers.tree.json
│ │ │ │ ├── import-default-as.js
│ │ │ │ ├── import-default-as.tree.json
│ │ │ │ ├── import-default.js
│ │ │ │ ├── import-default.tree.json
│ │ │ │ ├── import-jquery.js
│ │ │ │ ├── import-jquery.tree.json
│ │ │ │ ├── import-module.js
│ │ │ │ ├── import-module.tree.json
│ │ │ │ ├── import-named-as-specifier.js
│ │ │ │ ├── import-named-as-specifier.tree.json
│ │ │ │ ├── import-named-as-specifiers.js
│ │ │ │ ├── import-named-as-specifiers.tree.json
│ │ │ │ ├── import-named-empty.js
│ │ │ │ ├── import-named-empty.tree.json
│ │ │ │ ├── import-named-specifier.js
│ │ │ │ ├── import-named-specifier.tree.json
│ │ │ │ ├── import-named-specifiers-comma.js
│ │ │ │ ├── import-named-specifiers-comma.tree.json
│ │ │ │ ├── import-named-specifiers.js
│ │ │ │ ├── import-named-specifiers.tree.json
│ │ │ │ ├── import-namespace-specifier.js
│ │ │ │ ├── import-namespace-specifier.tree.json
│ │ │ │ ├── import-null-as-nil.js
│ │ │ │ ├── import-null-as-nil.tree.json
│ │ │ │ ├── invalid-import-boolean.module.failure.json
│ │ │ │ ├── invalid-import-boolean.module.js
│ │ │ │ ├── invalid-import-default-after-named-after-default.module.failure.json
│ │ │ │ ├── invalid-import-default-after-named-after-default.module.js
│ │ │ │ ├── invalid-import-default-after-named.module.failure.json
│ │ │ │ ├── invalid-import-default-after-named.module.js
│ │ │ │ ├── invalid-import-default-missing-module-specifier.module.failure.json
│ │ │ │ ├── invalid-import-default-missing-module-specifier.module.js
│ │ │ │ ├── invalid-import-default-module-specifier.module.failure.json
│ │ │ │ ├── invalid-import-default-module-specifier.module.js
│ │ │ │ ├── invalid-import-default.module.failure.json
│ │ │ │ ├── invalid-import-default.module.js
│ │ │ │ ├── invalid-import-keyword.module.failure.json
│ │ │ │ ├── invalid-import-keyword.module.js
│ │ │ │ ├── invalid-import-missing-comma.module.failure.json
│ │ │ │ ├── invalid-import-missing-comma.module.js
│ │ │ │ ├── invalid-import-missing-module-specifier.module.failure.json
│ │ │ │ ├── invalid-import-missing-module-specifier.module.js
│ │ │ │ ├── invalid-import-module-specifier.module.failure.json
│ │ │ │ ├── invalid-import-module-specifier.module.js
│ │ │ │ ├── invalid-import-named-after-named.module.failure.json
│ │ │ │ ├── invalid-import-named-after-named.module.js
│ │ │ │ ├── invalid-import-named-after-namespace.module.failure.json
│ │ │ │ ├── invalid-import-named-after-namespace.module.js
│ │ │ │ ├── invalid-import-named-as-missing-from.module.failure.json
│ │ │ │ ├── invalid-import-named-as-missing-from.module.js
│ │ │ │ ├── invalid-import-namespace-after-named.module.failure.json
│ │ │ │ ├── invalid-import-namespace-after-named.module.js
│ │ │ │ ├── invalid-import-namespace-missing-as.module.failure.json
│ │ │ │ ├── invalid-import-namespace-missing-as.module.js
│ │ │ │ ├── invalid-import-null.module.failure.json
│ │ │ │ ├── invalid-import-null.module.js
│ │ │ │ ├── invalid-import-specifiers.module.failure.json
│ │ │ │ └── invalid-import-specifiers.module.js
│ │ │ ├── lexical-declaration/
│ │ │ │ ├── for_let_in.js
│ │ │ │ ├── for_let_in.tree.json
│ │ │ │ ├── invalid_complex_binding_without_init.failure.json
│ │ │ │ ├── invalid_complex_binding_without_init.js
│ │ │ │ ├── invalid_const_const.failure.json
│ │ │ │ ├── invalid_const_const.js
│ │ │ │ ├── invalid_const_forin.failure.json
│ │ │ │ ├── invalid_const_forin.js
│ │ │ │ ├── invalid_const_let.failure.json
│ │ │ │ ├── invalid_const_let.js
│ │ │ │ ├── invalid_for_const_declarations.failure.json
│ │ │ │ ├── invalid_for_const_declarations.js
│ │ │ │ ├── invalid_for_const_let.failure.json
│ │ │ │ ├── invalid_for_const_let.js
│ │ │ │ ├── invalid_for_let_declarations.failure.json
│ │ │ │ ├── invalid_for_let_declarations.js
│ │ │ │ ├── invalid_for_let_init.failure.json
│ │ │ │ ├── invalid_for_let_init.js
│ │ │ │ ├── invalid_for_let_let.failure.json
│ │ │ │ ├── invalid_for_let_let.js
│ │ │ │ ├── invalid_for_let_pattern.failure.json
│ │ │ │ ├── invalid_for_let_pattern.js
│ │ │ │ ├── invalid_forin_const_let.failure.json
│ │ │ │ ├── invalid_forin_const_let.js
│ │ │ │ ├── invalid_forin_let_let.failure.json
│ │ │ │ ├── invalid_forin_let_let.js
│ │ │ │ ├── invalid_let_declarations.failure.json
│ │ │ │ ├── invalid_let_declarations.js
│ │ │ │ ├── invalid_let_for_in.failure.json
│ │ │ │ ├── invalid_let_for_in.js
│ │ │ │ ├── invalid_let_forin.failure.json
│ │ │ │ ├── invalid_let_forin.js
│ │ │ │ ├── invalid_let_init.failure.json
│ │ │ │ ├── invalid_let_init.js
│ │ │ │ ├── invalid_let_let.failure.json
│ │ │ │ ├── invalid_let_let.js
│ │ │ │ ├── invalid_strict_const_const.failure.json
│ │ │ │ ├── invalid_strict_const_const.js
│ │ │ │ ├── invalid_strict_const_let.failure.json
│ │ │ │ ├── invalid_strict_const_let.js
│ │ │ │ ├── invalid_trailing_comma_1.failure.json
│ │ │ │ ├── invalid_trailing_comma_1.js
│ │ │ │ ├── invalid_trailing_comma_2.failure.json
│ │ │ │ ├── invalid_trailing_comma_2.js
│ │ │ │ ├── invalid_trailing_comma_3.failure.json
│ │ │ │ ├── invalid_trailing_comma_3.js
│ │ │ │ ├── invalid_trailing_comma_4.failure.json
│ │ │ │ ├── invalid_trailing_comma_4.js
│ │ │ │ ├── invalid_trailing_comma_5.failure.json
│ │ │ │ ├── invalid_trailing_comma_5.js
│ │ │ │ ├── invalid_trailing_comma_6.failure.json
│ │ │ │ ├── invalid_trailing_comma_6.js
│ │ │ │ ├── invalid_trailing_comma_7.failure.json
│ │ │ │ ├── invalid_trailing_comma_7.js
│ │ │ │ ├── let_assign.js
│ │ │ │ ├── let_assign.tree.json
│ │ │ │ ├── let_identifier.js
│ │ │ │ ├── let_identifier.tree.json
│ │ │ │ ├── let_member.js
│ │ │ │ ├── let_member.tree.json
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── module_let.module.js
│ │ │ │ └── module_let.module.tree.json
│ │ │ ├── meta-property/
│ │ │ │ ├── assign-new-target.js
│ │ │ │ ├── assign-new-target.tree.json
│ │ │ │ ├── invalid-dots.failure.json
│ │ │ │ ├── invalid-dots.js
│ │ │ │ ├── invalid-new-target.failure.json
│ │ │ │ ├── invalid-new-target.js
│ │ │ │ ├── new-new-target.js
│ │ │ │ ├── new-new-target.tree.json
│ │ │ │ ├── new-target-declaration.js
│ │ │ │ ├── new-target-declaration.tree.json
│ │ │ │ ├── new-target-expression.js
│ │ │ │ ├── new-target-expression.tree.json
│ │ │ │ ├── new-target-invoke.js
│ │ │ │ ├── new-target-invoke.tree.json
│ │ │ │ ├── new-target-precedence.js
│ │ │ │ ├── new-target-precedence.tree.json
│ │ │ │ ├── unknown-property.failure.json
│ │ │ │ └── unknown-property.js
│ │ │ ├── method-definition/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ └── migrated_0004.tree.json
│ │ │ ├── object-initialiser/
│ │ │ │ ├── invalid-proto-getter-literal-identifier.failure.json
│ │ │ │ ├── invalid-proto-getter-literal-identifier.js
│ │ │ │ ├── invalid-proto-identifier-literal.failure.json
│ │ │ │ ├── invalid-proto-identifier-literal.js
│ │ │ │ ├── invalid-proto-identifiers.failure.json
│ │ │ │ ├── invalid-proto-identifiers.js
│ │ │ │ ├── invalid-proto-literal-identifier.failure.json
│ │ │ │ ├── invalid-proto-literal-identifier.js
│ │ │ │ ├── invalid-proto-literals.failure.json
│ │ │ │ ├── invalid-proto-literals.js
│ │ │ │ ├── invalid-proto-setter-literal-identifier.failure.json
│ │ │ │ ├── invalid-proto-setter-literal-identifier.js
│ │ │ │ ├── proto-identifier-getter-setter.js
│ │ │ │ ├── proto-identifier-getter-setter.tree.json
│ │ │ │ ├── proto-identifier-getter.js
│ │ │ │ ├── proto-identifier-getter.tree.json
│ │ │ │ ├── proto-identifier-method.js
│ │ │ │ ├── proto-identifier-method.tree.json
│ │ │ │ ├── proto-identifier-setter.js
│ │ │ │ ├── proto-identifier-setter.tree.json
│ │ │ │ ├── proto-identifier-shorthand.js
│ │ │ │ ├── proto-identifier-shorthand.tree.json
│ │ │ │ ├── proto-literal-getter-setter.js
│ │ │ │ ├── proto-literal-getter-setter.tree.json
│ │ │ │ ├── proto-literal-getter.js
│ │ │ │ ├── proto-literal-getter.tree.json
│ │ │ │ ├── proto-literal-method.js
│ │ │ │ ├── proto-literal-method.tree.json
│ │ │ │ ├── proto-literal-setter.js
│ │ │ │ ├── proto-literal-setter.tree.json
│ │ │ │ ├── proto-literal-shorthand.js
│ │ │ │ ├── proto-literal-shorthand.tree.json
│ │ │ │ ├── proto-shorthand-assignments.js
│ │ │ │ ├── proto-shorthand-assignments.tree.json
│ │ │ │ ├── proto-shorthand-identifier.js
│ │ │ │ ├── proto-shorthand-identifier.tree.json
│ │ │ │ ├── proto-shorthand-literal.js
│ │ │ │ ├── proto-shorthand-literal.tree.json
│ │ │ │ ├── proto-shorthands.js
│ │ │ │ └── proto-shorthands.tree.json
│ │ │ ├── object-literal-property-value-shorthand/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ └── migrated_0000.tree.json
│ │ │ ├── octal-integer-literal/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ └── migrated_0006.tree.json
│ │ │ ├── program/
│ │ │ │ ├── module/
│ │ │ │ │ ├── invalid-delete.module.failure.json
│ │ │ │ │ ├── invalid-delete.module.js
│ │ │ │ │ ├── invalid-export-if.module.failure.json
│ │ │ │ │ ├── invalid-export-if.module.js
│ │ │ │ │ ├── invalid-export-in-function.module.failure.json
│ │ │ │ │ ├── invalid-export-in-function.module.js
│ │ │ │ │ ├── invalid-import-in-function.module.failure.json
│ │ │ │ │ ├── invalid-import-in-function.module.js
│ │ │ │ │ ├── invalid-with.module.failure.json
│ │ │ │ │ └── invalid-with.module.js
│ │ │ │ └── script/
│ │ │ │ ├── invalid-export-declaration.failure.json
│ │ │ │ ├── invalid-export-declaration.js
│ │ │ │ ├── invalid-import-declaration.failure.json
│ │ │ │ └── invalid-import-declaration.js
│ │ │ ├── rest-parameter/
│ │ │ │ ├── arrow-rest-parameter-array.js
│ │ │ │ ├── arrow-rest-parameter-array.tree.json
│ │ │ │ ├── arrow-rest-parameter-object.js
│ │ │ │ ├── arrow-rest-parameter-object.tree.json
│ │ │ │ ├── function-declaration.js
│ │ │ │ ├── function-declaration.tree.json
│ │ │ │ ├── function-expression.js
│ │ │ │ ├── function-expression.tree.json
│ │ │ │ ├── invalid-setter-rest.js
│ │ │ │ ├── invalid-setter-rest.tree.json
│ │ │ │ ├── object-method.js
│ │ │ │ ├── object-method.tree.json
│ │ │ │ ├── object-shorthand-method.js
│ │ │ │ ├── object-shorthand-method.tree.json
│ │ │ │ ├── rest-parameter-array.js
│ │ │ │ ├── rest-parameter-array.tree.json
│ │ │ │ ├── rest-parameter-object.js
│ │ │ │ └── rest-parameter-object.tree.json
│ │ │ ├── spread-element/
│ │ │ │ ├── call-multi-spread.js
│ │ │ │ ├── call-multi-spread.tree.json
│ │ │ │ ├── call-spread-default.js
│ │ │ │ ├── call-spread-default.tree.json
│ │ │ │ ├── call-spread-first.js
│ │ │ │ ├── call-spread-first.tree.json
│ │ │ │ ├── call-spread-number.js
│ │ │ │ ├── call-spread-number.tree.json
│ │ │ │ ├── call-spread.js
│ │ │ │ ├── call-spread.tree.json
│ │ │ │ ├── invalid-call-dot-dot.failure.json
│ │ │ │ ├── invalid-call-dot-dot.js
│ │ │ │ ├── invalid-call-dots.failure.json
│ │ │ │ ├── invalid-call-dots.js
│ │ │ │ ├── invalid-call-spreads.failure.json
│ │ │ │ ├── invalid-call-spreads.js
│ │ │ │ ├── invalid-new-dot-dot.failure.json
│ │ │ │ ├── invalid-new-dot-dot.js
│ │ │ │ ├── invalid-new-dots.failure.json
│ │ │ │ ├── invalid-new-dots.js
│ │ │ │ ├── invalid-new-spreads.failure.json
│ │ │ │ ├── invalid-new-spreads.js
│ │ │ │ ├── new-multi-spread.js
│ │ │ │ ├── new-multi-spread.tree.json
│ │ │ │ ├── new-spread-default.js
│ │ │ │ ├── new-spread-default.tree.json
│ │ │ │ ├── new-spread-first.js
│ │ │ │ ├── new-spread-first.tree.json
│ │ │ │ ├── new-spread-number.js
│ │ │ │ ├── new-spread-number.tree.json
│ │ │ │ ├── new-spread.js
│ │ │ │ └── new-spread.tree.json
│ │ │ ├── super-property/
│ │ │ │ ├── arrow_super.js
│ │ │ │ ├── arrow_super.tree.json
│ │ │ │ ├── constructor_super.js
│ │ │ │ ├── constructor_super.tree.json
│ │ │ │ ├── invalid_super_access.failure.json
│ │ │ │ ├── invalid_super_access.js
│ │ │ │ ├── invalid_super_id.failure.json
│ │ │ │ ├── invalid_super_id.js
│ │ │ │ ├── invalid_super_not_inside_function.failure.json
│ │ │ │ ├── invalid_super_not_inside_function.js
│ │ │ │ ├── new_super.js
│ │ │ │ ├── new_super.tree.json
│ │ │ │ ├── super_computed.js
│ │ │ │ ├── super_computed.tree.json
│ │ │ │ ├── super_member.js
│ │ │ │ └── super_member.tree.json
│ │ │ ├── template-literals/
│ │ │ │ ├── after-switch.failure.json
│ │ │ │ ├── after-switch.js
│ │ │ │ ├── dollar-sign.js
│ │ │ │ ├── dollar-sign.tree.json
│ │ │ │ ├── escape-sequences.source.js
│ │ │ │ ├── escape-sequences.tree.json
│ │ │ │ ├── invalid-escape.failure.json
│ │ │ │ ├── invalid-escape.js
│ │ │ │ ├── invalid-hex-escape-sequence.failure.json
│ │ │ │ ├── invalid-hex-escape-sequence.js
│ │ │ │ ├── line-terminators.source.js
│ │ │ │ ├── line-terminators.tree.json
│ │ │ │ ├── literal-escape-sequences.source.js
│ │ │ │ ├── literal-escape-sequences.tree.json
│ │ │ │ ├── nested-function-with-object-pattern.js
│ │ │ │ ├── nested-function-with-object-pattern.tree.json
│ │ │ │ ├── new-expression.js
│ │ │ │ ├── new-expression.tree.json
│ │ │ │ ├── octal-literal.failure.json
│ │ │ │ ├── octal-literal.js
│ │ │ │ ├── strict-octal-literal.failure.json
│ │ │ │ ├── strict-octal-literal.js
│ │ │ │ ├── tagged-interpolation.js
│ │ │ │ ├── tagged-interpolation.tree.json
│ │ │ │ ├── tagged-nested-with-object-literal.js
│ │ │ │ ├── tagged-nested-with-object-literal.tree.json
│ │ │ │ ├── tagged.js
│ │ │ │ ├── tagged.tree.json
│ │ │ │ ├── unclosed-interpolation.failure.json
│ │ │ │ ├── unclosed-interpolation.js
│ │ │ │ ├── unclosed-nested.failure.json
│ │ │ │ ├── unclosed-nested.js
│ │ │ │ ├── unclosed.failure.json
│ │ │ │ ├── unclosed.js
│ │ │ │ ├── untagged.js
│ │ │ │ └── untagged.tree.json
│ │ │ ├── unicode-code-point-escape-sequence/
│ │ │ │ ├── migrated_0000.source.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.source.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.source.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ └── yield/
│ │ │ ├── invalid-yield-binding-property.failure.json
│ │ │ ├── invalid-yield-binding-property.js
│ │ │ ├── invalid-yield-expression.failure.json
│ │ │ ├── invalid-yield-expression.js
│ │ │ ├── invalid-yield-generator-arrow-default.failure.json
│ │ │ ├── invalid-yield-generator-arrow-default.js
│ │ │ ├── invalid-yield-generator-arrow-parameter.failure.json
│ │ │ ├── invalid-yield-generator-arrow-parameter.js
│ │ │ ├── invalid-yield-generator-arrow-parameters.failure.json
│ │ │ ├── invalid-yield-generator-arrow-parameters.js
│ │ │ ├── invalid-yield-generator-catch.failure.json
│ │ │ ├── invalid-yield-generator-catch.js
│ │ │ ├── invalid-yield-generator-declaration.failure.json
│ │ │ ├── invalid-yield-generator-declaration.js
│ │ │ ├── invalid-yield-generator-export-default.module.failure.json
│ │ │ ├── invalid-yield-generator-export-default.module.js
│ │ │ ├── invalid-yield-generator-expression-name.failure.json
│ │ │ ├── invalid-yield-generator-expression-name.js
│ │ │ ├── invalid-yield-generator-expression-parameter.failure.json
│ │ │ ├── invalid-yield-generator-expression-parameter.js
│ │ │ ├── invalid-yield-generator-expression-rest.failure.json
│ │ │ ├── invalid-yield-generator-expression-rest.js
│ │ │ ├── invalid-yield-generator-function-declaration.failure.json
│ │ │ ├── invalid-yield-generator-function-declaration.js
│ │ │ ├── invalid-yield-generator-lexical-declaration.failure.json
│ │ │ ├── invalid-yield-generator-lexical-declaration.js
│ │ │ ├── invalid-yield-generator-member-expression.failure.json
│ │ │ ├── invalid-yield-generator-member-expression.js
│ │ │ ├── invalid-yield-generator-parameter.failure.json
│ │ │ ├── invalid-yield-generator-parameter.js
│ │ │ ├── invalid-yield-generator-rest.failure.json
│ │ │ ├── invalid-yield-generator-rest.js
│ │ │ ├── invalid-yield-generator-strict-function-expression.failure.json
│ │ │ ├── invalid-yield-generator-strict-function-expression.js
│ │ │ ├── invalid-yield-generator-strict-function-parameter.failure.json
│ │ │ ├── invalid-yield-generator-strict-function-parameter.js
│ │ │ ├── invalid-yield-generator-variable-declaration.failure.json
│ │ │ ├── invalid-yield-generator-variable-declaration.js
│ │ │ ├── invalid-yield-object-methods.js
│ │ │ ├── invalid-yield-object-methods.tree.json
│ │ │ ├── invalid-yield-object-property-getter.js
│ │ │ ├── invalid-yield-object-property-getter.tree.json
│ │ │ ├── invalid-yield-object-property-setter.js
│ │ │ ├── invalid-yield-object-property-setter.tree.json
│ │ │ ├── invalid-yield-strict-array-pattern.failure.json
│ │ │ ├── invalid-yield-strict-array-pattern.js
│ │ │ ├── invalid-yield-strict-arrow-parameter-default.failure.json
│ │ │ ├── invalid-yield-strict-arrow-parameter-default.js
│ │ │ ├── invalid-yield-strict-arrow-parameter-name.failure.json
│ │ │ ├── invalid-yield-strict-arrow-parameter-name.js
│ │ │ ├── invalid-yield-strict-binding-element.failure.json
│ │ │ ├── invalid-yield-strict-binding-element.js
│ │ │ ├── invalid-yield-strict-catch-parameter.failure.json
│ │ │ ├── invalid-yield-strict-catch-parameter.js
│ │ │ ├── invalid-yield-strict-formal-parameter.failure.json
│ │ │ ├── invalid-yield-strict-formal-parameter.js
│ │ │ ├── invalid-yield-strict-function-declaration.failure.json
│ │ │ ├── invalid-yield-strict-function-declaration.js
│ │ │ ├── invalid-yield-strict-function-expression.failure.json
│ │ │ ├── invalid-yield-strict-function-expression.js
│ │ │ ├── invalid-yield-strict-identifier.failure.json
│ │ │ ├── invalid-yield-strict-identifier.js
│ │ │ ├── invalid-yield-strict-lexical-declaration.failure.json
│ │ │ ├── invalid-yield-strict-lexical-declaration.js
│ │ │ ├── invalid-yield-strict-rest-parameter.failure.json
│ │ │ ├── invalid-yield-strict-rest-parameter.js
│ │ │ ├── invalid-yield-strict-variable-declaration.failure.json
│ │ │ ├── invalid-yield-strict-variable-declaration.js
│ │ │ ├── ternary-yield.js
│ │ │ ├── ternary-yield.tree.json
│ │ │ ├── yield-arg-array.js
│ │ │ ├── yield-arg-array.tree.json
│ │ │ ├── yield-arg-bitnot.js
│ │ │ ├── yield-arg-bitnot.tree.json
│ │ │ ├── yield-arg-class.js
│ │ │ ├── yield-arg-class.tree.json
│ │ │ ├── yield-arg-delete.js
│ │ │ ├── yield-arg-delete.tree.json
│ │ │ ├── yield-arg-function.js
│ │ │ ├── yield-arg-function.tree.json
│ │ │ ├── yield-arg-group.js
│ │ │ ├── yield-arg-group.tree.json
│ │ │ ├── yield-arg-let.js
│ │ │ ├── yield-arg-let.tree.json
│ │ │ ├── yield-arg-minus.js
│ │ │ ├── yield-arg-minus.tree.json
│ │ │ ├── yield-arg-minusminus.js
│ │ │ ├── yield-arg-minusminus.tree.json
│ │ │ ├── yield-arg-new.js
│ │ │ ├── yield-arg-new.tree.json
│ │ │ ├── yield-arg-not.js
│ │ │ ├── yield-arg-not.tree.json
│ │ │ ├── yield-arg-object.js
│ │ │ ├── yield-arg-object.tree.json
│ │ │ ├── yield-arg-plus.js
│ │ │ ├── yield-arg-plus.tree.json
│ │ │ ├── yield-arg-plusplus.js
│ │ │ ├── yield-arg-plusplus.tree.json
│ │ │ ├── yield-arg-regexp1.js
│ │ │ ├── yield-arg-regexp1.tree.json
│ │ │ ├── yield-arg-regexp2.js
│ │ │ ├── yield-arg-regexp2.tree.json
│ │ │ ├── yield-arg-super.js
│ │ │ ├── yield-arg-super.tree.json
│ │ │ ├── yield-arg-this.js
│ │ │ ├── yield-arg-this.tree.json
│ │ │ ├── yield-arg-typeof.js
│ │ │ ├── yield-arg-typeof.tree.json
│ │ │ ├── yield-arg-void.js
│ │ │ ├── yield-arg-void.tree.json
│ │ │ ├── yield-array-pattern.js
│ │ │ ├── yield-array-pattern.tree.json
│ │ │ ├── yield-arrow-concise-body.js
│ │ │ ├── yield-arrow-concise-body.tree.json
│ │ │ ├── yield-arrow-function-body.js
│ │ │ ├── yield-arrow-function-body.tree.json
│ │ │ ├── yield-arrow-parameter-default.js
│ │ │ ├── yield-arrow-parameter-default.tree.json
│ │ │ ├── yield-arrow-parameter-name.js
│ │ │ ├── yield-arrow-parameter-name.tree.json
│ │ │ ├── yield-binding-element.js
│ │ │ ├── yield-binding-element.tree.json
│ │ │ ├── yield-binding-property.js
│ │ │ ├── yield-binding-property.tree.json
│ │ │ ├── yield-call-expression-property.js
│ │ │ ├── yield-call-expression-property.tree.json
│ │ │ ├── yield-catch-parameter.js
│ │ │ ├── yield-catch-parameter.tree.json
│ │ │ ├── yield-expression-precedence.js
│ │ │ ├── yield-expression-precedence.tree.json
│ │ │ ├── yield-function-declaration-formal-parameter.js
│ │ │ ├── yield-function-declaration-formal-parameter.tree.json
│ │ │ ├── yield-function-declaration.js
│ │ │ ├── yield-function-declaration.tree.json
│ │ │ ├── yield-function-expression-parameter.js
│ │ │ ├── yield-function-expression-parameter.tree.json
│ │ │ ├── yield-function-expression.js
│ │ │ ├── yield-function-expression.tree.json
│ │ │ ├── yield-generator-arrow-concise-body.js
│ │ │ ├── yield-generator-arrow-concise-body.tree.json
│ │ │ ├── yield-generator-arrow-default.js
│ │ │ ├── yield-generator-arrow-default.tree.json
│ │ │ ├── yield-generator-arrow-function-body.js
│ │ │ ├── yield-generator-arrow-function-body.tree.json
│ │ │ ├── yield-generator-declaration.js
│ │ │ ├── yield-generator-declaration.tree.json
│ │ │ ├── yield-generator-default-parameter.js
│ │ │ ├── yield-generator-default-parameter.tree.json
│ │ │ ├── yield-generator-function-expression.js
│ │ │ ├── yield-generator-function-expression.tree.json
│ │ │ ├── yield-generator-function-parameter.js
│ │ │ ├── yield-generator-function-parameter.tree.json
│ │ │ ├── yield-generator-method.js
│ │ │ ├── yield-generator-method.tree.json
│ │ │ ├── yield-generator-parameter-object-pattern.js
│ │ │ ├── yield-generator-parameter-object-pattern.tree.json
│ │ │ ├── yield-lexical-declaration.js
│ │ │ ├── yield-lexical-declaration.tree.json
│ │ │ ├── yield-member-expression-property.js
│ │ │ ├── yield-member-expression-property.tree.json
│ │ │ ├── yield-method.js
│ │ │ ├── yield-method.tree.json
│ │ │ ├── yield-parameter-object-pattern.js
│ │ │ ├── yield-parameter-object-pattern.tree.json
│ │ │ ├── yield-rest-parameter.js
│ │ │ ├── yield-rest-parameter.tree.json
│ │ │ ├── yield-strict-binding-property.js
│ │ │ ├── yield-strict-binding-property.tree.json
│ │ │ ├── yield-strict-method.js
│ │ │ ├── yield-strict-method.tree.json
│ │ │ ├── yield-super-property.js
│ │ │ ├── yield-super-property.tree.json
│ │ │ ├── yield-variable-declaration.js
│ │ │ ├── yield-variable-declaration.tree.json
│ │ │ ├── yield-yield-expression-delegate.js
│ │ │ ├── yield-yield-expression-delegate.tree.json
│ │ │ ├── yield-yield-expression.js
│ │ │ └── yield-yield-expression.tree.json
│ │ ├── JSX/
│ │ │ ├── attribute-double-quoted-string.js
│ │ │ ├── attribute-double-quoted-string.tree.json
│ │ │ ├── attribute-element.js
│ │ │ ├── attribute-element.tree.json
│ │ │ ├── attribute-empty-entity1.js
│ │ │ ├── attribute-empty-entity1.tree.json
│ │ │ ├── attribute-empty-entity2.js
│ │ │ ├── attribute-empty-entity2.tree.json
│ │ │ ├── attribute-entity-decimal.js
│ │ │ ├── attribute-entity-decimal.tree.json
│ │ │ ├── attribute-entity-hex.js
│ │ │ ├── attribute-entity-hex.tree.json
│ │ │ ├── attribute-entity.js
│ │ │ ├── attribute-entity.tree.json
│ │ │ ├── attribute-expression.js
│ │ │ ├── attribute-expression.tree.json
│ │ │ ├── attribute-illegal-short-entity.js
│ │ │ ├── attribute-illegal-short-entity.tree.json
│ │ │ ├── attribute-invalid-entity.js
│ │ │ ├── attribute-invalid-entity.tree.json
│ │ │ ├── attribute-multi-entities.js
│ │ │ ├── attribute-multi-entities.tree.json
│ │ │ ├── attribute-non-hex-entity.js
│ │ │ ├── attribute-non-hex-entity.tree.json
│ │ │ ├── attribute-non-numeric-entity.js
│ │ │ ├── attribute-non-numeric-entity.tree.json
│ │ │ ├── attribute-null-value.js
│ │ │ ├── attribute-null-value.tree.json
│ │ │ ├── attribute-primary.js
│ │ │ ├── attribute-primary.tree.json
│ │ │ ├── attribute-single-quoted-string.js
│ │ │ ├── attribute-single-quoted-string.tree.json
│ │ │ ├── attribute-spread.js
│ │ │ ├── attribute-spread.tree.json
│ │ │ ├── attribute-unknown-entity.js
│ │ │ ├── attribute-unknown-entity.tree.json
│ │ │ ├── attribute-unterminated-entity.js
│ │ │ ├── attribute-unterminated-entity.tree.json
│ │ │ ├── attribute-x-entity.js
│ │ │ ├── attribute-x-entity.tree.json
│ │ │ ├── container-numeric-literal.js
│ │ │ ├── container-numeric-literal.tree.json
│ │ │ ├── container-object-expression.js
│ │ │ ├── container-object-expression.tree.json
│ │ │ ├── container-series.js
│ │ │ ├── container-series.tree.json
│ │ │ ├── empty-child-comment.js
│ │ │ ├── empty-child-comment.tree.json
│ │ │ ├── empty-expression-container.js
│ │ │ ├── empty-expression-container.tree.json
│ │ │ ├── fragment-with-child.js
│ │ │ ├── fragment-with-child.tree.json
│ │ │ ├── fragment-with-children.js
│ │ │ ├── fragment-with-children.tree.json
│ │ │ ├── fragment.js
│ │ │ ├── fragment.tree.json
│ │ │ ├── inside-group-expression.js
│ │ │ ├── inside-group-expression.tree.json
│ │ │ ├── invalid-attribute-value-trail.failure.json
│ │ │ ├── invalid-attribute-value-trail.js
│ │ │ ├── invalid-closing-trail.failure.json
│ │ │ ├── invalid-closing-trail.js
│ │ │ ├── invalid-element.failure.json
│ │ │ ├── invalid-element.js
│ │ │ ├── invalid-empty-attribute-expression.failure.json
│ │ │ ├── invalid-empty-attribute-expression.js
│ │ │ ├── invalid-empty-selfclosing.failure.json
│ │ │ ├── invalid-empty-selfclosing.js
│ │ │ ├── invalid-fragment-tag.failure.json
│ │ │ ├── invalid-fragment-tag.js
│ │ │ ├── invalid-fragment.failure.json
│ │ │ ├── invalid-fragment.js
│ │ │ ├── invalid-incomplete-namespace.failure.json
│ │ │ ├── invalid-incomplete-namespace.js
│ │ │ ├── invalid-match-member.failure.json
│ │ │ ├── invalid-match-member.js
│ │ │ ├── invalid-match-name-namespace.failure.json
│ │ │ ├── invalid-match-name-namespace.js
│ │ │ ├── invalid-match-namespace-name.failure.json
│ │ │ ├── invalid-match-namespace-name.js
│ │ │ ├── invalid-match-namespace.failure.json
│ │ │ ├── invalid-match-namespace.js
│ │ │ ├── invalid-match.failure.json
│ │ │ ├── invalid-match.js
│ │ │ ├── invalid-member-incomplete.failure.json
│ │ │ ├── invalid-member-incomplete.js
│ │ │ ├── invalid-no-closing.failure.json
│ │ │ ├── invalid-no-closing.js
│ │ │ ├── invalid-self-closing.failure.json
│ │ │ ├── invalid-self-closing.js
│ │ │ ├── invalid-start-member.failure.json
│ │ │ ├── invalid-start-member.js
│ │ │ ├── invalid-start-namespace.failure.json
│ │ │ ├── invalid-start-namespace.js
│ │ │ ├── long-member-pair.js
│ │ │ ├── long-member-pair.tree.json
│ │ │ ├── long-member.js
│ │ │ ├── long-member.tree.json
│ │ │ ├── multi-attributes.js
│ │ │ ├── multi-attributes.tree.json
│ │ │ ├── multiline-crlf-text.js
│ │ │ ├── multiline-crlf-text.tree.json
│ │ │ ├── multiline-text.js
│ │ │ ├── multiline-text.tree.json
│ │ │ ├── nested-elements.js
│ │ │ ├── nested-elements.tree.json
│ │ │ ├── null-attribute-value.js
│ │ │ ├── null-attribute-value.tree.json
│ │ │ ├── simple-deeply-nested-pair.js
│ │ │ ├── simple-deeply-nested-pair.tree.json
│ │ │ ├── simple-expression-container.js
│ │ │ ├── simple-expression-container.tree.json
│ │ │ ├── simple-member-pair.js
│ │ │ ├── simple-member-pair.tree.json
│ │ │ ├── simple-member.js
│ │ │ ├── simple-member.tree.json
│ │ │ ├── simple-namespace-pair.js
│ │ │ ├── simple-namespace-pair.tree.json
│ │ │ ├── simple-namespace.js
│ │ │ ├── simple-namespace.tree.json
│ │ │ ├── simple-nested-pair.js
│ │ │ ├── simple-nested-pair.tree.json
│ │ │ ├── simple-pair.js
│ │ │ ├── simple-pair.tree.json
│ │ │ ├── simple-selfclosing-linefeed.js
│ │ │ ├── simple-selfclosing-linefeed.tree.json
│ │ │ ├── simple-selfclosing-whitespace.js
│ │ │ ├── simple-selfclosing-whitespace.tree.json
│ │ │ ├── simple-selfclosing.js
│ │ │ ├── simple-selfclosing.tree.json
│ │ │ ├── simple-text.js
│ │ │ ├── simple-text.tree.json
│ │ │ ├── template-literal.js
│ │ │ ├── template-literal.tree.json
│ │ │ ├── yield-jsx-element.js
│ │ │ └── yield-jsx-element.tree.json
│ │ ├── automatic-semicolon-insertion/
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tree.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0001.tree.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0002.tree.json
│ │ │ ├── migrated_0003.js
│ │ │ ├── migrated_0003.tree.json
│ │ │ ├── migrated_0004.js
│ │ │ ├── migrated_0004.tree.json
│ │ │ ├── migrated_0005.js
│ │ │ ├── migrated_0005.tree.json
│ │ │ ├── migrated_0006.js
│ │ │ ├── migrated_0006.tree.json
│ │ │ ├── migrated_0007.js
│ │ │ ├── migrated_0007.tree.json
│ │ │ ├── migrated_0008.js
│ │ │ ├── migrated_0008.tree.json
│ │ │ ├── migrated_0009.js
│ │ │ ├── migrated_0009.tree.json
│ │ │ ├── migrated_0010.js
│ │ │ ├── migrated_0010.tree.json
│ │ │ ├── migrated_0011.js
│ │ │ ├── migrated_0011.tree.json
│ │ │ ├── migrated_0012.js
│ │ │ ├── migrated_0012.tree.json
│ │ │ ├── migrated_0013.js
│ │ │ ├── migrated_0013.tree.json
│ │ │ ├── migrated_0014.js
│ │ │ ├── migrated_0014.tree.json
│ │ │ ├── migrated_0015.js
│ │ │ └── migrated_0015.tree.json
│ │ ├── comment/
│ │ │ ├── html-comment.module.js
│ │ │ ├── html-comment.module.tree.json
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tree.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0001.tree.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0002.tree.json
│ │ │ ├── migrated_0003.js
│ │ │ ├── migrated_0003.tree.json
│ │ │ ├── migrated_0004.js
│ │ │ ├── migrated_0004.tree.json
│ │ │ ├── migrated_0005.js
│ │ │ ├── migrated_0005.tree.json
│ │ │ ├── migrated_0006.js
│ │ │ ├── migrated_0006.tree.json
│ │ │ ├── migrated_0007.js
│ │ │ ├── migrated_0007.tree.json
│ │ │ ├── migrated_0008.js
│ │ │ ├── migrated_0008.tree.json
│ │ │ ├── migrated_0009.js
│ │ │ ├── migrated_0009.tree.json
│ │ │ ├── migrated_0010.js
│ │ │ ├── migrated_0010.tree.json
│ │ │ ├── migrated_0011.js
│ │ │ ├── migrated_0011.tree.json
│ │ │ ├── migrated_0012.js
│ │ │ ├── migrated_0012.tree.json
│ │ │ ├── migrated_0013.js
│ │ │ ├── migrated_0013.tree.json
│ │ │ ├── migrated_0014.js
│ │ │ ├── migrated_0014.tree.json
│ │ │ ├── migrated_0015.js
│ │ │ ├── migrated_0015.tree.json
│ │ │ ├── migrated_0016.js
│ │ │ ├── migrated_0016.tree.json
│ │ │ ├── migrated_0017.js
│ │ │ ├── migrated_0017.tree.json
│ │ │ ├── migrated_0018.js
│ │ │ ├── migrated_0018.tree.json
│ │ │ ├── migrated_0019.js
│ │ │ ├── migrated_0019.tree.json
│ │ │ ├── migrated_0020.js
│ │ │ ├── migrated_0020.tree.json
│ │ │ ├── migrated_0021.js
│ │ │ ├── migrated_0021.tree.json
│ │ │ ├── migrated_0022.js
│ │ │ ├── migrated_0022.tree.json
│ │ │ ├── migrated_0023.js
│ │ │ ├── migrated_0023.tree.json
│ │ │ ├── migrated_0024.js
│ │ │ ├── migrated_0024.tree.json
│ │ │ ├── migrated_0025.js
│ │ │ ├── migrated_0025.tree.json
│ │ │ ├── migrated_0026.js
│ │ │ ├── migrated_0026.tree.json
│ │ │ ├── migrated_0027.js
│ │ │ ├── migrated_0027.tree.json
│ │ │ ├── migrated_0028.js
│ │ │ ├── migrated_0028.tree.json
│ │ │ ├── migrated_0029.js
│ │ │ ├── migrated_0029.tree.json
│ │ │ ├── migrated_0030.js
│ │ │ ├── migrated_0030.tree.json
│ │ │ ├── migrated_0031.js
│ │ │ ├── migrated_0031.tree.json
│ │ │ ├── migrated_0032.js
│ │ │ ├── migrated_0032.tree.json
│ │ │ ├── migrated_0033.js
│ │ │ ├── migrated_0033.tree.json
│ │ │ ├── migrated_0034.js
│ │ │ ├── migrated_0034.tree.json
│ │ │ ├── migrated_0035.js
│ │ │ ├── migrated_0035.tree.json
│ │ │ ├── migrated_0036.js
│ │ │ ├── migrated_0036.tree.json
│ │ │ ├── migrated_0037.js
│ │ │ ├── migrated_0037.tree.json
│ │ │ ├── migrated_0038.js
│ │ │ ├── migrated_0038.tree.json
│ │ │ ├── migrated_0039.js
│ │ │ ├── migrated_0039.tree.json
│ │ │ ├── migrated_0040.js
│ │ │ ├── migrated_0040.tree.json
│ │ │ ├── migrated_0041.js
│ │ │ ├── migrated_0041.tree.json
│ │ │ ├── migrated_0042.js
│ │ │ ├── migrated_0042.tree.json
│ │ │ ├── migrated_0043.js
│ │ │ ├── migrated_0043.tree.json
│ │ │ ├── migrated_0044.js
│ │ │ ├── migrated_0044.tree.json
│ │ │ ├── migrated_0045.js
│ │ │ ├── migrated_0045.tree.json
│ │ │ ├── migrated_0046.js
│ │ │ ├── migrated_0046.tree.json
│ │ │ ├── migrated_0047.js
│ │ │ ├── migrated_0047.tree.json
│ │ │ ├── migrated_0048.js
│ │ │ ├── migrated_0048.tree.json
│ │ │ ├── migrated_0049.js
│ │ │ ├── migrated_0049.tree.json
│ │ │ ├── migrated_0050.js
│ │ │ ├── migrated_0050.tree.json
│ │ │ ├── migrated_0051.js
│ │ │ ├── migrated_0051.tree.json
│ │ │ ├── migrated_0052.js
│ │ │ ├── migrated_0052.tree.json
│ │ │ ├── migrated_0053.js
│ │ │ ├── migrated_0053.tree.json
│ │ │ ├── migrated_0054.js
│ │ │ ├── migrated_0054.tree.json
│ │ │ ├── migrated_0055.js
│ │ │ └── migrated_0055.tree.json
│ │ ├── declaration/
│ │ │ ├── const/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── function/
│ │ │ │ ├── dupe-param.failure.json
│ │ │ │ ├── dupe-param.js
│ │ │ │ ├── invalid-strict-labelled-function-declaration.js
│ │ │ │ ├── invalid-strict-labelled-function-declaration.tree.json
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── migrated_0007.js
│ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ ├── migrated_0008.js
│ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ ├── migrated_0009.js
│ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ ├── migrated_0010.js
│ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ ├── migrated_0011.js
│ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ ├── migrated_0012.js
│ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ ├── migrated_0013.js
│ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ ├── migrated_0014.js
│ │ │ │ └── migrated_0014.tree.json
│ │ │ └── let/
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tree.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0001.tree.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0002.tree.json
│ │ │ ├── migrated_0003.js
│ │ │ └── migrated_0003.tree.json
│ │ ├── directive-prolog/
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tree.json
│ │ │ ├── migrated_0001.js
│ │ │ └── migrated_0001.tree.json
│ │ ├── es2017/
│ │ │ ├── async/
│ │ │ │ ├── arrows/
│ │ │ │ │ ├── assigned-async-arrow.js
│ │ │ │ │ ├── assigned-async-arrow.tree.json
│ │ │ │ │ ├── async-arrow-as-last-parameter.js
│ │ │ │ │ ├── async-arrow-as-last-parameter.tree.json
│ │ │ │ │ ├── async-arrow-as-parameter.js
│ │ │ │ │ ├── async-arrow-as-parameter.tree.json
│ │ │ │ │ ├── async-arrow-multi-args-await.js
│ │ │ │ │ ├── async-arrow-multi-args-await.tree.json
│ │ │ │ │ ├── async-arrow-multi-args-concise-await.js
│ │ │ │ │ ├── async-arrow-multi-args-concise-await.tree.json
│ │ │ │ │ ├── async-arrow-multi-args-concise.js
│ │ │ │ │ ├── async-arrow-multi-args-concise.tree.json
│ │ │ │ │ ├── async-arrow-multi-args.js
│ │ │ │ │ ├── async-arrow-multi-args.tree.json
│ │ │ │ │ ├── async-arrow-no-arg.js
│ │ │ │ │ ├── async-arrow-no-arg.tree.json
│ │ │ │ │ ├── async-arrow-object-pattern-parameter.js
│ │ │ │ │ ├── async-arrow-object-pattern-parameter.tree.json
│ │ │ │ │ ├── async-arrow-one-arg-await.js
│ │ │ │ │ ├── async-arrow-one-arg-await.tree.json
│ │ │ │ │ ├── async-arrow-one-arg-concise-await.js
│ │ │ │ │ ├── async-arrow-one-arg-concise-await.tree.json
│ │ │ │ │ ├── async-arrow-one-arg-concise.js
│ │ │ │ │ ├── async-arrow-one-arg-concise.tree.json
│ │ │ │ │ ├── async-arrow-one-arg.js
│ │ │ │ │ ├── async-arrow-one-arg.tree.json
│ │ │ │ │ ├── async-arrow-parenthesized-await.js
│ │ │ │ │ ├── async-arrow-parenthesized-await.tree.json
│ │ │ │ │ ├── async-arrow-parenthesized-concise-await.js
│ │ │ │ │ ├── async-arrow-parenthesized-concise-await.tree.json
│ │ │ │ │ ├── async-arrow-parenthesized-concise.js
│ │ │ │ │ ├── async-arrow-parenthesized-concise.tree.json
│ │ │ │ │ ├── async-arrow-parenthesized-yield.js
│ │ │ │ │ ├── async-arrow-parenthesized-yield.tree.json
│ │ │ │ │ ├── async-arrow-parenthesized.js
│ │ │ │ │ ├── async-arrow-parenthesized.tree.json
│ │ │ │ │ ├── async-arrow-pattern-parameter.js
│ │ │ │ │ ├── async-arrow-pattern-parameter.tree.json
│ │ │ │ │ ├── async-arrow-rest.js
│ │ │ │ │ ├── async-arrow-rest.tree.json
│ │ │ │ │ ├── async-arrow-trailing-comma.js
│ │ │ │ │ ├── async-arrow-trailing-comma.tree.json
│ │ │ │ │ ├── async-arrow-yield.js
│ │ │ │ │ ├── async-arrow-yield.tree.json
│ │ │ │ │ ├── export-async-arrow.module.js
│ │ │ │ │ ├── export-async-arrow.module.tree.json
│ │ │ │ │ ├── export-default-async-arrow.module.js
│ │ │ │ │ ├── export-default-async-arrow.module.tree.json
│ │ │ │ │ ├── invalid-async-line-terminator1.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator1.js
│ │ │ │ │ ├── invalid-async-line-terminator2.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator2.js
│ │ │ │ │ ├── invalid-async-line-terminator3.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator3.js
│ │ │ │ │ ├── invalid-async-line-terminator4.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator4.js
│ │ │ │ │ ├── invalid-async-line-terminator5.failure.json
│ │ │ │ │ └── invalid-async-line-terminator5.js
│ │ │ │ ├── functions/
│ │ │ │ │ ├── argument-async-function-expression.js
│ │ │ │ │ ├── argument-async-function-expression.tree.json
│ │ │ │ │ ├── async-function-declaration-await.js
│ │ │ │ │ ├── async-function-declaration-await.tree.json
│ │ │ │ │ ├── async-function-declaration.js
│ │ │ │ │ ├── async-function-declaration.tree.json
│ │ │ │ │ ├── async-function-expression-as-parameter.js
│ │ │ │ │ ├── async-function-expression-as-parameter.tree.json
│ │ │ │ │ ├── async-function-expression-await.js
│ │ │ │ │ ├── async-function-expression-await.tree.json
│ │ │ │ │ ├── async-function-expression-named-await.js
│ │ │ │ │ ├── async-function-expression-named-await.tree.json
│ │ │ │ │ ├── async-function-expression-named.js
│ │ │ │ │ ├── async-function-expression-named.tree.json
│ │ │ │ │ ├── async-function-expression.js
│ │ │ │ │ ├── async-function-expression.tree.json
│ │ │ │ │ ├── async-generator-declaration.js
│ │ │ │ │ ├── async-generator-declaration.tree.json
│ │ │ │ │ ├── async-generator-expression.js
│ │ │ │ │ ├── async-generator-expression.tree.json
│ │ │ │ │ ├── async-if-await.js
│ │ │ │ │ ├── async-if-await.tree.json
│ │ │ │ │ ├── async-if.js
│ │ │ │ │ ├── async-if.tree.json
│ │ │ │ │ ├── export-async-function-declaration-await.module.js
│ │ │ │ │ ├── export-async-function-declaration-await.module.tree.json
│ │ │ │ │ ├── export-async-function-declaration.module.js
│ │ │ │ │ ├── export-async-function-declaration.module.tree.json
│ │ │ │ │ ├── export-default-async-function-declaration.module.js
│ │ │ │ │ ├── export-default-async-function-declaration.module.tree.json
│ │ │ │ │ ├── export-default-async-named-function-declaration-await.module.js
│ │ │ │ │ ├── export-default-async-named-function-declaration-await.module.tree.json
│ │ │ │ │ ├── export-default-async-named-function-declaration.module.js
│ │ │ │ │ ├── export-default-async-named-function-declaration.module.tree.json
│ │ │ │ │ ├── inner-function-async.js
│ │ │ │ │ ├── inner-function-async.tree.json
│ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.failure.json
│ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.js
│ │ │ │ │ ├── invalid-async-function-expression-duplicate-params.failure.json
│ │ │ │ │ ├── invalid-async-function-expression-duplicate-params.js
│ │ │ │ │ ├── invalid-async-line-terminator-expression.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator-expression.js
│ │ │ │ │ ├── invalid-async-while.failure.json
│ │ │ │ │ ├── invalid-async-while.js
│ │ │ │ │ ├── invalid-export-async-function-expression.module.failure.json
│ │ │ │ │ ├── invalid-export-async-function-expression.module.js
│ │ │ │ │ ├── invalid-expression-body-contains-super-call.failure.json
│ │ │ │ │ └── invalid-expression-body-contains-super-call.js
│ │ │ │ ├── invalid-await/
│ │ │ │ │ ├── invalid-await-declaration1.failure.json
│ │ │ │ │ ├── invalid-await-declaration1.js
│ │ │ │ │ ├── invalid-await-declaration2.failure.json
│ │ │ │ │ ├── invalid-await-declaration2.js
│ │ │ │ │ ├── invalid-await-declaration3.failure.json
│ │ │ │ │ ├── invalid-await-declaration3.js
│ │ │ │ │ ├── invalid-await-declaration4.failure.json
│ │ │ │ │ ├── invalid-await-declaration4.js
│ │ │ │ │ ├── invalid-await-function-name1.failure.json
│ │ │ │ │ ├── invalid-await-function-name1.js
│ │ │ │ │ ├── invalid-await-function-name2.failure.json
│ │ │ │ │ ├── invalid-await-function-name2.js
│ │ │ │ │ ├── invalid-await-identifier1.failure.json
│ │ │ │ │ ├── invalid-await-identifier1.js
│ │ │ │ │ ├── invalid-await-identifier2.failure.json
│ │ │ │ │ ├── invalid-await-identifier2.js
│ │ │ │ │ ├── invalid-await-method.failure.json
│ │ │ │ │ ├── invalid-await-method.js
│ │ │ │ │ ├── invalid-await-no-argument1.failure.json
│ │ │ │ │ ├── invalid-await-no-argument1.js
│ │ │ │ │ ├── invalid-await-no-argument2.failure.json
│ │ │ │ │ ├── invalid-await-no-argument2.js
│ │ │ │ │ ├── invalid-await-object-expression1.failure.json
│ │ │ │ │ ├── invalid-await-object-expression1.js
│ │ │ │ │ ├── invalid-await-object-expression2.failure.json
│ │ │ │ │ ├── invalid-await-object-expression2.js
│ │ │ │ │ ├── invalid-await-outside-async.failure.json
│ │ │ │ │ ├── invalid-await-outside-async.js
│ │ │ │ │ ├── invalid-await-parameter1.failure.json
│ │ │ │ │ ├── invalid-await-parameter1.js
│ │ │ │ │ ├── invalid-await-parameter2.failure.json
│ │ │ │ │ ├── invalid-await-parameter2.js
│ │ │ │ │ ├── invalid-await-parameter3.failure.json
│ │ │ │ │ ├── invalid-await-parameter3.js
│ │ │ │ │ ├── invalid-await-parameter4.failure.json
│ │ │ │ │ ├── invalid-await-parameter4.js
│ │ │ │ │ ├── invalid-await-parameter5.failure.json
│ │ │ │ │ ├── invalid-await-parameter5.js
│ │ │ │ │ ├── invalid-await-parameter6.failure.json
│ │ │ │ │ ├── invalid-await-parameter6.js
│ │ │ │ │ ├── invalid-await-parameter7.failure.json
│ │ │ │ │ ├── invalid-await-parameter7.js
│ │ │ │ │ ├── invalid-await-property.failure.json
│ │ │ │ │ └── invalid-await-property.js
│ │ │ │ ├── methods/
│ │ │ │ │ ├── async-class-generator.js
│ │ │ │ │ ├── async-class-generator.tree.json
│ │ │ │ │ ├── async-generator.js
│ │ │ │ │ ├── async-generator.tree.json
│ │ │ │ │ ├── async-method-await.js
│ │ │ │ │ ├── async-method-await.tree.json
│ │ │ │ │ ├── async-method-computed.js
│ │ │ │ │ ├── async-method-computed.tree.json
│ │ │ │ │ ├── async-method-literal.js
│ │ │ │ │ ├── async-method-literal.tree.json
│ │ │ │ │ ├── async-method-number.js
│ │ │ │ │ ├── async-method-number.tree.json
│ │ │ │ │ ├── async-method.js
│ │ │ │ │ ├── async-method.tree.json
│ │ │ │ │ ├── class-async-get.js
│ │ │ │ │ ├── class-async-get.tree.json
│ │ │ │ │ ├── class-async-method-await.js
│ │ │ │ │ ├── class-async-method-await.tree.json
│ │ │ │ │ ├── class-async-method-computed.js
│ │ │ │ │ ├── class-async-method-computed.tree.json
│ │ │ │ │ ├── class-async-method-literal.js
│ │ │ │ │ ├── class-async-method-literal.tree.json
│ │ │ │ │ ├── class-async-method-number.js
│ │ │ │ │ ├── class-async-method-number.tree.json
│ │ │ │ │ ├── class-async-method.js
│ │ │ │ │ ├── class-async-method.tree.json
│ │ │ │ │ ├── class-async-set.js
│ │ │ │ │ ├── class-async-set.tree.json
│ │ │ │ │ ├── class-static-async-get.js
│ │ │ │ │ ├── class-static-async-get.tree.json
│ │ │ │ │ ├── class-static-async-method-await.js
│ │ │ │ │ ├── class-static-async-method-await.tree.json
│ │ │ │ │ ├── class-static-async-method.js
│ │ │ │ │ ├── class-static-async-method.tree.json
│ │ │ │ │ ├── class-static-async-set.js
│ │ │ │ │ ├── class-static-async-set.tree.json
│ │ │ │ │ ├── invalid-async-class-constructor.failure.json
│ │ │ │ │ ├── invalid-async-class-constructor.js
│ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.failure.json
│ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.js
│ │ │ │ │ ├── invalid-async-getter.failure.json
│ │ │ │ │ ├── invalid-async-getter.js
│ │ │ │ │ ├── invalid-async-line-terminator-method.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator-method.js
│ │ │ │ │ ├── invalid-async-line-terminator-property.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator-property.js
│ │ │ │ │ ├── invalid-async-line-terminator-static-method.failure.json
│ │ │ │ │ ├── invalid-async-line-terminator-static-method.js
│ │ │ │ │ ├── invalid-async-method.failure.json
│ │ │ │ │ ├── invalid-async-method.js
│ │ │ │ │ ├── invalid-async-setter.failure.json
│ │ │ │ │ ├── invalid-async-setter.js
│ │ │ │ │ ├── invalid-async-static.failure.json
│ │ │ │ │ ├── invalid-async-static.js
│ │ │ │ │ ├── static-async-class-generator.js
│ │ │ │ │ └── static-async-class-generator.tree.json
│ │ │ │ └── regular-identifier/
│ │ │ │ ├── argument-async-call.js
│ │ │ │ ├── argument-async-call.tree.json
│ │ │ │ ├── async-arrow-parameter1.js
│ │ │ │ ├── async-arrow-parameter1.tree.json
│ │ │ │ ├── async-arrow-parameter2.js
│ │ │ │ ├── async-arrow-parameter2.tree.json
│ │ │ │ ├── await-function-name.js
│ │ │ │ ├── await-function-name.tree.json
│ │ │ │ ├── await-method-name.js
│ │ │ │ ├── await-method-name.tree.json
│ │ │ │ ├── await-static-name.js
│ │ │ │ ├── await-static-name.tree.json
│ │ │ │ ├── call-async-await.js
│ │ │ │ ├── call-async-await.tree.json
│ │ │ │ ├── call-async.js
│ │ │ │ ├── call-async.tree.json
│ │ │ │ ├── export-identifier-async.module.js
│ │ │ │ ├── export-identifier-async.module.tree.json
│ │ │ │ ├── expr-async.js
│ │ │ │ ├── expr-async.tree.json
│ │ │ │ ├── generator-name-async.js
│ │ │ │ ├── generator-name-async.tree.json
│ │ │ │ ├── identifier-async.js
│ │ │ │ ├── identifier-async.tree.json
│ │ │ │ ├── label-async.js
│ │ │ │ ├── label-async.tree.json
│ │ │ │ ├── line-terminator-arrow.js
│ │ │ │ ├── line-terminator-arrow.tree.json
│ │ │ │ ├── line-terminator-async.js
│ │ │ │ ├── line-terminator-async.tree.json
│ │ │ │ ├── line-terminator-parenthesized-arrow.failure.json
│ │ │ │ ├── line-terminator-parenthesized-arrow.js
│ │ │ │ ├── method-name-async.js
│ │ │ │ ├── method-name-async.tree.json
│ │ │ │ ├── property-async.js
│ │ │ │ ├── property-async.tree.json
│ │ │ │ ├── proto-identifier-shorthand-with-async.js
│ │ │ │ ├── proto-identifier-shorthand-with-async.tree.json
│ │ │ │ ├── static-generator-name-async.js
│ │ │ │ ├── static-generator-name-async.tree.json
│ │ │ │ ├── static-name-async.js
│ │ │ │ └── static-name-async.tree.json
│ │ │ ├── for-statement/
│ │ │ │ ├── invalid-var-init-forin1.failure.json
│ │ │ │ ├── invalid-var-init-forin1.js
│ │ │ │ ├── invalid-var-init-forin2.failure.json
│ │ │ │ ├── invalid-var-init-forin2.js
│ │ │ │ ├── invalid-var-init-forin3.failure.json
│ │ │ │ ├── invalid-var-init-forin3.js
│ │ │ │ ├── invalid-var-init-forin4.failure.json
│ │ │ │ ├── invalid-var-init-forin4.js
│ │ │ │ ├── invalid-var-init-forin5.failure.json
│ │ │ │ └── invalid-var-init-forin5.js
│ │ │ └── trailing-commas/
│ │ │ ├── invalid-empty-arrow.failure.json
│ │ │ ├── invalid-empty-arrow.js
│ │ │ ├── invalid-empty-call.failure.json
│ │ │ ├── invalid-empty-call.js
│ │ │ ├── invalid-empty-constructor.failure.json
│ │ │ ├── invalid-empty-constructor.js
│ │ │ ├── invalid-empty-method.failure.json
│ │ │ ├── invalid-empty-method.js
│ │ │ ├── invalid-empty-parameters.failure.json
│ │ │ ├── invalid-empty-parameters.js
│ │ │ ├── invalid-rest.failure.json
│ │ │ ├── invalid-rest.js
│ │ │ ├── invalid-sequence.failure.json
│ │ │ ├── invalid-sequence.js
│ │ │ ├── invalid-trailing-comma-getter.failure.json
│ │ │ ├── invalid-trailing-comma-getter.js
│ │ │ ├── trailing-comma-arrow-multi.js
│ │ │ ├── trailing-comma-arrow-multi.tree.json
│ │ │ ├── trailing-comma-arrow-single.js
│ │ │ ├── trailing-comma-arrow-single.tree.json
│ │ │ ├── trailing-comma-arrow.js
│ │ │ ├── trailing-comma-arrow.tree.json
│ │ │ ├── trailing-comma-call.js
│ │ │ ├── trailing-comma-call.tree.json
│ │ │ ├── trailing-comma-constructor.js
│ │ │ ├── trailing-comma-constructor.tree.json
│ │ │ ├── trailing-comma-export-function.js
│ │ │ ├── trailing-comma-export-function.tree.json
│ │ │ ├── trailing-comma-function-declaration.js
│ │ │ ├── trailing-comma-function-declaration.tree.json
│ │ │ ├── trailing-comma-function-expression.js
│ │ │ ├── trailing-comma-function-expression.tree.json
│ │ │ ├── trailing-comma-method.js
│ │ │ ├── trailing-comma-method.tree.json
│ │ │ ├── trailing-comma-new.js
│ │ │ ├── trailing-comma-new.tree.json
│ │ │ ├── trailing-comma-spread.js
│ │ │ └── trailing-comma-spread.tree.json
│ │ ├── es2018/
│ │ │ ├── dynamic-import/
│ │ │ │ ├── await-import.js
│ │ │ │ ├── await-import.tree.json
│ │ │ │ ├── coexist-import-call-import-declaration.module.js
│ │ │ │ ├── coexist-import-call-import-declaration.module.tree.json
│ │ │ │ ├── import-call-string.js
│ │ │ │ ├── import-call-string.tree.json
│ │ │ │ ├── import-call-template.js
│ │ │ │ ├── import-call-template.tree.json
│ │ │ │ ├── import-call-var.js
│ │ │ │ ├── import-call-var.tree.json
│ │ │ │ ├── invalid-import-call-many-arguments.js
│ │ │ │ ├── invalid-import-call-many-arguments.tree.json
│ │ │ │ ├── invalid-import-call-no-argument.js
│ │ │ │ ├── invalid-import-call-no-argument.tree.json
│ │ │ │ ├── invalid-new-import-call.failure.json
│ │ │ │ ├── invalid-new-import-call.js
│ │ │ │ ├── invalid-non-callee.failure.json
│ │ │ │ ├── invalid-non-callee.js
│ │ │ │ ├── loader-using-import.js
│ │ │ │ └── loader-using-import.tree.json
│ │ │ ├── for-await-of/
│ │ │ │ ├── for-await-of.js
│ │ │ │ ├── for-await-of.tree.json
│ │ │ │ ├── invalid-for-await-of-not-async-context.failure.json
│ │ │ │ └── invalid-for-await-of-not-async-context.js
│ │ │ ├── rest-property/
│ │ │ │ ├── destructuring-mirror.js
│ │ │ │ ├── destructuring-mirror.tree.json
│ │ │ │ ├── function-extension.js
│ │ │ │ ├── function-extension.tree.json
│ │ │ │ ├── invalid-default-rest-property.failure.json
│ │ │ │ ├── invalid-default-rest-property.js
│ │ │ │ ├── invalid-property-after-rest.failure.json
│ │ │ │ ├── invalid-property-after-rest.js
│ │ │ │ ├── rest-property-object-pattern-arrow.js
│ │ │ │ ├── rest-property-object-pattern-arrow.tree.json
│ │ │ │ ├── shallow-clone.js
│ │ │ │ ├── shallow-clone.tree.json
│ │ │ │ ├── simple-rest-properties.js
│ │ │ │ └── simple-rest-properties.tree.json
│ │ │ ├── spread-property/
│ │ │ │ ├── default-properties.js
│ │ │ │ ├── default-properties.tree.json
│ │ │ │ ├── multiple-merges.js
│ │ │ │ ├── multiple-merges.tree.json
│ │ │ │ ├── object-initializer-getter.js
│ │ │ │ ├── object-initializer-getter.tree.json
│ │ │ │ ├── object-merging.js
│ │ │ │ ├── object-merging.tree.json
│ │ │ │ ├── properties-overriding.js
│ │ │ │ ├── properties-overriding.tree.json
│ │ │ │ ├── shallow-clone.js
│ │ │ │ ├── shallow-clone.tree.json
│ │ │ │ ├── spread-getter.js
│ │ │ │ ├── spread-getter.tree.json
│ │ │ │ ├── spread-null-undefined.js
│ │ │ │ └── spread-null-undefined.tree.json
│ │ │ └── template-literal-revision/
│ │ │ ├── not-escape-8.failure.json
│ │ │ ├── not-escape-8.js
│ │ │ ├── not-escape-9.failure.json
│ │ │ ├── not-escape-9.js
│ │ │ ├── not-escape-hex.failure.json
│ │ │ ├── not-escape-hex.js
│ │ │ ├── not-escape-oct.js
│ │ │ ├── not-escape-oct.tree.json
│ │ │ ├── not-escape-unicode-code-point.failure.json
│ │ │ ├── not-escape-unicode-code-point.js
│ │ │ ├── not-escape-unicode.failure.json
│ │ │ ├── not-escape-unicode.js
│ │ │ ├── span-not-escape-unicode.failure.json
│ │ │ ├── span-not-escape-unicode.js
│ │ │ ├── tagged-not-escape-8.js
│ │ │ ├── tagged-not-escape-8.tree.json
│ │ │ ├── tagged-not-escape-9.js
│ │ │ ├── tagged-not-escape-9.tree.json
│ │ │ ├── tagged-not-escape-hex.js
│ │ │ ├── tagged-not-escape-hex.tree.json
│ │ │ ├── tagged-not-escape-oct.js
│ │ │ ├── tagged-not-escape-oct.tree.json
│ │ │ ├── tagged-not-escape-unicode-code-point.js
│ │ │ ├── tagged-not-escape-unicode-code-point.tree.json
│ │ │ ├── tagged-not-escape-unicode.js
│ │ │ └── tagged-not-escape-unicode.tree.json
│ │ ├── es2019/
│ │ │ └── optional-catch-binding/
│ │ │ ├── optional-catch-binding.js
│ │ │ └── optional-catch-binding.tree.json
│ │ ├── es2020/
│ │ │ ├── import.meta/
│ │ │ │ ├── assignment.module.js
│ │ │ │ ├── assignment.module.tree.json
│ │ │ │ ├── log.failure.json
│ │ │ │ ├── log.js
│ │ │ │ ├── log.module.js
│ │ │ │ ├── log.module.tree.json
│ │ │ │ ├── unicode-escape-import.module.failure.json
│ │ │ │ ├── unicode-escape-import.module.js
│ │ │ │ ├── unicode-escape-meta.module.failure.json
│ │ │ │ ├── unicode-escape-meta.module.js
│ │ │ │ ├── url.module.js
│ │ │ │ └── url.module.tree.json
│ │ │ ├── nullish-coalescing/
│ │ │ │ ├── invalid-nullish-coalescing-chain-and-head.failure.json
│ │ │ │ ├── invalid-nullish-coalescing-chain-and-head.js
│ │ │ │ ├── invalid-nullish-coalescing-chain-and-tail.failure.json
│ │ │ │ ├── invalid-nullish-coalescing-chain-and-tail.js
│ │ │ │ ├── invalid-nullish-coalescing-chain-or-tail.failure.json
│ │ │ │ └── invalid-nullish-coalescing-chain-or-tail.js
│ │ │ └── optional-chaining/
│ │ │ ├── invalid-optional-chaining-as-assignment-target.failure.json
│ │ │ ├── invalid-optional-chaining-as-assignment-target.js
│ │ │ ├── invalid-optional-chaining-indirect-template-string.failure.json
│ │ │ ├── invalid-optional-chaining-indirect-template-string.js
│ │ │ ├── invalid-optional-chaining-new-indirect-template-string.failure.json
│ │ │ ├── invalid-optional-chaining-new-indirect-template-string.js
│ │ │ ├── invalid-optional-chaining-new-template-string.failure.json
│ │ │ ├── invalid-optional-chaining-new-template-string.js
│ │ │ ├── invalid-optional-chaining-template-string.failure.json
│ │ │ ├── invalid-optional-chaining-template-string.js
│ │ │ ├── optional-chaining-call.failure.json
│ │ │ ├── optional-chaining-call.js
│ │ │ ├── optional-chaining-computed-property.js
│ │ │ ├── optional-chaining-computed-property.tree.json
│ │ │ ├── optional-chaining-static-property.js
│ │ │ └── optional-chaining-static-property.tree.json
│ │ ├── expression/
│ │ │ ├── additive/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── assignment/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── migrated_0007.js
│ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ ├── migrated_0008.js
│ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ ├── migrated_0009.js
│ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ ├── migrated_0010.js
│ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ ├── migrated_0011.js
│ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ ├── migrated_0012.js
│ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ ├── migrated_0013.js
│ │ │ │ └── migrated_0013.tree.json
│ │ │ ├── binary/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── migrated_0007.js
│ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ ├── migrated_0008.js
│ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ ├── migrated_0009.js
│ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ ├── migrated_0010.js
│ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ ├── migrated_0011.js
│ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ ├── migrated_0012.js
│ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ ├── migrated_0013.js
│ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ ├── migrated_0014.js
│ │ │ │ ├── migrated_0014.tree.json
│ │ │ │ ├── migrated_0015.js
│ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ ├── migrated_0016.js
│ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ ├── migrated_0017.js
│ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ ├── multiline_string.js
│ │ │ │ ├── multiline_string.tree.json
│ │ │ │ ├── multiline_string_literal.js
│ │ │ │ └── multiline_string_literal.tree.json
│ │ │ ├── binary-bitwise/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── binary-logical/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ └── migrated_0005.tree.json
│ │ │ ├── bitwise-shift/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── complex/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ └── migrated_0001.tree.json
│ │ │ ├── conditional/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── equality/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ └── migrated_0003.tree.json
│ │ │ ├── grouping/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ └── migrated_0001.tree.json
│ │ │ ├── left-hand-side/
│ │ │ │ ├── let_object_computed.js
│ │ │ │ ├── let_object_computed.tree.json
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── migrated_0007.js
│ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ ├── migrated_0008.js
│ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ ├── migrated_0009.js
│ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ ├── migrated_0010.js
│ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ ├── migrated_0011.js
│ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ ├── migrated_0012.js
│ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ ├── migrated_0013.js
│ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ ├── migrated_0014.js
│ │ │ │ ├── migrated_0014.tree.json
│ │ │ │ ├── migrated_0015.js
│ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ ├── migrated_0016.js
│ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ ├── migrated_0017.js
│ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ ├── migrated_0018.js
│ │ │ │ ├── migrated_0018.tree.json
│ │ │ │ ├── migrated_0019.js
│ │ │ │ ├── migrated_0019.tree.json
│ │ │ │ ├── migrated_0020.js
│ │ │ │ ├── migrated_0020.tree.json
│ │ │ │ ├── migrated_0021.js
│ │ │ │ ├── migrated_0021.tree.json
│ │ │ │ ├── migrated_0022.js
│ │ │ │ └── migrated_0022.tree.json
│ │ │ ├── multiplicative/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── postfix/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ └── migrated_0005.tree.json
│ │ │ ├── primary/
│ │ │ │ ├── array/
│ │ │ │ │ ├── migrated_0000.js
│ │ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ │ ├── migrated_0001.js
│ │ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ │ ├── migrated_0002.js
│ │ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ │ ├── migrated_0003.js
│ │ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ │ ├── migrated_0004.js
│ │ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ │ ├── migrated_0005.js
│ │ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ │ ├── migrated_0006.js
│ │ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ │ ├── migrated_0007.js
│ │ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ │ ├── migrated_0008.source.js
│ │ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ │ ├── migrated_0009.source.js
│ │ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ │ ├── migrated_0010.source.js
│ │ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ │ ├── migrated_0011.source.js
│ │ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ │ ├── migrated_0012.source.js
│ │ │ │ │ └── migrated_0012.tree.json
│ │ │ │ ├── keyword/
│ │ │ │ │ ├── invalid-escaped-if.js
│ │ │ │ │ ├── invalid-escaped-if.tree.json
│ │ │ │ │ ├── invalid-escaped-null.js
│ │ │ │ │ ├── invalid-escaped-null.tree.json
│ │ │ │ │ ├── invalid-escaped-true.js
│ │ │ │ │ └── invalid-escaped-true.tree.json
│ │ │ │ ├── literal/
│ │ │ │ │ ├── numeric/
│ │ │ │ │ │ ├── invalid_hex.failure.json
│ │ │ │ │ │ ├── invalid_hex.js
│ │ │ │ │ │ ├── migrated_0000.js
│ │ │ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ │ │ ├── migrated_0001.js
│ │ │ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ │ │ ├── migrated_0002.js
│ │ │ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ │ │ ├── migrated_0003.js
│ │ │ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ │ │ ├── migrated_0004.js
│ │ │ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ │ │ ├── migrated_0005.js
│ │ │ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ │ │ ├── migrated_0006.js
│ │ │ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ │ │ ├── migrated_0007.js
│ │ │ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ │ │ ├── migrated_0008.js
│ │ │ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ │ │ ├── migrated_0009.js
│ │ │ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ │ │ ├── migrated_0010.js
│ │ │ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ │ │ ├── migrated_0011.js
│ │ │ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ │ │ ├── migrated_0012.js
│ │ │ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ │ │ ├── migrated_0013.js
│ │ │ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ │ │ ├── migrated_0014.js
│ │ │ │ │ │ ├── migrated_0014.tree.json
│ │ │ │ │ │ ├── migrated_0015.js
│ │ │ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ │ │ ├── migrated_0016.js
│ │ │ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ │ │ ├── migrated_0017.js
│ │ │ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ │ │ ├── migrated_0018.js
│ │ │ │ │ │ ├── migrated_0018.tree.json
│ │ │ │ │ │ ├── migrated_0019.js
│ │ │ │ │ │ ├── migrated_0019.tree.json
│ │ │ │ │ │ ├── migrated_0020.js
│ │ │ │ │ │ ├── migrated_0020.tree.json
│ │ │ │ │ │ ├── migrated_0021.js
│ │ │ │ │ │ ├── migrated_0021.tree.json
│ │ │ │ │ │ ├── migrated_0022.js
│ │ │ │ │ │ ├── migrated_0022.tree.json
│ │ │ │ │ │ ├── migrated_0023.js
│ │ │ │ │ │ ├── migrated_0023.tree.json
│ │ │ │ │ │ ├── migrated_0024.js
│ │ │ │ │ │ └── migrated_0024.tree.json
│ │ │ │ │ ├── regular-expression/
│ │ │ │ │ │ ├── migrated_0000.js
│ │ │ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ │ │ ├── migrated_0001.js
│ │ │ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ │ │ ├── migrated_0002.js
│ │ │ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ │ │ ├── migrated_0003.js
│ │ │ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ │ │ ├── migrated_0004.js
│ │ │ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ │ │ ├── migrated_0005.source.js
│ │ │ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ │ │ ├── migrated_0006.failure.json
│ │ │ │ │ │ ├── migrated_0006.source.js
│ │ │ │ │ │ ├── migrated_0007.js
│ │ │ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ │ │ ├── migrated_0008.js
│ │ │ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ │ │ ├── migrated_0009.js
│ │ │ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ │ │ ├── migrated_0010.js
│ │ │ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ │ │ ├── migrated_0011.js
│ │ │ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ │ │ ├── migrated_0012.js
│ │ │ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ │ │ ├── migrated_0013.js
│ │ │ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ │ │ ├── u-flag-invalid-range-4-hex.failure.json
│ │ │ │ │ │ ├── u-flag-invalid-range-4-hex.js
│ │ │ │ │ │ ├── u-flag-invalid-range-var-hex.failure.json
│ │ │ │ │ │ ├── u-flag-invalid-range-var-hex.js
│ │ │ │ │ │ ├── u-flag-surrogate-pair.js
│ │ │ │ │ │ ├── u-flag-surrogate-pair.tree.json
│ │ │ │ │ │ ├── u-flag-valid-range.js
│ │ │ │ │ │ └── u-flag-valid-range.tree.json
│ │ │ │ │ └── string/
│ │ │ │ │ ├── invalid_escaped_hex.failure.json
│ │ │ │ │ ├── invalid_escaped_hex.js
│ │ │ │ │ ├── invalid_hex.failure.json
│ │ │ │ │ ├── invalid_hex.js
│ │ │ │ │ ├── migrated_0000.js
│ │ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ │ ├── migrated_0001.js
│ │ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ │ ├── migrated_0002.source.js
│ │ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ │ ├── migrated_0003.js
│ │ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ │ ├── migrated_0006.js
│ │ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ │ ├── migrated_0007.js
│ │ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ │ ├── migrated_0008.js
│ │ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ │ ├── migrated_0009.js
│ │ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ │ ├── migrated_0010.js
│ │ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ │ ├── migrated_0011.js
│ │ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ │ ├── migrated_0012.js
│ │ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ │ ├── migrated_0013.js
│ │ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ │ ├── migrated_0015.js
│ │ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ │ ├── migrated_0016.js
│ │ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ │ ├── migrated_0017.js
│ │ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ │ ├── migrated_0018.js
│ │ │ │ │ └── migrated_0018.tree.json
│ │ │ │ ├── object/
│ │ │ │ │ ├── invalid-getter.js
│ │ │ │ │ ├── invalid-getter.tree.json
│ │ │ │ │ ├── invalid-setter1.js
│ │ │ │ │ ├── invalid-setter1.tree.json
│ │ │ │ │ ├── invalid-setter2.js
│ │ │ │ │ ├── invalid-setter2.tree.json
│ │ │ │ │ ├── migrated_0000.js
│ │ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ │ ├── migrated_0001.js
│ │ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ │ ├── migrated_0002.js
│ │ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ │ ├── migrated_0003.js
│ │ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ │ ├── migrated_0004.js
│ │ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ │ ├── migrated_0005.js
│ │ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ │ ├── migrated_0006.js
│ │ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ │ ├── migrated_0007.js
│ │ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ │ ├── migrated_0008.js
│ │ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ │ ├── migrated_0009.js
│ │ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ │ ├── migrated_0010.js
│ │ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ │ ├── migrated_0011.js
│ │ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ │ ├── migrated_0012.js
│ │ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ │ ├── migrated_0013.js
│ │ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ │ ├── migrated_0014.js
│ │ │ │ │ ├── migrated_0014.tree.json
│ │ │ │ │ ├── migrated_0015.js
│ │ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ │ ├── migrated_0016.js
│ │ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ │ ├── migrated_0017.js
│ │ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ │ ├── migrated_0018.js
│ │ │ │ │ ├── migrated_0018.tree.json
│ │ │ │ │ ├── migrated_0019.js
│ │ │ │ │ ├── migrated_0019.tree.json
│ │ │ │ │ ├── migrated_0020.js
│ │ │ │ │ ├── migrated_0020.tree.json
│ │ │ │ │ ├── migrated_0021.js
│ │ │ │ │ ├── migrated_0021.tree.json
│ │ │ │ │ ├── migrated_0022.js
│ │ │ │ │ ├── migrated_0022.tree.json
│ │ │ │ │ ├── migrated_0023.js
│ │ │ │ │ ├── migrated_0023.tree.json
│ │ │ │ │ ├── migrated_0024.js
│ │ │ │ │ ├── migrated_0024.tree.json
│ │ │ │ │ ├── migrated_0025.js
│ │ │ │ │ ├── migrated_0025.tree.json
│ │ │ │ │ ├── migrated_0026.js
│ │ │ │ │ ├── migrated_0026.tree.json
│ │ │ │ │ ├── migrated_0027.js
│ │ │ │ │ ├── migrated_0027.tree.json
│ │ │ │ │ ├── migrated_0028.js
│ │ │ │ │ ├── migrated_0028.tree.json
│ │ │ │ │ ├── migrated_0029.js
│ │ │ │ │ ├── migrated_0029.tree.json
│ │ │ │ │ ├── migrated_0030.js
│ │ │ │ │ ├── migrated_0030.tree.json
│ │ │ │ │ ├── migrated_0031.js
│ │ │ │ │ ├── migrated_0031.tree.json
│ │ │ │ │ ├── migrated_0032.js
│ │ │ │ │ ├── migrated_0032.tree.json
│ │ │ │ │ ├── migrated_0033.js
│ │ │ │ │ ├── migrated_0033.tree.json
│ │ │ │ │ ├── migrated_0034.js
│ │ │ │ │ ├── migrated_0034.tree.json
│ │ │ │ │ ├── migrated_0035.js
│ │ │ │ │ ├── migrated_0035.tree.json
│ │ │ │ │ ├── migrated_0036.js
│ │ │ │ │ ├── migrated_0036.tree.json
│ │ │ │ │ ├── migrated_0037.js
│ │ │ │ │ ├── migrated_0037.tree.json
│ │ │ │ │ ├── migrated_0038.js
│ │ │ │ │ └── migrated_0038.tree.json
│ │ │ │ └── other/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ └── migrated_0003.tree.json
│ │ │ ├── relational/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ └── migrated_0006.tree.json
│ │ │ └── unary/
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tree.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0001.tree.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0002.tree.json
│ │ │ ├── migrated_0003.js
│ │ │ ├── migrated_0003.tree.json
│ │ │ ├── migrated_0004.js
│ │ │ ├── migrated_0004.tree.json
│ │ │ ├── migrated_0005.js
│ │ │ ├── migrated_0005.tree.json
│ │ │ ├── migrated_0006.js
│ │ │ ├── migrated_0006.tree.json
│ │ │ ├── migrated_0007.js
│ │ │ ├── migrated_0007.tree.json
│ │ │ ├── migrated_0008.js
│ │ │ ├── migrated_0008.tree.json
│ │ │ ├── migrated_0009.js
│ │ │ ├── migrated_0009.tree.json
│ │ │ ├── migrated_0010.js
│ │ │ ├── migrated_0010.tree.json
│ │ │ ├── migrated_0011.js
│ │ │ ├── migrated_0011.tree.json
│ │ │ ├── migrated_0012.js
│ │ │ └── migrated_0012.tree.json
│ │ ├── invalid-syntax/
│ │ │ ├── GH-1106-00.failure.json
│ │ │ ├── GH-1106-00.js
│ │ │ ├── GH-1106-01.failure.json
│ │ │ ├── GH-1106-01.js
│ │ │ ├── GH-1106-02.failure.json
│ │ │ ├── GH-1106-02.js
│ │ │ ├── GH-1106-03.failure.json
│ │ │ ├── GH-1106-03.js
│ │ │ ├── GH-1106-04.failure.json
│ │ │ ├── GH-1106-04.js
│ │ │ ├── GH-1106-05.failure.json
│ │ │ ├── GH-1106-05.js
│ │ │ ├── GH-1106-06.failure.json
│ │ │ ├── GH-1106-06.js
│ │ │ ├── GH-1106-07.failure.json
│ │ │ ├── GH-1106-07.js
│ │ │ ├── GH-1106-08.failure.json
│ │ │ ├── GH-1106-08.js
│ │ │ ├── GH-1106-09.failure.json
│ │ │ ├── GH-1106-09.js
│ │ │ ├── migrated_0000.failure.json
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0001.failure.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0002.failure.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0003.failure.json
│ │ │ ├── migrated_0003.js
│ │ │ ├── migrated_0004.failure.json
│ │ │ ├── migrated_0004.js
│ │ │ ├── migrated_0005.failure.json
│ │ │ ├── migrated_0005.js
│ │ │ ├── migrated_0006.failure.json
│ │ │ ├── migrated_0006.js
│ │ │ ├── migrated_0007.failure.json
│ │ │ ├── migrated_0007.js
│ │ │ ├── migrated_0008.failure.json
│ │ │ ├── migrated_0008.js
│ │ │ ├── migrated_0009.failure.json
│ │ │ ├── migrated_0009.js
│ │ │ ├── migrated_0010.failure.json
│ │ │ ├── migrated_0010.js
│ │ │ ├── migrated_0011.failure.json
│ │ │ ├── migrated_0011.js
│ │ │ ├── migrated_0012.failure.json
│ │ │ ├── migrated_0012.js
│ │ │ ├── migrated_0013.failure.json
│ │ │ ├── migrated_0013.js
│ │ │ ├── migrated_0014.failure.json
│ │ │ ├── migrated_0014.js
│ │ │ ├── migrated_0015.failure.json
│ │ │ ├── migrated_0015.js
│ │ │ ├── migrated_0016.failure.json
│ │ │ ├── migrated_0016.js
│ │ │ ├── migrated_0017.failure.json
│ │ │ ├── migrated_0017.js
│ │ │ ├── migrated_0018.failure.json
│ │ │ ├── migrated_0018.js
│ │ │ ├── migrated_0019.failure.json
│ │ │ ├── migrated_0019.js
│ │ │ ├── migrated_0020.failure.json
│ │ │ ├── migrated_0020.js
│ │ │ ├── migrated_0021.failure.json
│ │ │ ├── migrated_0021.js
│ │ │ ├── migrated_0022.failure.json
│ │ │ ├── migrated_0022.js
│ │ │ ├── migrated_0023.failure.json
│ │ │ ├── migrated_0023.js
│ │ │ ├── migrated_0024.failure.json
│ │ │ ├── migrated_0024.js
│ │ │ ├── migrated_0025.failure.json
│ │ │ ├── migrated_0025.js
│ │ │ ├── migrated_0026.failure.json
│ │ │ ├── migrated_0026.js
│ │ │ ├── migrated_0027.failure.json
│ │ │ ├── migrated_0027.js
│ │ │ ├── migrated_0028.failure.json
│ │ │ ├── migrated_0028.js
│ │ │ ├── migrated_0029.failure.json
│ │ │ ├── migrated_0029.js
│ │ │ ├── migrated_0030.failure.json
│ │ │ ├── migrated_0030.js
│ │ │ ├── migrated_0031.failure.json
│ │ │ ├── migrated_0031.js
│ │ │ ├── migrated_0032.failure.json
│ │ │ ├── migrated_0032.js
│ │ │ ├── migrated_0033.failure.json
│ │ │ ├── migrated_0033.source.js
│ │ │ ├── migrated_0034.failure.json
│ │ │ ├── migrated_0034.source.js
│ │ │ ├── migrated_0035.failure.json
│ │ │ ├── migrated_0035.js
│ │ │ ├── migrated_0036.failure.json
│ │ │ ├── migrated_0036.source.js
│ │ │ ├── migrated_0037.failure.json
│ │ │ ├── migrated_0037.source.js
│ │ │ ├── migrated_0038.failure.json
│ │ │ ├── migrated_0038.js
│ │ │ ├── migrated_0039.failure.json
│ │ │ ├── migrated_0039.js
│ │ │ ├── migrated_0040.failure.json
│ │ │ ├── migrated_0040.js
│ │ │ ├── migrated_0041.failure.json
│ │ │ ├── migrated_0041.source.js
│ │ │ ├── migrated_0042.failure.json
│ │ │ ├── migrated_0042.source.js
│ │ │ ├── migrated_0043.failure.json
│ │ │ ├── migrated_0043.source.js
│ │ │ ├── migrated_0044.failure.json
│ │ │ ├── migrated_0044.source.js
│ │ │ ├── migrated_0045.failure.json
│ │ │ ├── migrated_0045.js
│ │ │ ├── migrated_0046.failure.json
│ │ │ ├── migrated_0046.js
│ │ │ ├── migrated_0047.failure.json
│ │ │ ├── migrated_0047.js
│ │ │ ├── migrated_0048.failure.json
│ │ │ ├── migrated_0048.source.js
│ │ │ ├── migrated_0049.failure.json
│ │ │ ├── migrated_0049.source.js
│ │ │ ├── migrated_0050.failure.json
│ │ │ ├── migrated_0050.source.js
│ │ │ ├── migrated_0051.failure.json
│ │ │ ├── migrated_0051.source.js
│ │ │ ├── migrated_0052.failure.json
│ │ │ ├── migrated_0052.js
│ │ │ ├── migrated_0053.failure.json
│ │ │ ├── migrated_0053.js
│ │ │ ├── migrated_0054.failure.json
│ │ │ ├── migrated_0054.js
│ │ │ ├── migrated_0055.failure.json
│ │ │ ├── migrated_0055.js
│ │ │ ├── migrated_0056.failure.json
│ │ │ ├── migrated_0056.js
│ │ │ ├── migrated_0057.failure.json
│ │ │ ├── migrated_0057.js
│ │ │ ├── migrated_0058.failure.json
│ │ │ ├── migrated_0058.js
│ │ │ ├── migrated_0059.failure.json
│ │ │ ├── migrated_0059.js
│ │ │ ├── migrated_0060.failure.json
│ │ │ ├── migrated_0060.js
│ │ │ ├── migrated_0061.failure.json
│ │ │ ├── migrated_0061.js
│ │ │ ├── migrated_0062.failure.json
│ │ │ ├── migrated_0062.js
│ │ │ ├── migrated_0063.failure.json
│ │ │ ├── migrated_0063.js
│ │ │ ├── migrated_0064.failure.json
│ │ │ ├── migrated_0064.js
│ │ │ ├── migrated_0065.failure.json
│ │ │ ├── migrated_0065.js
│ │ │ ├── migrated_0066.failure.json
│ │ │ ├── migrated_0066.js
│ │ │ ├── migrated_0067.failure.json
│ │ │ ├── migrated_0067.js
│ │ │ ├── migrated_0068.failure.json
│ │ │ ├── migrated_0068.js
│ │ │ ├── migrated_0069.failure.json
│ │ │ ├── migrated_0069.js
│ │ │ ├── migrated_0070.failure.json
│ │ │ ├── migrated_0070.js
│ │ │ ├── migrated_0071.failure.json
│ │ │ ├── migrated_0071.js
│ │ │ ├── migrated_0072.failure.json
│ │ │ ├── migrated_0072.js
│ │ │ ├── migrated_0073.failure.json
│ │ │ ├── migrated_0073.js
│ │ │ ├── migrated_0074.failure.json
│ │ │ ├── migrated_0074.js
│ │ │ ├── migrated_0076.failure.json
│ │ │ ├── migrated_0076.js
│ │ │ ├── migrated_0077.failure.json
│ │ │ ├── migrated_0077.js
│ │ │ ├── migrated_0078.failure.json
│ │ │ ├── migrated_0078.js
│ │ │ ├── migrated_0080.failure.json
│ │ │ ├── migrated_0080.js
│ │ │ ├── migrated_0081.failure.json
│ │ │ ├── migrated_0081.js
│ │ │ ├── migrated_0082.failure.json
│ │ │ ├── migrated_0082.js
│ │ │ ├── migrated_0083.failure.json
│ │ │ ├── migrated_0083.js
│ │ │ ├── migrated_0084.failure.json
│ │ │ ├── migrated_0084.js
│ │ │ ├── migrated_0085.failure.json
│ │ │ ├── migrated_0085.js
│ │ │ ├── migrated_0086.failure.json
│ │ │ ├── migrated_0086.js
│ │ │ ├── migrated_0087.failure.json
│ │ │ ├── migrated_0087.js
│ │ │ ├── migrated_0088.failure.json
│ │ │ ├── migrated_0088.js
│ │ │ ├── migrated_0089.failure.json
│ │ │ ├── migrated_0089.js
│ │ │ ├── migrated_0090.failure.json
│ │ │ ├── migrated_0090.js
│ │ │ ├── migrated_0091.failure.json
│ │ │ ├── migrated_0091.js
│ │ │ ├── migrated_0092.failure.json
│ │ │ ├── migrated_0092.js
│ │ │ ├── migrated_0093.failure.json
│ │ │ ├── migrated_0093.js
│ │ │ ├── migrated_0094.failure.json
│ │ │ ├── migrated_0094.js
│ │ │ ├── migrated_0095.failure.json
│ │ │ ├── migrated_0095.js
│ │ │ ├── migrated_0096.failure.json
│ │ │ ├── migrated_0096.js
│ │ │ ├── migrated_0097.failure.json
│ │ │ ├── migrated_0097.js
│ │ │ ├── migrated_0098.failure.json
│ │ │ ├── migrated_0098.js
│ │ │ ├── migrated_0099.failure.json
│ │ │ ├── migrated_0099.js
│ │ │ ├── migrated_0100.failure.json
│ │ │ ├── migrated_0100.js
│ │ │ ├── migrated_0101.failure.json
│ │ │ ├── migrated_0101.js
│ │ │ ├── migrated_0102.failure.json
│ │ │ ├── migrated_0102.js
│ │ │ ├── migrated_0103.failure.json
│ │ │ ├── migrated_0103.js
│ │ │ ├── migrated_0104.failure.json
│ │ │ ├── migrated_0104.js
│ │ │ ├── migrated_0105.failure.json
│ │ │ ├── migrated_0105.js
│ │ │ ├── migrated_0106.failure.json
│ │ │ ├── migrated_0106.js
│ │ │ ├── migrated_0107.failure.json
│ │ │ ├── migrated_0107.js
│ │ │ ├── migrated_0108.failure.json
│ │ │ ├── migrated_0108.js
│ │ │ ├── migrated_0109.failure.json
│ │ │ ├── migrated_0109.js
│ │ │ ├── migrated_0110.failure.json
│ │ │ ├── migrated_0110.js
│ │ │ ├── migrated_0111.failure.json
│ │ │ ├── migrated_0111.js
│ │ │ ├── migrated_0112.failure.json
│ │ │ ├── migrated_0112.js
│ │ │ ├── migrated_0113.failure.json
│ │ │ ├── migrated_0113.js
│ │ │ ├── migrated_0114.failure.json
│ │ │ ├── migrated_0114.js
│ │ │ ├── migrated_0115.failure.json
│ │ │ ├── migrated_0115.js
│ │ │ ├── migrated_0116.failure.json
│ │ │ ├── migrated_0116.js
│ │ │ ├── migrated_0117.failure.json
│ │ │ ├── migrated_0117.js
│ │ │ ├── migrated_0118.failure.json
│ │ │ ├── migrated_0118.js
│ │ │ ├── migrated_0119.failure.json
│ │ │ ├── migrated_0119.js
│ │ │ ├── migrated_0120.failure.json
│ │ │ ├── migrated_0120.js
│ │ │ ├── migrated_0121.failure.json
│ │ │ ├── migrated_0121.js
│ │ │ ├── migrated_0122.failure.json
│ │ │ ├── migrated_0122.js
│ │ │ ├── migrated_0123.failure.json
│ │ │ ├── migrated_0123.js
│ │ │ ├── migrated_0124.failure.json
│ │ │ ├── migrated_0124.js
│ │ │ ├── migrated_0125.failure.json
│ │ │ ├── migrated_0125.js
│ │ │ ├── migrated_0126.failure.json
│ │ │ ├── migrated_0126.js
│ │ │ ├── migrated_0127.failure.json
│ │ │ ├── migrated_0127.js
│ │ │ ├── migrated_0128.failure.json
│ │ │ ├── migrated_0128.js
│ │ │ ├── migrated_0129.failure.json
│ │ │ ├── migrated_0129.js
│ │ │ ├── migrated_0130.failure.json
│ │ │ ├── migrated_0130.js
│ │ │ ├── migrated_0131.failure.json
│ │ │ ├── migrated_0131.js
│ │ │ ├── migrated_0132.failure.json
│ │ │ ├── migrated_0132.js
│ │ │ ├── migrated_0133.failure.json
│ │ │ ├── migrated_0133.js
│ │ │ ├── migrated_0134.failure.json
│ │ │ ├── migrated_0134.js
│ │ │ ├── migrated_0135.failure.json
│ │ │ ├── migrated_0135.js
│ │ │ ├── migrated_0136.failure.json
│ │ │ ├── migrated_0136.js
│ │ │ ├── migrated_0137.failure.json
│ │ │ ├── migrated_0137.source.js
│ │ │ ├── migrated_0138.failure.json
│ │ │ ├── migrated_0138.js
│ │ │ ├── migrated_0139.failure.json
│ │ │ ├── migrated_0139.js
│ │ │ ├── migrated_0140.failure.json
│ │ │ ├── migrated_0140.js
│ │ │ ├── migrated_0141.failure.json
│ │ │ ├── migrated_0141.js
│ │ │ ├── migrated_0142.failure.json
│ │ │ ├── migrated_0142.js
│ │ │ ├── migrated_0143.failure.json
│ │ │ ├── migrated_0143.js
│ │ │ ├── migrated_0144.failure.json
│ │ │ ├── migrated_0144.js
│ │ │ ├── migrated_0145.failure.json
│ │ │ ├── migrated_0145.js
│ │ │ ├── migrated_0146.failure.json
│ │ │ ├── migrated_0146.js
│ │ │ ├── migrated_0147.failure.json
│ │ │ ├── migrated_0147.js
│ │ │ ├── migrated_0148.failure.json
│ │ │ ├── migrated_0148.js
│ │ │ ├── migrated_0149.failure.json
│ │ │ ├── migrated_0149.js
│ │ │ ├── migrated_0150.failure.json
│ │ │ ├── migrated_0150.js
│ │ │ ├── migrated_0151.failure.json
│ │ │ ├── migrated_0151.js
│ │ │ ├── migrated_0152.failure.json
│ │ │ ├── migrated_0152.js
│ │ │ ├── migrated_0153.failure.json
│ │ │ ├── migrated_0153.js
│ │ │ ├── migrated_0154.failure.json
│ │ │ ├── migrated_0154.js
│ │ │ ├── migrated_0155.failure.json
│ │ │ ├── migrated_0155.js
│ │ │ ├── migrated_0156.failure.json
│ │ │ ├── migrated_0156.js
│ │ │ ├── migrated_0157.failure.json
│ │ │ ├── migrated_0157.js
│ │ │ ├── migrated_0158.failure.json
│ │ │ ├── migrated_0158.js
│ │ │ ├── migrated_0159.failure.json
│ │ │ ├── migrated_0159.js
│ │ │ ├── migrated_0160.failure.json
│ │ │ ├── migrated_0160.js
│ │ │ ├── migrated_0161.failure.json
│ │ │ ├── migrated_0161.js
│ │ │ ├── migrated_0162.failure.json
│ │ │ ├── migrated_0162.js
│ │ │ ├── migrated_0163.failure.json
│ │ │ ├── migrated_0163.source.js
│ │ │ ├── migrated_0164.failure.json
│ │ │ ├── migrated_0164.js
│ │ │ ├── migrated_0165.failure.json
│ │ │ ├── migrated_0165.source.js
│ │ │ ├── migrated_0166.failure.json
│ │ │ ├── migrated_0166.source.js
│ │ │ ├── migrated_0167.failure.json
│ │ │ ├── migrated_0167.source.js
│ │ │ ├── migrated_0168.failure.json
│ │ │ ├── migrated_0168.js
│ │ │ ├── migrated_0169.failure.json
│ │ │ ├── migrated_0169.source.js
│ │ │ ├── migrated_0170.failure.json
│ │ │ ├── migrated_0170.js
│ │ │ ├── migrated_0171.failure.json
│ │ │ ├── migrated_0171.js
│ │ │ ├── migrated_0172.failure.json
│ │ │ ├── migrated_0172.js
│ │ │ ├── migrated_0173.failure.json
│ │ │ ├── migrated_0173.js
│ │ │ ├── migrated_0174.failure.json
│ │ │ ├── migrated_0174.js
│ │ │ ├── migrated_0175.failure.json
│ │ │ ├── migrated_0175.js
│ │ │ ├── migrated_0176.failure.json
│ │ │ ├── migrated_0176.js
│ │ │ ├── migrated_0177.failure.json
│ │ │ ├── migrated_0177.js
│ │ │ ├── migrated_0178.failure.json
│ │ │ ├── migrated_0178.js
│ │ │ ├── migrated_0179.failure.json
│ │ │ ├── migrated_0179.js
│ │ │ ├── migrated_0180.failure.json
│ │ │ ├── migrated_0180.js
│ │ │ ├── migrated_0181.failure.json
│ │ │ ├── migrated_0181.js
│ │ │ ├── migrated_0182.failure.json
│ │ │ ├── migrated_0182.js
│ │ │ ├── migrated_0183.failure.json
│ │ │ ├── migrated_0183.js
│ │ │ ├── migrated_0184.failure.json
│ │ │ ├── migrated_0184.js
│ │ │ ├── migrated_0185.failure.json
│ │ │ ├── migrated_0185.js
│ │ │ ├── migrated_0186.failure.json
│ │ │ ├── migrated_0186.js
│ │ │ ├── migrated_0187.failure.json
│ │ │ ├── migrated_0187.js
│ │ │ ├── migrated_0188.failure.json
│ │ │ ├── migrated_0188.js
│ │ │ ├── migrated_0189.failure.json
│ │ │ ├── migrated_0189.js
│ │ │ ├── migrated_0190.failure.json
│ │ │ ├── migrated_0190.js
│ │ │ ├── migrated_0191.failure.json
│ │ │ ├── migrated_0191.js
│ │ │ ├── migrated_0192.failure.json
│ │ │ ├── migrated_0192.js
│ │ │ ├── migrated_0193.failure.json
│ │ │ ├── migrated_0193.js
│ │ │ ├── migrated_0194.failure.json
│ │ │ ├── migrated_0194.js
│ │ │ ├── migrated_0195.failure.json
│ │ │ ├── migrated_0195.js
│ │ │ ├── migrated_0196.failure.json
│ │ │ ├── migrated_0196.js
│ │ │ ├── migrated_0197.failure.json
│ │ │ ├── migrated_0197.js
│ │ │ ├── migrated_0198.failure.json
│ │ │ ├── migrated_0198.js
│ │ │ ├── migrated_0199.failure.json
│ │ │ ├── migrated_0199.js
│ │ │ ├── migrated_0200.failure.json
│ │ │ ├── migrated_0200.js
│ │ │ ├── migrated_0201.failure.json
│ │ │ ├── migrated_0201.js
│ │ │ ├── migrated_0202.failure.json
│ │ │ ├── migrated_0202.js
│ │ │ ├── migrated_0203.failure.json
│ │ │ ├── migrated_0203.js
│ │ │ ├── migrated_0204.failure.json
│ │ │ ├── migrated_0204.js
│ │ │ ├── migrated_0205.failure.json
│ │ │ ├── migrated_0205.js
│ │ │ ├── migrated_0206.failure.json
│ │ │ ├── migrated_0206.js
│ │ │ ├── migrated_0207.failure.json
│ │ │ ├── migrated_0207.js
│ │ │ ├── migrated_0208.failure.json
│ │ │ ├── migrated_0208.js
│ │ │ ├── migrated_0209.failure.json
│ │ │ ├── migrated_0209.js
│ │ │ ├── migrated_0210.failure.json
│ │ │ ├── migrated_0210.js
│ │ │ ├── migrated_0211.failure.json
│ │ │ ├── migrated_0211.js
│ │ │ ├── migrated_0212.failure.json
│ │ │ ├── migrated_0212.js
│ │ │ ├── migrated_0213.failure.json
│ │ │ ├── migrated_0213.js
│ │ │ ├── migrated_0214.failure.json
│ │ │ ├── migrated_0214.js
│ │ │ ├── migrated_0215.failure.json
│ │ │ ├── migrated_0215.js
│ │ │ ├── migrated_0216.failure.json
│ │ │ ├── migrated_0216.js
│ │ │ ├── migrated_0217.failure.json
│ │ │ ├── migrated_0217.js
│ │ │ ├── migrated_0218.failure.json
│ │ │ ├── migrated_0218.js
│ │ │ ├── migrated_0219.failure.json
│ │ │ ├── migrated_0219.js
│ │ │ ├── migrated_0220.failure.json
│ │ │ ├── migrated_0220.js
│ │ │ ├── migrated_0221.failure.json
│ │ │ ├── migrated_0221.js
│ │ │ ├── migrated_0222.failure.json
│ │ │ ├── migrated_0222.js
│ │ │ ├── migrated_0223.failure.json
│ │ │ ├── migrated_0223.js
│ │ │ ├── migrated_0224.failure.json
│ │ │ ├── migrated_0224.js
│ │ │ ├── migrated_0225.failure.json
│ │ │ ├── migrated_0225.js
│ │ │ ├── migrated_0226.failure.json
│ │ │ ├── migrated_0226.js
│ │ │ ├── migrated_0227.failure.json
│ │ │ ├── migrated_0227.js
│ │ │ ├── migrated_0228.failure.json
│ │ │ ├── migrated_0228.js
│ │ │ ├── migrated_0229.failure.json
│ │ │ ├── migrated_0229.js
│ │ │ ├── migrated_0230.failure.json
│ │ │ ├── migrated_0230.js
│ │ │ ├── migrated_0231.failure.json
│ │ │ ├── migrated_0231.js
│ │ │ ├── migrated_0232.failure.json
│ │ │ ├── migrated_0232.js
│ │ │ ├── migrated_0233.failure.json
│ │ │ ├── migrated_0233.js
│ │ │ ├── migrated_0234.failure.json
│ │ │ ├── migrated_0234.js
│ │ │ ├── migrated_0235.failure.json
│ │ │ ├── migrated_0235.js
│ │ │ ├── migrated_0236.failure.json
│ │ │ ├── migrated_0236.js
│ │ │ ├── migrated_0239.failure.json
│ │ │ ├── migrated_0239.js
│ │ │ ├── migrated_0240.failure.json
│ │ │ ├── migrated_0240.js
│ │ │ ├── migrated_0241.failure.json
│ │ │ ├── migrated_0241.js
│ │ │ ├── migrated_0242.failure.json
│ │ │ ├── migrated_0242.js
│ │ │ ├── migrated_0243.failure.json
│ │ │ ├── migrated_0243.js
│ │ │ ├── migrated_0244.failure.json
│ │ │ ├── migrated_0244.js
│ │ │ ├── migrated_0245.failure.json
│ │ │ ├── migrated_0245.js
│ │ │ ├── migrated_0246.failure.json
│ │ │ ├── migrated_0246.js
│ │ │ ├── migrated_0247.failure.json
│ │ │ ├── migrated_0247.js
│ │ │ ├── migrated_0248.failure.json
│ │ │ ├── migrated_0248.js
│ │ │ ├── migrated_0249.failure.json
│ │ │ ├── migrated_0249.js
│ │ │ ├── migrated_0250.failure.json
│ │ │ ├── migrated_0250.js
│ │ │ ├── migrated_0252.failure.json
│ │ │ ├── migrated_0252.js
│ │ │ ├── migrated_0254.failure.json
│ │ │ ├── migrated_0254.js
│ │ │ ├── migrated_0255.failure.json
│ │ │ ├── migrated_0255.js
│ │ │ ├── migrated_0256.failure.json
│ │ │ ├── migrated_0256.js
│ │ │ ├── migrated_0257.failure.json
│ │ │ ├── migrated_0257.js
│ │ │ ├── migrated_0258.failure.json
│ │ │ ├── migrated_0258.js
│ │ │ ├── migrated_0260.failure.json
│ │ │ ├── migrated_0260.js
│ │ │ ├── migrated_0261.failure.json
│ │ │ ├── migrated_0261.js
│ │ │ ├── migrated_0262.failure.json
│ │ │ ├── migrated_0262.js
│ │ │ ├── migrated_0263.failure.json
│ │ │ ├── migrated_0263.js
│ │ │ ├── migrated_0264.failure.json
│ │ │ ├── migrated_0264.js
│ │ │ ├── migrated_0265.failure.json
│ │ │ ├── migrated_0265.js
│ │ │ ├── migrated_0266.failure.json
│ │ │ ├── migrated_0266.js
│ │ │ ├── migrated_0267.failure.json
│ │ │ ├── migrated_0267.js
│ │ │ ├── migrated_0268.failure.json
│ │ │ ├── migrated_0268.js
│ │ │ ├── migrated_0269.failure.json
│ │ │ ├── migrated_0269.js
│ │ │ ├── migrated_0270.failure.json
│ │ │ ├── migrated_0270.js
│ │ │ ├── migrated_0271.failure.json
│ │ │ ├── migrated_0271.js
│ │ │ ├── migrated_0272.failure.json
│ │ │ ├── migrated_0272.js
│ │ │ ├── migrated_0273.failure.json
│ │ │ ├── migrated_0273.js
│ │ │ ├── migrated_0274.failure.json
│ │ │ ├── migrated_0274.js
│ │ │ ├── migrated_0275.failure.json
│ │ │ ├── migrated_0275.js
│ │ │ ├── migrated_0276.failure.json
│ │ │ ├── migrated_0276.js
│ │ │ ├── migrated_0277.failure.json
│ │ │ ├── migrated_0277.js
│ │ │ ├── migrated_0278.failure.json
│ │ │ ├── migrated_0278.js
│ │ │ ├── strict_assignment_implements.failure.json
│ │ │ ├── strict_assignment_implements.js
│ │ │ ├── strict_assignment_interface.failure.json
│ │ │ ├── strict_assignment_interface.js
│ │ │ ├── strict_assignment_let.failure.json
│ │ │ ├── strict_assignment_let.js
│ │ │ ├── strict_assignment_package.failure.json
│ │ │ ├── strict_assignment_package.js
│ │ │ ├── strict_assignment_private.failure.json
│ │ │ ├── strict_assignment_private.js
│ │ │ ├── strict_assignment_protected.failure.json
│ │ │ ├── strict_assignment_protected.js
│ │ │ ├── strict_assignment_public.failure.json
│ │ │ ├── strict_assignment_public.js
│ │ │ ├── strict_assignment_static.failure.json
│ │ │ ├── strict_assignment_static.js
│ │ │ ├── strict_assignment_yield.failure.json
│ │ │ └── strict_assignment_yield.js
│ │ ├── statement/
│ │ │ ├── block/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── break/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── semicolon_newline.js
│ │ │ │ └── semicolon_newline.tree.json
│ │ │ ├── continue/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ └── migrated_0004.tree.json
│ │ │ ├── debugger/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ └── migrated_0000.tree.json
│ │ │ ├── empty/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ └── migrated_0000.tree.json
│ │ │ ├── expression/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.source.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.source.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.source.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.source.js
│ │ │ │ └── migrated_0005.tree.json
│ │ │ ├── if/
│ │ │ │ ├── else-declaration-following-classic-for.js
│ │ │ │ ├── else-declaration-following-classic-for.tree.json
│ │ │ │ ├── invalid-function-declaration1.failure.json
│ │ │ │ ├── invalid-function-declaration1.js
│ │ │ │ ├── invalid-function-declaration2.failure.json
│ │ │ │ ├── invalid-function-declaration2.js
│ │ │ │ ├── invalid-function-declaration3.failure.json
│ │ │ │ ├── invalid-function-declaration3.js
│ │ │ │ ├── invalid-function-declaration4.failure.json
│ │ │ │ ├── invalid-function-declaration4.js
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ └── migrated_0006.tree.json
│ │ │ ├── iteration/
│ │ │ │ ├── const_forin.js
│ │ │ │ ├── const_forin.tree.json
│ │ │ │ ├── for-in-let.js
│ │ │ │ ├── for-in-let.tree.json
│ │ │ │ ├── for-let-let.js
│ │ │ │ ├── for-let-let.tree.json
│ │ │ │ ├── for-statement-with-seq.js
│ │ │ │ ├── for-statement-with-seq.tree.json
│ │ │ │ ├── invalid-assign-for-in.failure.json
│ │ │ │ ├── invalid-assign-for-in.js
│ │ │ │ ├── invalid-strict-for-in-let.failure.json
│ │ │ │ ├── invalid-strict-for-in-let.js
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── migrated_0007.js
│ │ │ │ ├── migrated_0007.tree.json
│ │ │ │ ├── migrated_0008.js
│ │ │ │ ├── migrated_0008.tree.json
│ │ │ │ ├── migrated_0009.js
│ │ │ │ ├── migrated_0009.tree.json
│ │ │ │ ├── migrated_0010.js
│ │ │ │ ├── migrated_0010.tree.json
│ │ │ │ ├── migrated_0011.js
│ │ │ │ ├── migrated_0011.tree.json
│ │ │ │ ├── migrated_0012.js
│ │ │ │ ├── migrated_0012.tree.json
│ │ │ │ ├── migrated_0013.js
│ │ │ │ ├── migrated_0013.tree.json
│ │ │ │ ├── migrated_0014.js
│ │ │ │ ├── migrated_0014.tree.json
│ │ │ │ ├── migrated_0015.js
│ │ │ │ ├── migrated_0015.tree.json
│ │ │ │ ├── migrated_0016.js
│ │ │ │ ├── migrated_0016.tree.json
│ │ │ │ ├── migrated_0017.js
│ │ │ │ ├── migrated_0017.tree.json
│ │ │ │ ├── migrated_0018.js
│ │ │ │ ├── migrated_0018.tree.json
│ │ │ │ ├── migrated_0019.js
│ │ │ │ ├── migrated_0019.tree.json
│ │ │ │ ├── migrated_0020.js
│ │ │ │ ├── migrated_0020.tree.json
│ │ │ │ ├── migrated_0021.js
│ │ │ │ ├── migrated_0021.tree.json
│ │ │ │ ├── migrated_0022.js
│ │ │ │ ├── migrated_0022.tree.json
│ │ │ │ ├── migrated_0023.js
│ │ │ │ ├── migrated_0023.tree.json
│ │ │ │ ├── migrated_0024.js
│ │ │ │ ├── migrated_0024.tree.json
│ │ │ │ ├── migrated_0025.js
│ │ │ │ ├── migrated_0025.tree.json
│ │ │ │ ├── migrated_0026.js
│ │ │ │ ├── migrated_0026.tree.json
│ │ │ │ ├── pattern-in-for-in.js
│ │ │ │ ├── pattern-in-for-in.tree.json
│ │ │ │ ├── unterminated-do-while.js
│ │ │ │ └── unterminated-do-while.tree.json
│ │ │ ├── labelled/
│ │ │ │ ├── function-declaration.js
│ │ │ │ ├── function-declaration.tree.json
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── return/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── multiline_string.js
│ │ │ │ ├── multiline_string.tree.json
│ │ │ │ ├── multiline_template.js
│ │ │ │ └── multiline_template.tree.json
│ │ │ ├── switch/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── throw/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ └── migrated_0002.tree.json
│ │ │ ├── try/
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── strict_simple_catch.js
│ │ │ │ └── strict_simple_catch.tree.json
│ │ │ ├── variable/
│ │ │ │ ├── complex-pattern-requires-init.failure.json
│ │ │ │ ├── complex-pattern-requires-init.js
│ │ │ │ ├── invalid_trailing_comma_1.failure.json
│ │ │ │ ├── invalid_trailing_comma_1.js
│ │ │ │ ├── invalid_trailing_comma_2.failure.json
│ │ │ │ ├── invalid_trailing_comma_2.js
│ │ │ │ ├── invalid_trailing_comma_3.failure.json
│ │ │ │ ├── invalid_trailing_comma_3.js
│ │ │ │ ├── invalid_trailing_comma_4.failure.json
│ │ │ │ ├── invalid_trailing_comma_4.js
│ │ │ │ ├── invalid_trailing_comma_5.failure.json
│ │ │ │ ├── invalid_trailing_comma_5.js
│ │ │ │ ├── invalid_trailing_comma_6.failure.json
│ │ │ │ ├── invalid_trailing_comma_6.js
│ │ │ │ ├── migrated_0000.js
│ │ │ │ ├── migrated_0000.tree.json
│ │ │ │ ├── migrated_0001.js
│ │ │ │ ├── migrated_0001.tree.json
│ │ │ │ ├── migrated_0002.js
│ │ │ │ ├── migrated_0002.tree.json
│ │ │ │ ├── migrated_0003.js
│ │ │ │ ├── migrated_0003.tree.json
│ │ │ │ ├── migrated_0004.js
│ │ │ │ ├── migrated_0004.tree.json
│ │ │ │ ├── migrated_0005.js
│ │ │ │ ├── migrated_0005.tree.json
│ │ │ │ ├── migrated_0006.js
│ │ │ │ ├── migrated_0006.tree.json
│ │ │ │ ├── var_let.js
│ │ │ │ └── var_let.tree.json
│ │ │ ├── while/
│ │ │ │ ├── invalid-decl-async-fun.failure.json
│ │ │ │ └── invalid-decl-async-fun.js
│ │ │ └── with/
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tree.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0001.tree.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0002.tree.json
│ │ │ ├── unterminated-with.js
│ │ │ └── unterminated-with.tree.json
│ │ ├── tokenize/
│ │ │ ├── after_if.js
│ │ │ ├── after_if.tokens.json
│ │ │ ├── empty.js
│ │ │ ├── empty.tokens.json
│ │ │ ├── invalid_number.failure.json
│ │ │ ├── invalid_number.js
│ │ │ ├── leading_comment.js
│ │ │ ├── leading_comment.tokens.json
│ │ │ ├── line_comment.js
│ │ │ ├── line_comment.tokens.json
│ │ │ ├── line_terminators.js
│ │ │ ├── line_terminators.tokens.json
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tokens.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0001.tokens.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0002.tokens.json
│ │ │ ├── migrated_0003.js
│ │ │ ├── migrated_0003.tokens.json
│ │ │ ├── migrated_0004.js
│ │ │ ├── migrated_0004.tokens.json
│ │ │ ├── migrated_0005.js
│ │ │ ├── migrated_0005.tokens.json
│ │ │ ├── migrated_0006.js
│ │ │ ├── migrated_0006.tokens.json
│ │ │ ├── migrated_0007.js
│ │ │ ├── migrated_0007.tokens.json
│ │ │ ├── migrated_0008.js
│ │ │ ├── migrated_0008.tokens.json
│ │ │ ├── migrated_0009.js
│ │ │ ├── migrated_0009.tokens.json
│ │ │ ├── migrated_0010.js
│ │ │ ├── migrated_0010.tokens.json
│ │ │ ├── migrated_0011.js
│ │ │ ├── migrated_0011.tokens.json
│ │ │ ├── migrated_0012.js
│ │ │ ├── migrated_0012.tokens.json
│ │ │ ├── migrated_0013.js
│ │ │ ├── migrated_0013.tokens.json
│ │ │ ├── migrated_0014.js
│ │ │ ├── migrated_0014.tokens.json
│ │ │ ├── migrated_0015.js
│ │ │ ├── migrated_0015.tokens.json
│ │ │ ├── migrated_0016.js
│ │ │ ├── migrated_0016.tokens.json
│ │ │ ├── single_slash.js
│ │ │ ├── single_slash.tokens.json
│ │ │ ├── trailing_comment.js
│ │ │ └── trailing_comment.tokens.json
│ │ ├── tolerant-parse/
│ │ │ ├── for-in-missing-parenthesis.js
│ │ │ ├── for-in-missing-parenthesis.tree.json
│ │ │ ├── for-missing-parenthesis.js
│ │ │ ├── for-missing-parenthesis.tree.json
│ │ │ ├── for-of-missing-parenthesis.js
│ │ │ ├── for-of-missing-parenthesis.tree.json
│ │ │ ├── if-missing-parenthesis.js
│ │ │ ├── if-missing-parenthesis.tree.json
│ │ │ ├── let_eval.js
│ │ │ ├── let_eval.tree.json
│ │ │ ├── migrated_0000.js
│ │ │ ├── migrated_0000.tree.json
│ │ │ ├── migrated_0001.js
│ │ │ ├── migrated_0001.tree.json
│ │ │ ├── migrated_0002.js
│ │ │ ├── migrated_0002.tree.json
│ │ │ ├── migrated_0003.js
│ │ │ ├── migrated_0003.tree.json
│ │ │ ├── migrated_0004.js
│ │ │ ├── migrated_0004.tree.json
│ │ │ ├── migrated_0005.js
│ │ │ ├── migrated_0005.tree.json
│ │ │ ├── migrated_0006.js
│ │ │ ├── migrated_0006.tree.json
│ │ │ ├── migrated_0007.js
│ │ │ ├── migrated_0007.tree.json
│ │ │ ├── migrated_0008.js
│ │ │ ├── migrated_0008.tree.json
│ │ │ ├── migrated_0009.js
│ │ │ ├── migrated_0009.tree.json
│ │ │ ├── migrated_0010.js
│ │ │ ├── migrated_0010.tree.json
│ │ │ ├── migrated_0011.js
│ │ │ ├── migrated_0011.tree.json
│ │ │ ├── migrated_0012.js
│ │ │ ├── migrated_0012.tree.json
│ │ │ ├── migrated_0013.js
│ │ │ ├── migrated_0013.tree.json
│ │ │ ├── migrated_0014.js
│ │ │ ├── migrated_0014.tree.json
│ │ │ ├── migrated_0015.js
│ │ │ ├── migrated_0015.tree.json
│ │ │ ├── migrated_0016.js
│ │ │ ├── migrated_0016.tree.json
│ │ │ ├── migrated_0017.js
│ │ │ ├── migrated_0017.tree.json
│ │ │ ├── migrated_0018.js
│ │ │ ├── migrated_0018.tree.json
│ │ │ ├── migrated_0019.js
│ │ │ ├── migrated_0019.tree.json
│ │ │ ├── migrated_0020.js
│ │ │ ├── migrated_0020.tree.json
│ │ │ ├── migrated_0021.js
│ │ │ ├── migrated_0021.tree.json
│ │ │ ├── migrated_0022.js
│ │ │ ├── migrated_0022.tree.json
│ │ │ ├── migrated_0023.js
│ │ │ ├── migrated_0023.tree.json
│ │ │ ├── migrated_0024.js
│ │ │ ├── migrated_0024.tree.json
│ │ │ ├── migrated_0025.js
│ │ │ ├── migrated_0025.tree.json
│ │ │ ├── migrated_0026.js
│ │ │ ├── migrated_0026.tree.json
│ │ │ ├── migrated_0027.js
│ │ │ ├── migrated_0027.tree.json
│ │ │ ├── migrated_0028.js
│ │ │ ├── migrated_0028.tree.json
│ │ │ ├── migrated_0029.js
│ │ │ ├── migrated_0029.tree.json
│ │ │ ├── migrated_0030.js
│ │ │ ├── migrated_0030.tree.json
│ │ │ ├── migrated_0031.js
│ │ │ ├── migrated_0031.tree.json
│ │ │ ├── migrated_0032.js
│ │ │ ├── migrated_0032.tree.json
│ │ │ ├── migrated_0033.js
│ │ │ ├── migrated_0033.tree.json
│ │ │ ├── migrated_0034.js
│ │ │ ├── migrated_0034.tree.json
│ │ │ ├── migrated_0035.failure.json
│ │ │ ├── migrated_0035.js
│ │ │ ├── migrated_0036.js
│ │ │ ├── migrated_0036.tree.json
│ │ │ ├── migrated_0037.js
│ │ │ ├── migrated_0037.tree.json
│ │ │ ├── migrated_0038.failure.json
│ │ │ ├── migrated_0038.js
│ │ │ ├── migrated_0039.js
│ │ │ ├── migrated_0039.tree.json
│ │ │ ├── migrated_0040.js
│ │ │ ├── migrated_0040.tree.json
│ │ │ ├── migrated_0041.js
│ │ │ ├── migrated_0041.tree.json
│ │ │ ├── migrated_0042.js
│ │ │ ├── migrated_0042.tree.json
│ │ │ ├── migrated_0044.js
│ │ │ ├── migrated_0044.tree.json
│ │ │ ├── migrated_0045.js
│ │ │ ├── migrated_0045.tree.json
│ │ │ ├── migrated_0046.js
│ │ │ ├── migrated_0046.tree.json
│ │ │ ├── migrated_0047.js
│ │ │ ├── migrated_0047.tree.json
│ │ │ ├── migrated_0048.js
│ │ │ ├── migrated_0048.tree.json
│ │ │ ├── migrated_0049.js
│ │ │ ├── migrated_0049.tree.json
│ │ │ ├── migrated_0050.source.js
│ │ │ ├── migrated_0050.tree.json
│ │ │ ├── migrated_0051.js
│ │ │ ├── migrated_0051.tree.json
│ │ │ ├── migrated_0052.js
│ │ │ ├── migrated_0052.tree.json
│ │ │ ├── string_literal_escape_eight.js
│ │ │ ├── string_literal_escape_eight.tree.json
│ │ │ ├── while-missing-parenthesis.js
│ │ │ └── while-missing-parenthesis.tree.json
│ │ └── whitespace/
│ │ ├── migrated_0000.source.js
│ │ ├── migrated_0000.tree.json
│ │ ├── migrated_0001.source.js
│ │ └── migrated_0001.tree.json
│ ├── grammar-tests.js
│ ├── hostile-environment-tests.js
│ ├── line-ending-sample.js
│ ├── profile.js
│ ├── regression-tests.js
│ ├── test-262-whitelist.txt
│ ├── test-262.js
│ ├── tsfmt.json
│ ├── unit-tests.js
│ ├── utils/
│ │ ├── create-testcases.js
│ │ ├── error-to-object.js
│ │ └── evaluate-testcase.js
│ └── verify-line-ending.js
├── tools/
│ ├── fixupbundle.js
│ ├── generate-fixtures.js
│ ├── generate-identifier-regex.js
│ └── generate-xhtml-entities.js
└── webpack.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
================================================
FILE: .eslintrc.json
================================================
{
"root": true,
"env": {
"es6": true,
"node": true
},
"extends": ["eslint:recommended"],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"sourceType": "script"
},
"plugins": ["esprima-internal"],
"rules": {
"esprima-internal/esprima-complexity": "error",
"no-case-declarations": "off",
"no-constant-condition": ["error", { "checkLoops": false }]
},
"overrides": [
{
"files": ["*.ts", "src/**"],
"env": {
"node": false
},
"extends": [
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"sourceType": "module",
"project": "src/tsconfig.json"
},
"rules": {
"@typescript-eslint/no-explicit-any": ["off"],
"@typescript-eslint/explicit-function-return-type": ["off"]
}
}
]
}
================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
<!--- Provide a summary in the title above. Be concise and specific! -->
<!--
If you are here for reasons other than reporting a defect or suggesting an improvement,
please post to the mailing-list instead: http://groups.google.com/group/esprima.
Do not forget to explore the extensive documentation: http://esprima.org/doc/.
Please report one problem at a time! Refrain from filing a bulk report at once since
it will make it difficult to follow-up and we may have to close the issue.
-->
### Steps to reproduce
<!--- When reporting a defect, specify the scenario that reproduces the problem -->
```js
esprima.parse('some code')
```
### Expected output
<!--- When reporting a defect, write what should happen, e.g. a particular AST output -->
<!--- When suggesting an improvement, describe how it should work -->
### Actual output
<!--- When reporting a defect, write what actually happens instead of the expected behavior -->
<!--- When suggesting an improvement, explain the difference from current behavior -->
### Relevant references
<!--- Optionally, include as many relevant references, e.g. the ECMAScript specification. -->
================================================
FILE: .github/workflows/codestyle.yml
================================================
name: Code Style
on: [push, pull_request]
jobs:
codestyle:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: 16.x
- run: npm ci
- run: npm run code-style
================================================
FILE: .github/workflows/downstream.yml
================================================
name: Downstream Checks
on: [push, pull_request]
jobs:
downstream:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: 16.x
- run: npm ci
- run: npm test
- run: npm run downstream
================================================
FILE: .github/workflows/ecma262suite.yml
================================================
name: ECMA-262 Test Suite
on: [push, pull_request]
jobs:
test262:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: 16.x
- run: npm ci
- run: npm test
- run: npm run test-262
================================================
FILE: .github/workflows/nightly.yml
================================================
name: Publish nightly to npm
on:
schedule:
- cron: "30 6 * * *"
jobs:
check_date:
runs-on: ubuntu-latest
name: Check latest commit
outputs:
should_run: ${{ steps.should_run.outputs.should_run }}
steps:
- uses: actions/checkout@v2
- name: print latest_commit
run: echo ${{ github.sha }}
- id: should_run
continue-on-error: true
name: check latest commit is less than a day
if: ${{ github.event_name == 'schedule' }}
run: test -z $(git rev-list --after=24hours ${{ github.sha }}) && echo "::set-output name=should_run::false"
publish:
needs: check_date
if: ${{ needs.check_date.outputs.should_run != 'false' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: "12.x"
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: npm test
- run: sudo apt install -y moreutils
- run: jq '.name="nightly-esprima"' package.json | sponge package.json
name: Edit package name
- run: |
jq --arg ver $(date +"%Y.%m.%d") '.version=$ver' package.json | sponge package.json
sed -i '/export const version/d' src/esprima.ts
echo "export const version = '$(date +'%Y.%m.%d')';" >> src/esprima.ts
name: Edit package version
- run: |
sed -i '1,4d' README.md
sed -i "s/require('esprima')/require('nightly-esprima')/" README.md
name: Tweak README
- run: git diff
- run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
================================================
FILE: .github/workflows/tests.yml
================================================
name: Tests
on: [push, pull_request]
jobs:
linux:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [8.x, 10.x, 12.x, 14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm test
macos:
runs-on: macos-latest
strategy:
matrix:
node-version: [8.x, 10.x, 12.x, 14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm test
windows:
runs-on: windows-latest
strategy:
matrix:
node-version: [8.x, 10.x, 12.x, 14.x, 16.x]
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run compile && npm run all-tests
legacy:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [6.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm run compile
- run: npm run all-tests
================================================
FILE: .gitignore
================================================
coverage
node_modules
test/dist
src/*.js
dist/esprima.js
================================================
FILE: .npmignore
================================================
.git
/node_modules/
/assets/
/coverage/
/demo/
/tools/
/test/
================================================
FILE: CONTRIBUTING.md
================================================
# Contribution Guide
This page describes how to contribute changes to Esprima.
Please do **not** create a pull request without reading this guide first. Failure to do so may result in the **rejection** of the pull request.
**1. Create a ticket in the [issue tracker](https://github.com/jquery/esprima/issues)**.
This serves as a placeholder for important feedback, review, or any future updates.
**2. Run all the tests**. This requires Node.js: `npm install` to set up, `npm test` to run the tests.
**3. Work on a feature branch**. If the change still needs some tweaks, it will not clutter the master branch.
**4. Write a reasonable commit message:**
* Keep the first line < 72 characters. Write additional paragraphs if necessary.
* Put the link to the ticket. This is important for cross-referencing purposes.
For more information, please check the [detailed contribution guide](http://esprima.org/doc/index.html#contribution).
================================================
FILE: ChangeLog
================================================
2017-06-10: Version 4.0.0
* Support ES2017 async function and await expression (issue 1079)
* Support ES2017 trailing commas in function parameters (issue 1550)
* Explicitly distinguish parsing a module vs a script (issue 1576)
* Fix JSX non-empty container (issue 1786)
* Allow JSX element in a yield expression (issue 1765)
* Allow `in` expression in a concise body with a function body (issue 1793)
* Setter function argument must not be a rest parameter (issue 1693)
* Limit strict mode directive to functions with a simple parameter list (issue 1677)
* Prohibit any escape sequence in a reserved word (issue 1612)
* Only permit hex digits in hex escape sequence (issue 1619)
* Prohibit labelled class/generator/function declaration (issue 1484)
* Limit function declaration as if statement clause only in non-strict mode (issue 1657)
* Tolerate missing ) in a with and do-while statement (issue 1481)
2016-12-22: Version 3.1.3
* Support binding patterns as rest element (issue 1681)
* Account for different possible arguments of a yield expression (issue 1469)
2016-11-24: Version 3.1.2
* Ensure that import specifier is more restrictive (issue 1615)
* Fix duplicated JSX tokens (issue 1613)
* Scan template literal in a JSX expression container (issue 1622)
* Improve XHTML entity scanning in JSX (issue 1629)
2016-10-31: Version 3.1.1
* Fix assignment expression problem in an export declaration (issue 1596)
* Fix incorrect tokenization of hex digits (issue 1605)
2016-10-09: Version 3.1.0
* Do not implicitly collect comments when comment attachment is specified (issue 1553)
* Fix incorrect handling of duplicated proto shorthand fields (issue 1485)
* Prohibit initialization in some variants of for statements (issue 1309, 1561)
* Fix incorrect parsing of export specifier (issue 1578)
* Fix ESTree compatibility for assignment pattern (issue 1575)
2016-09-03: Version 3.0.0
* Support ES2016 exponentiation expression (issue 1490)
* Support JSX syntax (issue 1467)
* Use the latest Unicode 8.0 (issue 1475)
* Add the support for syntax node delegate (issue 1435)
* Fix ESTree compatibility on meta property (issue 1338)
* Fix ESTree compatibility on default parameter value (issue 1081)
* Fix ESTree compatibility on try handler (issue 1030)
2016-08-23: Version 2.7.3
* Fix tokenizer confusion with a comment (issue 1493, 1516)
2016-02-02: Version 2.7.2
* Fix out-of-bound error location in an invalid string literal (issue 1457)
* Fix shorthand object destructuring defaults in variable declarations (issue 1459)
2015-12-10: Version 2.7.1
* Do not allow trailing comma in a variable declaration (issue 1360)
* Fix assignment to `let` in non-strict mode (issue 1376)
* Fix missing delegate property in YieldExpression (issue 1407)
2015-10-22: Version 2.7.0
* Fix the handling of semicolon in a break statement (issue 1044)
* Run the test suite with major web browsers (issue 1259, 1317)
* Allow `let` as an identifier in non-strict mode (issue 1289)
* Attach orphaned comments as `innerComments` (issue 1328)
* Add the support for token delegator (issue 1332)
2015-09-01: Version 2.6.0
* Properly allow or prohibit `let` in a binding identifier/pattern (issue 1048, 1098)
* Add sourceType field for Program node (issue 1159)
* Ensure that strict mode reserved word binding throw an error (issue 1171)
* Run the test suite with Node.js and IE 11 on Windows (issue 1294)
* Allow binding pattern with no initializer in a for statement (issue 1301)
2015-07-31: Version 2.5.0
* Run the test suite in a browser environment (issue 1004)
* Ensure a comma between imported default binding and named imports (issue 1046)
* Distinguish `yield` as a keyword vs an identifier (issue 1186)
* Support ES6 meta property `new.target` (issue 1203)
* Fix the syntax node for yield with expression (issue 1223)
* Fix the check of duplicated proto in property names (issue 1225)
* Fix ES6 Unicode escape in identifier name (issue 1229)
* Support ES6 IdentifierStart and IdentifierPart (issue 1232)
* Treat await as a reserved word when parsing as a module (issue 1234)
* Recognize identifier characters from Unicode SMP (issue 1244)
* Ensure that export and import can be followed by a comma (issue 1250)
* Fix yield operator precedence (issue 1262)
2015-07-01: Version 2.4.1
* Fix some cases of comment attachment (issue 1071, 1175)
* Fix the handling of destructuring in function arguments (issue 1193)
* Fix invalid ranges in assignment expression (issue 1201)
2015-06-26: Version 2.4.0
* Support ES6 for-of iteration (issue 1047)
* Support ES6 spread arguments (issue 1169)
* Minimize npm payload (issue 1191)
2015-06-16: Version 2.3.0
* Support ES6 generator (issue 1033)
* Improve parsing of regular expressions with `u` flag (issue 1179)
2015-04-17: Version 2.2.0
* Support ES6 import and export declarations (issue 1000)
* Fix line terminator before arrow not recognized as error (issue 1009)
* Support ES6 destructuring (issue 1045)
* Support ES6 template literal (issue 1074)
* Fix the handling of invalid/incomplete string escape sequences (issue 1106)
* Fix ES3 static member access restriction (issue 1120)
* Support for `super` in ES6 class (issue 1147)
2015-03-09: Version 2.1.0
* Support ES6 class (issue 1001)
* Support ES6 rest parameter (issue 1011)
* Expand the location of property getter, setter, and methods (issue 1029)
* Enable TryStatement transition to a single handler (issue 1031)
* Support ES6 computed property name (issue 1037)
* Tolerate unclosed block comment (issue 1041)
* Support ES6 lexical declaration (issue 1065)
2015-02-06: Version 2.0.0
* Support ES6 arrow function (issue 517)
* Support ES6 Unicode code point escape (issue 521)
* Improve the speed and accuracy of comment attachment (issue 522)
* Support ES6 default parameter (issue 519)
* Support ES6 regular expression flags (issue 557)
* Fix scanning of implicit octal literals (issue 565)
* Fix the handling of automatic semicolon insertion (issue 574)
* Support ES6 method definition (issue 620)
* Support ES6 octal integer literal (issue 621)
* Support ES6 binary integer literal (issue 622)
* Support ES6 object literal property value shorthand (issue 624)
2015-03-03: Version 1.2.5
* Fix scanning of implicit octal literals (issue 565)
2015-02-05: Version 1.2.4
* Fix parsing of LeftHandSideExpression in ForInStatement (issue 560)
* Fix the handling of automatic semicolon insertion (issue 574)
2015-01-18: Version 1.2.3
* Fix division by this (issue 616)
2014-05-18: Version 1.2.2
* Fix duplicated tokens when collecting comments (issue 537)
2014-05-04: Version 1.2.1
* Ensure that Program node may still have leading comments (issue 536)
2014-04-29: Version 1.2.0
* Fix semicolon handling for expression statement (issue 462, 533)
* Disallow escaped characters in regular expression flags (issue 503)
* Performance improvement for location tracking (issue 520)
* Improve the speed of comment attachment (issue 522)
2014-03-26: Version 1.1.1
* Fix token handling of forward slash after an array literal (issue 512)
2014-03-23: Version 1.1.0
* Optionally attach comments to the owning syntax nodes (issue 197)
* Simplify binary parsing with stack-based shift reduce (issue 352)
* Always include the raw source of literals (issue 376)
* Add optional input source information (issue 386)
* Tokenizer API for pure lexical scanning (issue 398)
* Improve the web site and its online demos (issue 337, 400, 404)
* Performance improvement for location tracking (issue 417, 424)
* Support HTML comment syntax (issue 451)
* Drop support for legacy browsers (issue 474)
2013-08-27: Version 1.0.4
* Minimize the payload for packages (issue 362)
* Fix missing cases on an empty switch statement (issue 436)
* Support escaped ] in regexp literal character classes (issue 442)
* Tolerate invalid left-hand side expression (issue 130)
2013-05-17: Version 1.0.3
* Variable declaration needs at least one declarator (issue 391)
* Fix benchmark's variance unit conversion (issue 397)
* IE < 9: \v should be treated as vertical tab (issue 405)
* Unary expressions should always have prefix: true (issue 418)
* Catch clause should only accept an identifier (issue 423)
* Tolerate setters without parameter (issue 426)
2012-11-02: Version 1.0.2
Improvement:
* Fix esvalidate JUnit output upon a syntax error (issue 374)
2012-10-28: Version 1.0.1
Improvements:
* esvalidate understands shebang in a Unix shell script (issue 361)
* esvalidate treats fatal parsing failure as an error (issue 361)
* Reduce Node.js package via .npmignore (issue 362)
2012-10-22: Version 1.0.0
Initial release.
================================================
FILE: LICENSE.BSD
================================================
Copyright JS Foundation and other contributors, https://js.foundation/
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: README.md
================================================
[](https://www.npmjs.com/package/esprima)
[](https://www.npmjs.com/package/esprima)
[](https://github.com/jquery/esprima/actions)
[](https://codecov.io/github/jquery/esprima)
**Esprima** ([esprima.org](http://esprima.org), BSD license) is a high performance,
standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
parser written in ECMAScript (also popularly known as
[JavaScript](https://en.wikipedia.org/wiki/JavaScript)).
Esprima is created and maintained by [Ariya Hidayat](https://twitter.com/ariyahidayat),
with the help of [many contributors](https://github.com/jquery/esprima/contributors).
### Features
- Full support for ECMAScript 2019 ([ECMA-262 10th Edition](http://www.ecma-international.org/publications/standards/Ecma-262.htm))
- Sensible [syntax tree format](https://github.com/estree/estree/blob/master/es5.md) as standardized by [ESTree project](https://github.com/estree/estree)
- Experimental support for [JSX](https://facebook.github.io/jsx/), a syntax extension for [React](https://facebook.github.io/react/)
- Optional tracking of syntax node location (index-based and line-column)
- [Heavily tested](http://esprima.org/test/ci.html) (~1600 [unit tests](https://github.com/jquery/esprima/tree/master/test/fixtures) with [full code coverage](https://codecov.io/github/jquery/esprima))
### API
Esprima can be used to perform [lexical analysis](https://en.wikipedia.org/wiki/Lexical_analysis) (tokenization) or [syntactic analysis](https://en.wikipedia.org/wiki/Parsing) (parsing) of a JavaScript program.
A simple example on Node.js REPL:
```javascript
> var esprima = require('esprima');
> var program = 'const answer = 42';
> esprima.tokenize(program);
[ { type: 'Keyword', value: 'const' },
{ type: 'Identifier', value: 'answer' },
{ type: 'Punctuator', value: '=' },
{ type: 'Numeric', value: '42' } ]
> esprima.parseScript(program);
{ type: 'Program',
body:
[ { type: 'VariableDeclaration',
declarations: [Object],
kind: 'const' } ],
sourceType: 'script' }
```
For more information, please read the [complete documentation](http://esprima.org/doc).
================================================
FILE: bin/esparse.js
================================================
#!/usr/bin/env node
/*
Copyright JS Foundation and other contributors, https://js.foundation/
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*jslint sloppy:true node:true rhino:true */
var fs, esprima, fname, forceFile, content, options, syntax;
if (typeof require === 'function') {
fs = require('fs');
try {
esprima = require('esprima');
} catch (e) {
esprima = require('../');
}
} else if (typeof load === 'function') {
try {
load('esprima.js');
} catch (e) {
load('../esprima.js');
}
}
// Shims to Node.js objects when running under Rhino.
if (typeof console === 'undefined' && typeof process === 'undefined') {
console = { log: print };
fs = { readFileSync: readFile };
process = { argv: arguments, exit: quit };
process.argv.unshift('esparse.js');
process.argv.unshift('rhino');
}
function showUsage() {
console.log('Usage:');
console.log(' esparse [options] [file.js]');
console.log();
console.log('Available options:');
console.log();
console.log(' --comment Gather all line and block comments in an array');
console.log(' --loc Include line-column location info for each syntax node');
console.log(' --range Include index-based range for each syntax node');
console.log(' --raw Display the raw value of literals');
console.log(' --tokens List all tokens in an array');
console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)');
console.log(' -v, --version Shows program version');
console.log();
process.exit(1);
}
options = {};
process.argv.splice(2).forEach(function (entry) {
if (forceFile || entry === '-' || entry.slice(0, 1) !== '-') {
if (typeof fname === 'string') {
console.log('Error: more than one input file.');
process.exit(1);
} else {
fname = entry;
}
} else if (entry === '-h' || entry === '--help') {
showUsage();
} else if (entry === '-v' || entry === '--version') {
console.log('ECMAScript Parser (using Esprima version', esprima.version, ')');
console.log();
process.exit(0);
} else if (entry === '--comment') {
options.comment = true;
} else if (entry === '--loc') {
options.loc = true;
} else if (entry === '--range') {
options.range = true;
} else if (entry === '--raw') {
options.raw = true;
} else if (entry === '--tokens') {
options.tokens = true;
} else if (entry === '--tolerant') {
options.tolerant = true;
} else if (entry === '--') {
forceFile = true;
} else {
console.log('Error: unknown option ' + entry + '.');
process.exit(1);
}
});
// Special handling for regular expression literal since we need to
// convert it to a string literal, otherwise it will be decoded
// as object "{}" and the regular expression would be lost.
function adjustRegexLiteral(key, value) {
if (key === 'value' && value instanceof RegExp) {
value = value.toString();
}
return value;
}
function run(content) {
syntax = esprima.parse(content, options);
console.log(JSON.stringify(syntax, adjustRegexLiteral, 4));
}
try {
if (fname && (fname !== '-' || forceFile)) {
run(fs.readFileSync(fname, 'utf-8'));
} else {
var content = '';
process.stdin.resume();
process.stdin.on('data', function(chunk) {
content += chunk;
});
process.stdin.on('end', function() {
run(content);
});
}
} catch (e) {
console.log('Error: ' + e.message);
process.exit(1);
}
================================================
FILE: bin/esvalidate.js
================================================
#!/usr/bin/env node
/*
Copyright JS Foundation and other contributors, https://js.foundation/
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*jslint sloppy:true plusplus:true node:true rhino:true */
/*global phantom:true */
var fs, system, esprima, options, fnames, forceFile, count;
if (typeof esprima === 'undefined') {
// PhantomJS can only require() relative files
if (typeof phantom === 'object') {
fs = require('fs');
system = require('system');
esprima = require('./esprima');
} else if (typeof require === 'function') {
fs = require('fs');
try {
esprima = require('esprima');
} catch (e) {
esprima = require('../');
}
} else if (typeof load === 'function') {
try {
load('esprima.js');
} catch (e) {
load('../esprima.js');
}
}
}
// Shims to Node.js objects when running under PhantomJS 1.7+.
if (typeof phantom === 'object') {
fs.readFileSync = fs.read;
process = {
argv: [].slice.call(system.args),
exit: phantom.exit,
on: function (evt, callback) {
callback();
}
};
process.argv.unshift('phantomjs');
}
// Shims to Node.js objects when running under Rhino.
if (typeof console === 'undefined' && typeof process === 'undefined') {
console = { log: print };
fs = { readFileSync: readFile };
process = {
argv: arguments,
exit: quit,
on: function (evt, callback) {
callback();
}
};
process.argv.unshift('esvalidate.js');
process.argv.unshift('rhino');
}
function showUsage() {
console.log('Usage:');
console.log(' esvalidate [options] [file.js...]');
console.log();
console.log('Available options:');
console.log();
console.log(' --format=type Set the report format, plain (default) or junit');
console.log(' -v, --version Print program version');
console.log();
process.exit(1);
}
options = {
format: 'plain'
};
fnames = [];
process.argv.splice(2).forEach(function (entry) {
if (forceFile || entry === '-' || entry.slice(0, 1) !== '-') {
fnames.push(entry);
} else if (entry === '-h' || entry === '--help') {
showUsage();
} else if (entry === '-v' || entry === '--version') {
console.log('ECMAScript Validator (using Esprima version', esprima.version, ')');
console.log();
process.exit(0);
} else if (entry.slice(0, 9) === '--format=') {
options.format = entry.slice(9);
if (options.format !== 'plain' && options.format !== 'junit') {
console.log('Error: unknown report format ' + options.format + '.');
process.exit(1);
}
} else if (entry === '--') {
forceFile = true;
} else {
console.log('Error: unknown option ' + entry + '.');
process.exit(1);
}
});
if (fnames.length === 0) {
fnames.push('');
}
if (options.format === 'junit') {
console.log('<?xml version="1.0" encoding="UTF-8"?>');
console.log('<testsuites>');
}
count = 0;
function run(fname, content) {
var timestamp, syntax, name;
try {
if (typeof content !== 'string') {
throw content;
}
if (content[0] === '#' && content[1] === '!') {
content = '//' + content.substr(2, content.length);
}
timestamp = Date.now();
syntax = esprima.parse(content, { tolerant: true });
if (options.format === 'junit') {
name = fname;
if (name.lastIndexOf('/') >= 0) {
name = name.slice(name.lastIndexOf('/') + 1);
}
console.log('<testsuite name="' + fname + '" errors="0" ' +
' failures="' + syntax.errors.length + '" ' +
' tests="' + syntax.errors.length + '" ' +
' time="' + Math.round((Date.now() - timestamp) / 1000) +
'">');
syntax.errors.forEach(function (error) {
var msg = error.message;
msg = msg.replace(/^Line\ [0-9]*\:\ /, '');
console.log(' <testcase name="Line ' + error.lineNumber + ': ' + msg + '" ' +
' time="0">');
console.log(' <error type="SyntaxError" message="' + error.message + '">' +
error.message + '(' + name + ':' + error.lineNumber + ')' +
'</error>');
console.log(' </testcase>');
});
console.log('</testsuite>');
} else if (options.format === 'plain') {
syntax.errors.forEach(function (error) {
var msg = error.message;
msg = msg.replace(/^Line\ [0-9]*\:\ /, '');
msg = fname + ':' + error.lineNumber + ': ' + msg;
console.log(msg);
++count;
});
}
} catch (e) {
++count;
if (options.format === 'junit') {
console.log('<testsuite name="' + fname + '" errors="1" failures="0" tests="1" ' +
' time="' + Math.round((Date.now() - timestamp) / 1000) + '">');
console.log(' <testcase name="' + e.message + '" ' + ' time="0">');
console.log(' <error type="ParseError" message="' + e.message + '">' +
e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') +
')</error>');
console.log(' </testcase>');
console.log('</testsuite>');
} else {
console.log(fname + ':' + e.lineNumber + ': ' + e.message.replace(/^Line\ [0-9]*\:\ /, ''));
}
}
}
fnames.forEach(function (fname) {
var content = '';
try {
if (fname && (fname !== '-' || forceFile)) {
content = fs.readFileSync(fname, 'utf-8');
} else {
fname = '';
process.stdin.resume();
process.stdin.on('data', function(chunk) {
content += chunk;
});
process.stdin.on('end', function() {
run(fname, content);
});
return;
}
} catch (e) {
content = e;
}
run(fname, content);
});
process.on('exit', function () {
if (options.format === 'junit') {
console.log('</testsuites>');
}
if (count > 0) {
process.exit(1);
}
if (count === 0 && typeof phantom === 'object') {
process.exit(0);
}
});
================================================
FILE: dist/.gitignore
================================================
================================================
FILE: docs/Makefile
================================================
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Test.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Test.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/Test"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Test"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
================================================
FILE: docs/README.md
================================================
Unix:
```bash
virtualenv env
source env/bin/activate
pip install -r requirements.txt
cd docs
make html
```
Windows:
```bash
virtualenv env
env\Script\activate
pip install -r requirements.txt
cd docs
make html
```
Open the file `_build/html/index.html` in a web browser.
================================================
FILE: docs/_static/custom.css
================================================
div.section pre {
padding: 7px;
}
div.section table {
border-collapse: collapse;
}
div.section table, div.section th, div.section td {
border: 1px solid #bbb;
padding: 8px;
}
div.section table tr th {
background-color: #eee;
}
================================================
FILE: docs/conf.py
================================================
import sys
import os
project = u'Esprima'
author = u'Ariya Hidayat'
version = 'master'
release = 'master'
master_doc = 'index'
exclude_patterns = ['_build']
pygments_style = 'sphinx'
# HTML output
html_theme = "alabaster"
html_theme_options = {
'fixed_sidebar': False,
'logo_name': True,
'description': 'ECMAScript parsing infrastructure for multipurpose analysis',
'logo': 'esprima.png',
'github_user': 'jquery',
'github_repo': 'esprima',
'github_type': 'star',
'font_family': '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif',
'head_font_family': '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif',
'code_font_family': '"Roboto Mono",Menlo,Monaco,Consolas,"Courier New",monospace',
}
html_sidebars = {
'**': [
'about.html',
'searchbox.html',
'navigation.html',
]
}
html_static_path = ['_static']
html_show_sourcelink = False
html_show_sphinx = True
html_show_copyright = False
htmlhelp_basename = 'Testdoc'
# Markdown support
from recommonmark.parser import CommonMarkParser
source_suffix = ['.rst', '.md']
source_parsers = {
'.md': CommonMarkParser,
}
================================================
FILE: docs/getting-started.md
================================================
# Chapter 1. Getting Started
Esprima is a tool to perform lexical and syntactical analysis of JavaScript programs. Esprima itself is also written in JavaScript.
To get the feeling of what Esprima can do, please try its [online parser demo](http://esprima.org/demo/parse.html):

The left panel is a code editor, it can accept any JavaScript source. If the source is a valid JavaScript program, the right panel shows the [syntax tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) as the result of parsing that JavaScript program. The syntax tree can be displayed in its original form (JSON, but formatted) or in its visual form (hierarchical node view).
**Important**: Esprima can only process JavaScript programs. It does not handle other variations of JavaScript such as [Flow](https://flow.org/), [TypeScript](http://www.typescriptlang.org/), etc.
## Supported environments
Since Esprima is written in JavaScript, it can run on various JavaScript environments, including (but not limited to):
* Modern web browsers (the latest version of Edge, Firefox, Chrome, Safari, etc)
* Legacy web browsers (Internet Explorer 10 or later)
* [Node.js](https://nodejs.org/en/) v4 or later
* JavaScript engine in Java, such as [Rhino](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino) and [Nashorn](https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/)
## Using Node.js to play with Esprima
To quickly experiment with Esprima, it is recommended to use Node.js and its interactive [REPL](https://en.wikipedia.org/wiki/REPL).
First, install [Node.js](https://nodejs.org/en/) v4 or later (including its package manager, [npm](https://docs.npmjs.com/)). Then, from the command-line or the terminal, install Esprima npm module:
```
$ npm install esprima
```
To verify that the module is available, use `npm ls`:
```
$ npm ls
/home/ariya/demo
└── esprima@4.0.0
```
The number after the `@` symbol, `4.0.0`, indicates the version of [Esprima package](https://www.npmjs.com/package/esprima) downloaded and installed from the package registry. This may vary from time to time, depending on the latest stable version available for everyone.
To play with Esprima within Node.js, first launch Node.js. Inside its [REPL](https://en.wikipedia.org/wiki/REPL) command prompt, load the module using `require` and then use it, as illustrated in the following session:
```js
$ node
> var esprima = require('esprima')
undefined
> esprima.parseScript('answer = 42')
Script {
type: 'Program',
body: [ ExpressionStatement { type: 'ExpressionStatement', expression: [Object] } ],
sourceType: 'script' }
```
In the above example, the `parse` function of Esprima is invoked with a string containing a simple JavaScript program. The output is an object (printed by Node.js REPL) that is the representation of the program (an assignment expression). This object follows the format described in details in [Appendix A. Syntax Tree Format](syntax-tree-format.html).
If the source given to Esprima parser is not a valid JavaScript program, an exception will be thrown instead. The following example demonstrates that:
```js
$ node
> var esprima = require('esprima')
undefined
> esprima.parseScript('1+')
Error: Line 1: Unexpected end of input
```
To use Esprima in a library or an application designed to be used with Node.js, include `esprima` as a dependency in the `package.json` manifest.
## Using Esprima in a web browser
To use Esprima in a browser environment, it needs to be loaded using the `script` element. For instance, to load Esprima from a CDN such as [unpkg](https://unpkg.com/), the HTML document needs to have the following line:
```html
<script src="https://unpkg.com/esprima@~4.0/dist/esprima.js"></script>
```
When Esprima is loaded this way, it will be available as a global object named `esprima`.
Since Esprima supports [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD) (Asynchronous Module Definition), it can be loaded with a module loader such as [RequireJS](http://requirejs.org/):
```js
require(['esprima'], function (parser) {
// Do something with parser, e.g.
var syntax = parser.parse('var answer = 42');
console.log(JSON.stringify(syntax, null, 4));
});
```
## Using Esprima with Rhino or Nashorn
With [Rhino](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino) or [Nashorn](https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/), Esprima must be loaded from its source using the `load` function, such as:
```js
load('/path/to/esprima.js');
```
The module `esprima` will be available as part of the global object.
The following session with Nashorn shell, [jrunscript](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jrunscript.html), demonstrates the usage:
```js
$ jrunscript
nashorn> load('esprima.js')
nashorn> ast = esprima.parseScript('const answer = 42')
[object Object]
nashorn> print(JSON.stringify(ast, null, 2))
{
"type": "Program",
"body": [
{
"type": "VariableDeclaration",
"declarations": [
{
"type": "VariableDeclarator",
"id": {
"type": "Identifier",
"name": "answer"
},
"init": {
"type": "Literal",
"value": 42,
"raw": "42"
}
}
],
"kind": "const"
}
],
"sourceType": "script"
}
```
================================================
FILE: docs/index.rst
================================================
Esprima
-------
.. toctree::
:maxdepth: 2
:glob:
getting-started
syntactic-analysis
lexical-analysis
syntax-tree-format
================================================
FILE: docs/lexical-analysis.md
================================================
# Chapter 3. Lexical Analysis (Tokenization)
Esprima tokenizer takes a string as an input and produces an array of tokens, a list of object representing categorized input characters.
This is known as _[lexical analysis](https://en.wikipedia.org/wiki/Lexical_analysis)_.
The interface of the `tokenize` function is as follows:
```js
esprima.tokenize(input, config)
```
where
* `input` is a string representing the program to be tokenized
* `config` is an object used to customize the parsing behavior (optional)
The `input` argument is mandatory. Its type must be a string, otherwise the tokenization behavior is not determined.
The description of various properties of `config` is summarized in the following table:
<table>
<tr><th>Name</th> <th>Type</th> <th>Default</th> <th>Description</th></tr>
<tr><td>range</td> <td>Boolean</td> <td>false</td> <td>Annotate each token with its zero-based start and end location</td></tr>
<tr><td>loc</td> <td>Boolean</td> <td>false</td> <td>Annotate each token with its column and row-based location</td></tr>
<tr><td>comment</td> <td>Boolean</td> <td>false</td> <td>Include every line and block comment in the output</td></tr>
</table>
An example Node.js REPL session that demonstrates the use of Esprima tokenizer is:
```js
$ node
> var esprima = require('esprima')
> esprima.tokenize('answer = 42')
[ { type: 'Identifier', value: 'answer' },
{ type: 'Punctuator', value: '=' },
{ type: 'Numeric', value: '42' } ]
```
In the above example, the input string is tokenized into 3 tokens: an identifier, a punctuator, and a number. For each token, the `type` property is a string indicating the type of the token and the `value` property stores the corresponding the _lexeme_, i.e. a string of characters which forms a syntactic unit.
Unlike the `parse` function, the `tokenize` function can work with an input string that does not represent a valid JavaScript program. This is because lexical analysis, as the name implies, does _not_ involve the process of understanding the syntactic structure of the input.
```js
$ node
> var esprima = require('esprima')
> esprima.tokenize('42 = answer')
[ { type: 'Numeric', value: '42' },
{ type: 'Punctuator', value: '=' },
{ type: 'Identifier', value: 'answer' } ]
> esprima.tokenize('while (if {}')
[ { type: 'Keyword', value: 'while' },
{ type: 'Punctuator', value: '(' },
{ type: 'Keyword', value: 'if' },
{ type: 'Punctuator', value: '{' },
{ type: 'Punctuator', value: '}' } ]
```
## Token Location
By default, each token in the array returned by the tokenizer only has two properties, the _type_ of the token and the _lexeme_. For some use cases, the location of each token needs to be known as well (e.g. to offer a meaningful feedback to the user). Esprima tokenizer can add that location information to each token in two forms, zero-based range and line-column location. This is done by customizing the tokenization process with the configuration object.
Setting `range` (in the configuration object) to true adds a new property, `range`, to each token. It is an array of two elements, each indicating the zero-based index of the _starting_ and _end_ location (exclusive) of the token. A simple example follows:
```js
$ node
> var esprima = require('esprima')
> esprima.tokenize('answer = 42', { range: true })
[ { type: 'Identifier', value: 'answer', range: [ 0, 6 ] },
{ type: 'Punctuator', value: '=', range: [ 7, 8 ] },
{ type: 'Numeric', value: '42', range: [ 9, 11 ] } ]
```
In the above example, the starting and end location of each token can be determined from its range property. For instance, the equal sign (`=`) is the 7th character in the input string, because its range is `[7, 8]`.
Setting `loc` to true adds a new property, `loc`, to each token. It is a object that contains the _line number_ and _column number_ of the starting and end location (exclusive) of the token. This is illustrated in the example:
```js
$ node
> var esprima = require('esprima')
> tokens = esprima.tokenize('answer = 42', { loc: true });
> tokens[2]
{ type: 'Numeric',
value: '42',
loc: { start: { line: 1, column: 9 }, end: { line: 1, column: 11 } } }
```
Note that the line number is _one-based_ while the column number is _zero-based_.
It is possible to set both `range` and `loc` to true, thereby giving each token the most complete location information.
## Line and Block Comments
By default, Esprima tokenizer ignores every line and block comment. If each comment needs to be included in the output, then the property `comment` in the configuration object needs to be set to true. To illustrate this, compare the following simple tokenization:
```js
$ node
> var esprima = require('esprima')
> esprima.tokenize('/* answer */ 42')
[ { type: 'Numeric', value: '42' } ]
```
with the following situation where the token array also contains the block comment:
```js
$ node
> var esprima = require('esprima')
> esprima.tokenize('/* answer */ 42', { comment: true })
[ { type: 'BlockComment', value: ' answer ' },
{ type: 'Numeric', value: '42' } ]
```
If the location of each comment is needed, enable the location information using `range` and/or `loc` (as explained in the previous section):
```js
$ node
> var esprima = require('esprima')
> esprima.tokenize('/* answer */ 42', { comment: true, range: true })
[ { type: 'BlockComment', value: ' answer ', range: [ 0, 12 ] },
{ type: 'Numeric', value: '42', range: [ 13, 15 ] } ]
```
## Limitation on Keywords
Since a tokenization process does not have the context of the syntactic structure, it is unable to infer properly that a particular reserved word is being used not as a keyword. Therefore, it always classifies a reserved word as keyword. A simple example to illustrate this limitation:
```js
$ node
> var esprima = require('esprima')
> esprima.tokenize('x.if = 1')
[ { type: 'Identifier', value: 'x' },
{ type: 'Punctuator', value: '.' },
{ type: 'Keyword', value: 'if' },
{ type: 'Punctuator', value: '=' },
{ type: 'Numeric', value: '1' } ]
```
In the above session, the type of the `if` token is `Keyword`.
This is however different than what will be obtained using Esprima parser since the parser correctly matches the `if` token as an object property and therefore constructs an associated `Identifier` node, not a `Keyword` node.
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('x.if = 1').body[0].expression.left.property
Identifier { type: 'Identifier', name: 'if' }
```
## Limitation on JSX
[JSX](http://facebook.github.io/jsx/) is a syntax extension to JavaScript, popularly known to build web applications using [React](https://facebook.github.io/react/). JSX is not part of any [official ECMAScript specification](http://www.ecma-international.org/publications/standards/Ecma-262.htm).
Esprima tokenizer is unable to process input source that contains a mix of JavaScript code and JSX. This is because switching to JSX mode requires an understanding of the context, which a tokenizer does not have. In particular, a closing JSX element (such as `</title>`) confuses the tokenizer since the forward slash (`/`) is identified as the start of a regular expression.
## Example: Syntax Highlighting
The following Node.js script demonstrates the use of Esprima tokenizer to apply [syntax highlighting](https://en.wikipedia.org/wiki/Syntax_highlighting) of JavaScript code fragment. It accepts the input from `stdin` and produces color coded version to `stdout` by using [ANSI escape code](https://en.wikipedia.org/wiki/ANSI_escape_code).
```js
const esprima = require('esprima');
const readline = require('readline');
const CYAN = '\x1b[36m';
const RESET = '\x1b[0m'
let source = '';
readline.createInterface({ input: process.stdin, terminal: false })
.on('line', line => { source += line + '\n' })
.on('close', () => {
const tokens = esprima.tokenize(source, { range: true });
const ids = tokens.filter(x => x.type === 'Identifier');
const markers = ids.sort((a, b) => { return b.range[0] - a.range[0] });
markers.forEach(t => {
const id = CYAN + t.value + RESET;
const start = t.range[0];
const end = t.range[1];
source = source.slice(0, start) + id + source.slice(end);
});
console.log(source);
});
```
An example run is shown in the following screenshot (the script is called `highlight.js`):

The script uses the [readline module](https://nodejs.org/api/readline.html) to read the input line-by-line, collecting each line to a local string buffer. Once there is no more input, it invokes Esprima tokenizer to break the source into a list of tokens. The script only cares about identifier tokens, hence the filtering. For each token, the starting location is used to determine where to insert the [escape code](https://en.wikipedia.org/wiki/ANSI_escape_code) to change the color to cyan and the end location is used to reset the color. This is done from the last identifier token to the first identifier token, which necessities the sorting in reverse order.
For a real-world syntax highlighter that has many more features, take a look at _cardinal_ (source repository: [github.com/thlorenz/cardinal](https://github.com/thlorenz/cardinal)). It uses a similar approach, i.e. using Esprima tokenizer to break the source into tokens and then wrap each token with a type-specific color.
================================================
FILE: docs/requirements.txt
================================================
sphinx-rtd-theme
sphinx
recommonmark
================================================
FILE: docs/syntactic-analysis.md
================================================
# Chapter 2. Syntactic Analysis (Parsing)
The main use case of Esprima is to parse a JavaScript program. This is also known as _[syntactic analysis](https://en.wikipedia.org/wiki/Parsing)_.
Esprima parser takes a string representing a valid JavaScript program and produces a [syntax tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree), an ordered tree that describes the syntactic structure of the program. The resulting syntax tree is useful for various purposes, from [program transformation](https://en.wikipedia.org/wiki/Program_transformation) to [static program analysis](https://en.wikipedia.org/wiki/Static_program_analysis).
The interface of the `parseScript`/`parseModule` function is as follows:
```js
esprima.parseScript(input, config, delegate)
esprima.parseModule(input, config, delegate)
```
where
* `input` is the string representing the program to be parsed
* `config` is an object used to customize the parsing behavior (optional)
* `delegate` is a callback function invoked for every single node (optional)
The `input` argument is mandatory. Its type must be a string, otherwise the parsing behavior is not determined. The other two arguments, `config` and `delegate`, are optional.
The object returned by the `parseScript`/`parseModule` function is the [syntax tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree), following the format described in details in [Appendix A. Syntax Tree Format](syntax-tree-format.html).
The description of various parsing configuration is summarized in the following table:
<table>
<tr><th>Name</th> <th>Type</th> <th>Default</th> <th>Description</th></tr>
<tr><td>jsx</td> <td>Boolean</td> <td>false</td> <td>Support JSX syntax</td></tr>
<tr><td>range</td> <td>Boolean</td> <td>false</td> <td>Annotate each node with its index-based location</td></tr>
<tr><td>loc</td> <td>Boolean</td> <td>false</td> <td>Annotate each node with its column and row-based location</td></tr>
<tr><td>tolerant</td> <td>Boolean</td> <td>false</td> <td>Tolerate a few cases of syntax errors</td></tr>
<tr><td>tokens</td> <td>Boolean</td> <td>false</td> <td>Collect every token</td></tr>
<tr><td>comment</td> <td>Boolean</td> <td>false</td> <td>Collect every line and block comment</td></tr>
</table>

The previous chapter, [Getting Started](getting-started.html), already demonstrates the simplest possible example of using Esprima parser. To use it as the basis for further experiments, use Runkit and tweak the existing demo notebook: [runkit.com/ariya/esprima-parse-demo](https://runkit.com/ariya/esprima-parse-demo).
## Distinguishing a Script and a Module
With ES2015 and later, a JavaScript program can be either [a script or a module](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-ecmascript-language-scripts-and-modules). It is a very important distinction, a parser such as Esprima needs to know the type of the source to be able to analyze its syntax correctly. This is achieved by choosing `parseScript` function to parse a script and `parseModule` function to parse a module.
An example of parsing a script:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('answer = 42');
Script {
type: 'Program',
body: [ ExpressionStatement { type: 'ExpressionStatement', expression: [Object] } ],
sourceType: 'script' }
```
An example of parsing a module:
```js
$ node
> var esprima = require('esprima')
> esprima.parseModule('import { sqrt } from "math.js"');
Module {
type: 'Program',
body:
[ ImportDeclaration {
type: 'ImportDeclaration',
specifiers: [Object],
source: [Object] } ],
sourceType: 'module' }
```
Failing to choose the correct parsing function can lead to a _mistaken_ observation that Esprima does not support a certain syntax. Take a look at this example:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('export const answer = 42');
Error: Line 1: Unexpected token
```
Instead of producing the syntax tree, the parser throws an exception. This is the correct behavior, an `export` statement can only be part of a module, not a script. Thus, the parser properly determines that such a source program is invalid.
*Note*: In the previous versions (Esprima <= 3.1), there was a single parsing function, `parse`. To distinguish between parsing a script and a module, the `sourceType` property in the configuration object needs to be specified, either as `"script"` (also the default value) or `"module"`. While this `parse` function is still supported in Esprima 4 for API backward compatibility, its usage is highly discouraged and the support for it may be removed in a future version.
## JSX Syntax Support
[JSX](http://facebook.github.io/jsx/) is a syntax extension to JavaScript, popularly known to build web applications using [React](https://facebook.github.io/react/). JSX is not part of any [official ECMAScript specification](http://www.ecma-international.org/publications/standards/Ecma-262.htm). Application code using JSX is typically preprocessed first into standard JavaScript.
Esprima parser fully understands JSX syntax when `jsx` flag in the parsing configuration object is set to true, as illustrated in the following example:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('var el= <title>${product}</title>', { jsx: true });
Script {
type: 'Program',
body:
[ VariableDeclaration {
type: 'VariableDeclaration',
declarations: [Object],
kind: 'var' } ],
sourceType: 'script' }
```
## Browser Compatibility
In a certain specific case, Esprima parser _intentionally_ does not throw an exception (indicating a syntax error) although the input being parsed is not valid. This is to achieve an implementation compatibility with major web browsers. For further details, refer to the official [ECMAScript 2015 Language Specification](http://www.ecma-international.org/publications/standards/Ecma-262.htm), Section B.3.3 on **Block-Level Function Declarations Web Legacy Compatibility Semantics**:
> Prior to ECMAScript 2015, the ECMAScript specification did not define the occurrence of a _FunctionDeclaration_ as an element of a _Block_ statement's _StatementList_. However, support for that form of _FunctionDeclaration_ was an allowable extension and most browser-hosted ECMAScript implementations permitted them.
This is illustrated in the following example:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('if (x) function y() {}')
Script {
type: 'Program',
body:
[ IfStatement {
type: 'IfStatement',
test: [Object],
consequent: [Object],
alternate: null } ],
sourceType: 'script' }
```
In the above example, Esprima parser returns a syntax tree for the code (it does not throw an exception) even though the input is invalid according to the specification, i.e. declaring a function inside the block of an If statement is not possible. In this case, the behavior of Esprima is the same as the popular web browsers such as Firefox, Chrome, Safari, and many others.
## Tolerant Mode
When Esprima parser is given an input that does not represent a valid JavaScript program, it throws an exception. With the tolerant mode however, the parser _may_ choose to continue parsing and produce a syntax tree. This is best demonstrated with an example.
Consider the following parsing session. The exception is expected, since a `with` statement is not permitted in strict mode.
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('"use strict"; with (x) {}')
Error: Line 1: Strict mode code may not include a with statement
```
If the tolerant mode is activated by setting the `tolerant` flag to true in the parsing configuration, the parser behaves differently:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('"use strict"; with (x) {}', { tolerant: true })
Script {
type: 'Program',
body:
[ Directive {
type: 'ExpressionStatement',
expression: [Object],
directive: 'use strict' },
WithStatement { type: 'WithStatement', object: [Object], body: [Object] } ],
sourceType: 'script',
errors:
[ { Error: Line 1: Strict mode code may not include a with statement
index: 13,
lineNumber: 1,
description: 'Strict mode code may not include a with statement' } ] }
```
In the above case, the parser does not throw an exception and it still returns a syntax tree. However, it also adds a new array named `errors`, it contains each and every syntax error that the parser manages to tolerate without causing it to stop right away. Each entry in the `errors` has the detailed information regarding the error, including the description and the location.
Note that the tolerant mode is intended to deal with very few types of syntax errors. It is unable to robustly handle every possible invalid program.
## Regular Expression Literals
Esprima does not implement logic to fully parse ECMAScript regular expressions. Instead, it delegates this responsibility to the JavaScript engine in which it executed (i.e. via the built-in `RegExp` function). This approach means that Esprima may respond to the same input differently depending on the JavaScript engine in use. It will exhibit the same bugs and features of the regular expression parser in the host environment.
## Node Location
By default, Esprima parser produces an [abstract syntax tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree). For some use cases, this abstract syntax tree is not sufficient. For instance, having the location information of each node is necessary in a few cases of static analysis, e.g. to give a meaningful feedback to the user.
To have each node carries some additional properties indicating its location, the parser must be invoked by specifying the flags, `range` or `loc` or both of them, in the parsing configuration.
Setting the `range` flag to true adds a new property, `range`, to each node. It is an array of two elements, each indicating the zero-based index of the starting and end location (exclusive) of the node. A simple example follows:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('answer = 42', { range: true })
Script {
type: 'Program',
body:
[ ExpressionStatement {
type: 'ExpressionStatement',
expression: [Object],
range: [Object] } ],
sourceType: 'script',
range: [ 0, 11 ] }
```
The top-level _Program_ node has the range [0, 11]. This indicates that the program starts from the zeroth character and finishes before the 11th character.
A subsequent example to inspect the numeric literal 42 on the right side of the assignment:
```js
$ node
> var esprima = require('esprima')
> var program = esprima.parseScript('answer = 42', { range: true })
> program.body[0].expression.right
Literal { type: 'Literal', value: 42, raw: '42', range: [ 9, 11 ] }
```
In the above example, the location of the _Literal_ node is determined to be [9, 11]. In other words, the ninth and the tenth characters (the eleventh is excluded) of the source correspond to the numeric literal `42`.
Setting the `loc` flag to true adds a new property, `loc`, to each node. It is a object that contains the line number and column number of the starting and end location (exclusive) of the node. It is illustrated in this example:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('answer = 42', { loc: true })
Script {
type: 'Program',
body:
[ ExpressionStatement {
type: 'ExpressionStatement',
expression: [Object],
loc: [Object] } ],
sourceType: 'script',
loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 11 } } }
```
Note that the line number is _one-based_ while the column number is _zero-based_.
It is possible to set both `range` and `loc` to true, thereby giving each token the most complete location information.
## Handling Hashbang/Shebang
In a Unix environment, a shell script often has its first line marked by a hashbang or a shebang, `#!`. A common example is a utility intended to be executed by Node.js, which may look like the following:
```js
#!/usr/bin/env node
console.log('Hello from Node.js!');
```
If Esprima parser is being used to process the content of the above file, the parser will throw an exception. This is because that hashbang is not valid in JavaScript. A quick Node.js REPL session to illustrate the point:
```js
$ node
> var esprima = require('esprima')
> var src = ['#!/usr/bin/env node', 'answer = 42'].join('\n')
> esprima.parseScript(src)
Error: Line 1: Unexpected token ILLEGAL
```
The workaround for this problem is to remove the first line completely before passing it to the parser. One way to do that is to use a regular expression, as shown below:
```js
$ node
> var esprima = require('esprima')
> var src = ['#!/usr/bin/env node', 'answer = 42'].join('\n')
> src = src.replace(/^#!(.*\n)/, '')
'answer = 42'
> esprima.parseScript(src)
Script {
type: 'Program',
body: [ ExpressionStatement { type: 'ExpressionStatement', expression: [Object] } ],
sourceType: 'script' }
```
Note that the above approach will shorten the source string. If the string length needs to be preserved, e.g. to facilitate an exact location mapping to the original version, then a series of whitespaces need to be padded to the beginning. A modified approach looks like the following:
```js
$ node
> var esprima = require('esprima')
> var src = ['#!/usr/bin/env node', 'answer = 42'].join('\n')
> src = src.replace(/(^#!.*)/, function(m) { return Array(m.length + 1).join(' ') });
> esprima.parseScript(src, { range: true })
Script {
type: 'Program',
body:
[ ExpressionStatement {
type: 'ExpressionStatement',
expression: [Object],
range: [Object] } ],
sourceType: 'script',
range: [ 15, 26 ] }
```
## Token Collection
When Esprima parser is performing the syntactical analysis, first it needs to break down the source into a series of tokens. By default, the tokens are not stored as part of the parsing result. It is possible to keep the tokens found during the parsing by setting the `tokens` flag in the configuration object to true. Take a look at this example:
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('const answer = 42', { tokens: true })
Script {
type: 'Program',
body:
[ VariableDeclaration {
type: 'VariableDeclaration',
declarations: [Object],
kind: 'const' } ],
sourceType: 'script',
tokens:
[ { type: 'Keyword', value: 'const' },
{ type: 'Identifier', value: 'answer' },
{ type: 'Punctuator', value: '=' },
{ type: 'Numeric', value: '42' } ] }
```
The output of the parser now contains an additional property, an array named `tokens`. Every element in this array is the token found during the parsing process. For each token, the `type` property is a string indicating the type of the token and the `value` property stores the corresponding the _lexeme_, i.e. a string of characters which forms a syntactic unit.
The token also contains its location, if the parsing configuration has the flag `range` or `loc` (or both), as shown in the following example:
```js
$ node
> var esprima = require('esprima')
> var output = esprima.parseScript('const answer = 42', { tokens: true, range: true })
> output.tokens
[ { type: 'Keyword', value: 'const', range: [ 0, 5 ] },
{ type: 'Identifier', value: 'answer', range: [ 6, 12 ] },
{ type: 'Punctuator', value: '=', range: [ 13, 14 ] },
{ type: 'Numeric', value: '42', range: [ 15, 17 ] } ]
```
To tokenize a program without parsing it at all, refer to [Chapter 3. Lexical Analysis (Tokenization)](lexical-analysis.html).
## Comment Collection
Comments do not affect the syntax of a JavaScript program and therefore they are ignored by Esprima parser. However, if it is important to collect every single-line and multi-line comment in the program, Esprima parser can be instructed to collect them by setting the `comment` flag in the parsing configuration to true.
Consider the following example. The output of the parser has an additional property, an array named `comments`. Every element in this array indicates a single-line or a mult-line comment encountered during the parsing process.
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('answer = 42 // TODO: why', { comment: true })
Script {
type: 'Program',
body: [ ExpressionStatement { type: 'ExpressionStatement', expression: [Object] } ],
sourceType: 'script',
comments: [ { type: 'Line', value: ' TODO: why' } ] }
```
The type of each comment can either be _Line_ for a single-line comment (`//` towards the end-of-line) or _Block_ for a multi-line comment (enclosed by `/*` and `*/`).
```js
$ node
> var esprima = require('esprima')
> esprima.parseScript('/*everything*/ answer = 42', { comment: true })
Script {
type: 'Program',
body: [ ExpressionStatement { type: 'ExpressionStatement', expression: [Object] } ],
sourceType: 'script',
comments: [ { type: 'Block', value: 'everything' } ] }
```
Each comment can also contain its location, if the parsing configuration has the flag `range` or `loc` (or both), illustrated here:
```js
$ node
> var esprima = require('esprima')
> output = esprima.parseScript('answer = 42 // TODO: why', { comment: true, range: true });
> output.comments
[ { type: 'Line', value: ' TODO: why', range: [ 12, 24 ] } ]
```
## Syntax Delegate
The last argument in the `parseScript`/`parseModule` function is a delegate, a callback function invoked for each syntax node (as the node is constructed) with two arguments, the node object itself and the node metadata. The metadata contains the start and end location of the node.
The shortest Node.js script that illustrates the delegate is the following:
```js
var esprima = require('esprima');
esprima.parseScript('answer = 42', {}, function (node) {
console.log(node.type);
});
```
If the script is called `delegate.js`, running it with Node.js gives the output:
```js
$ node delegate.js
Identifier
Literal
AssignmentExpression
ExpressionStatement
Program
```
In the above example, the callback function only does one simple thing: printing the type of the node. The first two calls are with the deepest nodes (which are also leaves), an _Identifier_ node representing `answer` and a _Literal_ node for `42`. The next is with an _AssignmentExpression_ node that combines the previous two nodes (`answer = 42`). It is then followed by the only statement in the code fragment, an _ExpressionStatement_ node. The last one, as with every syntax tree, is always the top-level _Program_ node.
The order of the nodes being passed as the argument for the callback function resembles a tree traversal using the [depth-first algorithm](https://en.wikipedia.org/wiki/Depth-first_search).
If each single-line and multi-line comment must be passed to the callback function as well, the `comment` flag in the parsing configuration needs to be true. A modified `delegate.js` and its new result (note the addition of _LineComment_ node type):
```js
$ cat delegate.js
var esprima = require('esprima');
esprima.parseScript('answer = 42 // FIXME', { comment: true }, function (node) {
console.log(node.type);
});
$ node delegate.js
Identifier
LineComment
Literal
AssignmentExpression
ExpressionStatement
Program
```
The second argument passed to the callback function, the metadata, can be used to locate the node. It is illustrated in the following example:
```js
$ cat delegate.js
var esprima = require('esprima');
esprima.parseScript('answer = 42', {}, function (node, metadata) {
console.log(node.type, metadata);
});
$ node delegate.js
Identifier { start: { line: 1, column: 0, offset: 0 },
end: { line: 1, column: 6, offset: 6 } }
Literal { start: { line: 1, column: 9, offset: 9 },
end: { line: 1, column: 11, offset: 11 } }
AssignmentExpression { start: { line: 1, column: 0, offset: 0 },
end: { line: 1, column: 11, offset: 11 } }
ExpressionStatement { start: { line: 1, column: 0, offset: 0 },
end: { line: 1, column: 11, offset: 11 } }
Program { start: { line: 1, column: 0, offset: 0 },
end: { line: 1, column: 11, offset: 11 } }
```
## Example: console Calls Removal
The following Node.js script demonstrates the use of Esprima parser to remove every single expression that represents a `console` call. The script accepts the input from `stdin` and displays the result to `stdout`. The entire script comprises approximately 30 lines of code.
```js
const esprima = require('esprima');
const readline = require('readline');
// console.log(x) or console['error'](y)
function isConsoleCall(node) {
return (node.type === 'CallExpression') &&
(node.callee.type === 'MemberExpression') &&
(node.callee.object.type === 'Identifier') &&
(node.callee.object.name === 'console');
}
function removeCalls(source) {
const entries = [];
esprima.parseScript(source, {}, function (node, meta) {
if (isConsoleCall(node)) {
entries.push({
start: meta.start.offset,
end: meta.end.offset
});
}
});
entries.sort((a, b) => { return b.end - a.end }).forEach(n => {
source = source.slice(0, n.start) + source.slice(n.end);
});
return source;
}
let source = '';
readline.createInterface({ input: process.stdin, terminal: false })
.on('line', line => { source += line + '\n' })
.on('close', () => { console.log(removeCalls(source)) });
```
An example run is shown in the following screenshot (the script is called `unconsole.js`). Note that the single call to `console.log` is eliminated in the output.

The script uses the [readline module](https://nodejs.org/api/readline.html) to read the input line-by-line, collecting each line to a buffer. Once there is no more input, it uses Esprima parser and utilizes the syntax delegate feature with a callback function that looks for a particular type of syntax node, i.e. a call expression with `console` object as the callee. The logic inside the `isConsoleCall` function is intended to match such a node. As an illustration, using the [Esprima online demo](http://esprima.org/demo/parse.html) to parse `console.log("Hello")` will reveal the following syntax tree:

For each matched node, the node location is recorded. Once the parsing is completed, the list of the location of every matched call expression with `console` is used to modify the source, i.e. the portion of the source corresponding to the call expression is removed. When it is done repeatedly, the result is that every single `console` call will disappear. Note how this is done from the last one to the first one (reflected by the sorting in the reverse order) to maintain the correct offset throughout the process.
================================================
FILE: docs/syntax-tree-format.md
================================================
# Appendix A. Syntax Tree Format
Esprima syntax tree format is derived from the original version of [Mozilla Parser API](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Parser_API), which is then formalized and expanded as the [ESTree specification](https://github.com/estree/estree).
**Note**: In the following sections, interfaces are described using the syntax of [TypeScript interface](https://www.typescriptlang.org/docs/handbook/interfaces.html).
Each node is represented as a regular JavaScript object that implements the interface:
```js
interface Node {
type: string;
}
```
The `type` property is a string that contains the variant type of the node. Each subtype of _Node_ is explained in the subsequent sections.
When the node is annotated with [its location](syntactic-analysis.html#node-location), the interface becomes:
```js
interface Node {
type: string;
range?: [number, number];
loc?: SourceLocation;
}
```
with the source location defined as:
```js
interface Position {
line: number;
column: number;
}
interface SourceLocation {
start: Position;
end: Position;
source?: string | null;
}
```
## Expressions and Patterns
A binding pattern can be one of the following:
```js
type BindingPattern = ArrayPattern | ObjectPattern;
```
An expression can be one of the following:
```js
type Expression = ThisExpression | Identifier | Literal |
ArrayExpression | ObjectExpression | FunctionExpression | ArrowFunctionExpression | ClassExpression |
TaggedTemplateExpression | MemberExpression | Super | MetaProperty |
NewExpression | CallExpression | UpdateExpression | AwaitExpression | UnaryExpression |
BinaryExpression | LogicalExpression | ConditionalExpression |
YieldExpression | AssignmentExpression | SequenceExpression;
```
### Array Pattern
```js
interface ArrayPattern {
type: 'ArrayPattern';
elements: ArrayPatternElement[];
}
```
with
```js
type ArrayPatternElement = AssignmentPattern | Identifier | BindingPattern | RestElement | null;
interface RestElement {
type: 'RestElement';
argument: Identifier | BindingPattern;
}
```
### Assignment Pattern
```js
interface AssignmentPattern {
type: 'AssignmentPattern';
left: Identifier | BindingPattern;
right: Expression;
}
```
### Object Pattern
```js
interface ObjectPattern {
type: 'ObjectPattern';
properties: Property[];
}
```
### This Expression
```js
interface ThisExpression {
type: 'ThisExpression';
}
```
### Identifier
```js
interface Identifier {
type: 'Identifier';
name: string;
}
```
### Literal
```js
interface Literal {
type: 'Literal';
value: boolean | number | string | RegExp | null;
raw: string;
regex?: { pattern: string, flags: string };
}
```
The `regex` property only applies to regular expression literals.
### Array Expression
```js
interface ArrayExpression {
type: 'ArrayExpression';
elements: ArrayExpressionElement[];
}
```
where
```js
type ArrayExpressionElement = Expression | SpreadElement;
```
### Object Expression
```js
interface ObjectExpression {
type: 'ObjectExpression';
properties: Property[];
}
```
where
```js
interface Property {
type: 'Property';
key: Expression;
computed: boolean;
value: Expression | null;
kind: 'get' | 'set' | 'init';
method: false;
shorthand: boolean;
}
```
### Function Expression
```js
interface FunctionExpression {
type: 'FunctionExpression';
id: Identifier | null;
params: FunctionParameter[];
body: BlockStatement;
generator: boolean;
async: boolean;
expression: boolean;
}
```
with
```js
type FunctionParameter = AssignmentPattern | Identifier | BindingPattern;
```
The value of `generator` is true for a generator expression.
### Arrow Function Expression
```js
interface ArrowFunctionExpression {
type: 'ArrowFunctionExpression';
id: Identifier | null;
params: FunctionParameter[];
body: BlockStatement | Expression;
generator: boolean;
async: boolean;
expression: false;
}
```
### Class Expression
```js
interface ClassExpression {
type: 'ClassExpression';
id: Identifier | null;
superClass: Identifier | null;
body: ClassBody;
}
```
with
```js
interface ClassBody {
type: 'ClassBody';
body: MethodDefinition[];
}
interface MethodDefinition {
type: 'MethodDefinition';
key: Expression | null;
computed: boolean;
value: FunctionExpression | null;
kind: 'method' | 'constructor';
static: boolean;
}
```
### Tagged Template Expression
```js
interface TaggedTemplateExpression {
type: 'TaggedTemplateExpression';
readonly tag: Expression;
readonly quasi: TemplateLiteral;
}
```
with
```js
interface TemplateElement {
type: 'TemplateElement';
value: { cooked: string; raw: string };
tail: boolean;
}
interface TemplateLiteral {
type: 'TemplateLiteral';
quasis: TemplateElement[];
expressions: Expression[];
}
```
### Member Expression
```js
interface MemberExpression {
type: 'MemberExpression';
computed: boolean;
object: Expression;
property: Expression;
}
```
### Super
```js
interface Super {
type: 'Super';
}
```
### MetaProperty
```js
interface MetaProperty {
type: 'MetaProperty';
meta: Identifier;
property: Identifier;
}
```
### Call and New Expressions
```js
interface CallExpression {
type: 'CallExpression';
callee: Expression | Import;
arguments: ArgumentListElement[];
}
interface NewExpression {
type: 'NewExpression';
callee: Expression;
arguments: ArgumentListElement[];
}
```
with
```js
interface Import {
type: 'Import';
}
type ArgumentListElement = Expression | SpreadElement;
interface SpreadElement {
type: 'SpreadElement';
argument: Expression;
}
```
### Update Expression
```js
interface UpdateExpression {
type: 'UpdateExpression';
operator: '++' | '--';
argument: Expression;
prefix: boolean;
}
```
### Await Expression
```js
interface AwaitExpression {
type: 'AwaitExpression';
argument: Expression;
}
```
### Unary Expression
```js
interface UnaryExpression {
type: 'UnaryExpression';
operator: '+' | '-' | '~' | '!' | 'delete' | 'void' | 'typeof';
argument: Expression;
prefix: true;
}
```
### Binary Expression
```js
interface BinaryExpression {
type: 'BinaryExpression';
operator: 'instanceof' | 'in' | '+' | '-' | '*' | '/' | '%' | '**' |
'|' | '^' | '&' | '==' | '!=' | '===' | '!==' |
'<' | '>' | '<=' | '<<' | '>>' | '>>>';
left: Expression;
right: Expression;
}
```
### Logical Expression
```js
interface LogicalExpression {
type: 'LogicalExpression';
operator: '||' | '&&';
left: Expression;
right: Expression;
}
```
### Conditional Expression
```js
interface ConditionalExpression {
type: 'ConditionalExpression';
test: Expression;
consequent: Expression;
alternate: Expression;
}
```
### Yield Expression
```js
interface YieldExpression {
type: 'YieldExpression';
argument: Expression | null;
delegate: boolean;
}
```
### Assignment Expression
```js
interface AssignmentExpression {
type: 'AssignmentExpression';
operator: '=' | '*=' | '**=' | '/=' | '%=' | '+=' | '-=' |
'<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|=';
left: Expression;
right: Expression;
}
```
### Sequence Expression
```js
interface SequenceExpression {
type: 'SequenceExpression';
expressions: Expression[];
}
```
## Statements and Declarations
A statement can be one of the following:
```js
type Statement = BlockStatement | BreakStatement | ContinueStatement |
DebuggerStatement | DoWhileStatement | EmptyStatement |
ExpressionStatement | ForStatement | ForInStatement |
ForOfStatement | FunctionDeclaration | IfStatement |
LabeledStatement | ReturnStatement | SwitchStatement |
ThrowStatement | TryStatement | VariableDeclaration |
WhileStatement | WithStatement;
```
A declaration can be one of the following:
```js
type Declaration = ClassDeclaration | FunctionDeclaration | VariableDeclaration;
```
A statement list item is either a statement or a declaration:
```js
type StatementListItem = Declaration | Statement;
```
### Block Statement
A series of statements enclosed by a pair of curly braces form a block statement:
```js
interface BlockStatement {
type: 'BlockStatement';
body: StatementListItem[];
}
```
### Break Statement
```js
interface BreakStatement {
type: 'BreakStatement';
label: Identifier | null;
}
```
### Class Declaration
```js
interface ClassDeclaration {
type: 'ClassDeclaration';
id: Identifier | null;
superClass: Identifier | null;
body: ClassBody;
}
```
### Continue Statement
```js
interface ContinueStatement {
type: 'ContinueStatement';
label: Identifier | null;
}
```
### Debugger Statement
```js
interface DebuggerStatement {
type: 'DebuggerStatement';
}
```
### Do-While Statement
```js
interface DoWhileStatement {
type: 'DoWhileStatement';
body: Statement;
test: Expression;
}
```
### Empty Statement
```js
interface EmptyStatement {
type: 'EmptyStatement';
}
```
### Expression Statement
```js
interface ExpressionStatement {
type: 'ExpressionStatement';
expression: Expression;
directive?: string;
}
```
When the expression statement represents a directive (such as `"use strict"`), then the `directive` property will contain the directive string.
### For Statement
```js
interface ForStatement {
type: 'ForStatement';
init: Expression | VariableDeclaration | null;
test: Expression | null;
update: Expression | null;
body: Statement;
}
```
### For-In Statement
```js
interface ForInStatement {
type: 'ForInStatement';
left: Expression | VariableDeclaration;
right: Expression;
body: Statement;
each: false;
}
```
### For-Of Statement
```js
interface ForOfStatement {
type: 'ForOfStatement';
await: boolean;
left: Expression | VariableDeclaration;
right: Expression;
body: Statement;
}
```
### Function Declaration
```js
interface FunctionDeclaration {
type: 'FunctionDeclaration';
id: Identifier | null;
params: FunctionParameter[];
body: BlockStatement;
generator: boolean;
async: boolean;
expression: false;
}
```
with
```js
type FunctionParameter = AssignmentPattern | Identifier | BindingPattern;
```
### If Statement
```js
interface IfStatement {
type: 'IfStatement';
test: Expression;
consequent: Statement;
alternate?: Statement;
}
```
### Labelled Statement
A statement prefixed by a label becomes a labelled statement:
```js
interface LabeledStatement {
type: 'LabeledStatement';
label: Identifier;
body: Statement;
}
```
### Return Statement
```js
interface ReturnStatement {
type: 'ReturnStatement';
argument: Expression | null;
}
```
### Switch Statement
```js
interface SwitchStatement {
type: 'SwitchStatement';
discriminant: Expression;
cases: SwitchCase[];
}
```
with
```js
interface SwitchCase {
type: 'SwitchCase';
test: Expression | null;
consequent: Statement[];
}
```
### Throw Statement
```js
interface ThrowStatement {
type: 'ThrowStatement';
argument: Expression;
}
```
### Try Statement
```js
interface TryStatement {
type: 'TryStatement';
block: BlockStatement;
handler: CatchClause | null;
finalizer: BlockStatement | null;
}
```
with
```js
interface CatchClause {
type: 'CatchClause';
param: Identifier | BindingPattern;
body: BlockStatement;
}
```
### Variable Declaration
```js
interface VariableDeclaration {
type: 'VariableDeclaration';
declarations: VariableDeclarator[];
kind: 'var' | 'const' | 'let';
}
```
with
```js
interface VariableDeclarator {
type: 'VariableDeclarator';
id: Identifier | BindingPattern;
init: Expression | null;
}
```
### While Statement
```js
interface WhileStatement {
type: 'WhileStatement';
test: Expression;
body: Statement;
}
```
### With Statement
```js
interface WithStatement {
type: 'WithStatement';
object: Expression;
body: Statement;
}
```
## Scripts and Modules
A program can be either a script or a module.
```js
interface Program {
type: 'Program';
sourceType: 'script';
body: StatementListItem[];
}
interface Program {
type: 'Program';
sourceType: 'module';
body: ModuleItem[];
}
```
with
```js
type StatementListItem = Declaration | Statement;
type ModuleItem = ImportDeclaration | ExportDeclaration | StatementListItem;
```
### Import Declaration
```js
type ImportDeclaration {
type: 'ImportDeclaration';
specifiers: ImportSpecifier[];
source: Literal;
}
```
with
```js
interface ImportSpecifier {
type: 'ImportSpecifier' | 'ImportDefaultSpecifier' | 'ImportNamespaceSpecifier';
local: Identifier;
imported?: Identifier;
}
```
### Export Declaration
An export declaration can be in the form of a batch, a default, or a named declaration.
```js
type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration;
```
Each possible export declaration is described as follows:
```js
interface ExportAllDeclaration {
type: 'ExportAllDeclaration';
source: Literal;
}
interface ExportDefaultDeclaration {
type: 'ExportDefaultDeclaration';
declaration: Identifier | BindingPattern | ClassDeclaration | Expression | FunctionDeclaration;
}
interface ExportNamedDeclaration {
type: 'ExportNamedDeclaration';
declaration: ClassDeclaration | FunctionDeclaration | VariableDeclaration;
specifiers: ExportSpecifier[];
source: Literal;
}
```
with
```js
interface ExportSpecifier {
type: 'ExportSpecifier';
exported: Identifier;
local: Identifier;
};
```
================================================
FILE: eslint/index.js
================================================
/**
* @fileoverview Counts the cyclomatic complexity of each function of the script. See http://en.wikipedia.org/wiki/Cyclomatic_complexity.
* Counts the number of if, conditional, for, while, try, but not logical, switch/case,
*/
"use strict";
const MAX = 24;
module.exports = {
rules: {
"esprima-complexity": {
create(context) {
const fns = [];
function startFunction() {
fns.push(1);
}
function endFunction(node) {
const name = node.id ? node.id.name : `:${node.loc.start.line}`;
const complexity = fns.pop();
if (complexity > MAX) {
context.report(node, `${name} has a Cyclomatic complexity of ${complexity}, treshold of ${MAX} is exceeded!`);
}
}
function increaseComplexity() {
if (fns.length) {
fns[fns.length - 1]++;
}
}
return {
FunctionDeclaration: startFunction,
FunctionExpression: startFunction,
ArrowFunctionExpression: startFunction,
"FunctionDeclaration:exit": endFunction,
"FunctionExpression:exit": endFunction,
"ArrowFunctionExpression:exit": endFunction,
CatchClause: increaseComplexity,
ConditionalExpression: increaseComplexity,
ForStatement: increaseComplexity,
ForInStatement: increaseComplexity,
ForOfStatement: increaseComplexity,
IfStatement: increaseComplexity,
WhileStatement: increaseComplexity,
DoWhileStatement: increaseComplexity
};
}
}
}
};
================================================
FILE: eslint/package.json
================================================
{
"name": "eslint-plugin-esprima-internal",
"version": "0.0.1",
"main": "index.js"
}
================================================
FILE: package.json
================================================
{
"name": "esprima",
"description": "ECMAScript parsing infrastructure for multipurpose analysis",
"homepage": "http://esprima.org",
"main": "dist/esprima.js",
"bin": {
"esparse": "./bin/esparse.js",
"esvalidate": "./bin/esvalidate.js"
},
"version": "4.0.0-dev",
"files": [
"bin",
"dist/esprima.js"
],
"engines": {
"node": ">=8"
},
"author": {
"name": "Ariya Hidayat",
"email": "ariya.hidayat@gmail.com"
},
"maintainers": [
{
"name": "Ariya Hidayat",
"email": "ariya.hidayat@gmail.com",
"web": "http://ariya.ofilabs.com"
}
],
"repository": {
"type": "git",
"url": "https://github.com/jquery/esprima.git"
},
"bugs": {
"url": "https://github.com/jquery/esprima/issues"
},
"license": "BSD-2-Clause",
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^2.14.0",
"@typescript-eslint/parser": "^2.14.0",
"codecov.io": "~0.1.6",
"eslint": "^6.8.0",
"eslint-plugin-esprima-internal": "file:eslint",
"everything.js": "~1.0.3",
"glob": "~7.1.0",
"istanbul": "~0.4.0",
"json-diff": "~0.3.1",
"mocha": "~3.2.0",
"node-tick-processor": "~0.0.2",
"regenerate": "~1.3.2",
"results-interpreter": "~1.0.0",
"temp": "~0.8.3",
"test262-stream": "~1.3.0",
"typescript": "~3.2.1",
"typescript-formatter": "~7.2.2",
"unicode-12.1.0": "^0.8.0",
"webpack": "~1.14.0"
},
"keywords": [
"ast",
"ecmascript",
"esprima",
"javascript",
"parser",
"syntax"
],
"scripts": {
"check-version": "node test/check-version.js",
"lint-code": "eslint src/*.ts",
"code-style": "tsfmt --verify src/*.ts && tsfmt --verify test/*.js",
"format-code": "tsfmt -r src/*.ts && tsfmt -r test/*.js",
"static-analysis": "npm run check-version && npm run lint-code && npm run code-style",
"hostile-env-tests": "node test/hostile-environment-tests.js",
"unit-tests": "node test/unit-tests.js",
"api-tests": "mocha -R dot test/api-tests.js",
"grammar-tests": "node test/grammar-tests.js",
"regression-tests": "node test/regression-tests.js",
"test-262": "npm install git+https://git@github.com/tc39/test262.git#36d2d2d && node test/test-262.js",
"all-tests": "npm run verify-line-ending && npm run generate-fixtures && npm run unit-tests && npm run api-tests && npm run grammar-tests && npm run regression-tests && npm run hostile-env-tests",
"verify-line-ending": "node test/verify-line-ending.js",
"generate-fixtures": "node tools/generate-fixtures.js",
"analyze-coverage": "istanbul cover test/unit-tests.js",
"check-coverage": "istanbul check-coverage --statement 100 --branch 100 --function 100",
"dynamic-analysis": "npm run analyze-coverage && npm run check-coverage",
"compile": "tsc -p src/ && webpack && node tools/fixupbundle.js",
"test": "npm run compile && npm run all-tests && npm run static-analysis && npm run dynamic-analysis",
"prepublish": "npm run compile",
"profile": "node --prof test/profile.js && mv isolate*.log v8.log && node-tick-processor",
"benchmark-parser": "node -expose_gc test/benchmark-parser.js",
"benchmark-tokenizer": "node --expose_gc test/benchmark-tokenizer.js",
"benchmark": "npm run benchmark-parser && npm run benchmark-tokenizer",
"codecov": "istanbul report cobertura && codecov < ./coverage/cobertura-coverage.xml",
"downstream": "node test/downstream.js",
"generate-regex": "node tools/generate-identifier-regex.js",
"generate-xhtml-entities": "node tools/generate-xhtml-entities.js"
}
}
================================================
FILE: src/assert.ts
================================================
// Ensure the condition is true, otherwise throw an error.
// This is only to have a better contract semantic, i.e. another safety net
// to catch a logic error. The condition shall be fulfilled in normal case.
// Do NOT use this to enforce a certain condition on any user input.
export function assert(condition: boolean, message: string): void {
/* istanbul ignore if */
if (!condition) {
throw new Error('ASSERT: ' + message);
}
}
================================================
FILE: src/character.ts
================================================
// See also tools/generate-unicode-regex.js.
const Regex = {
// Unicode v12.1.0 NonAsciiIdentifierStart:
NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,
// Unicode v12.1.0 NonAsciiIdentifierPart:
// eslint-disable-next-line no-misleading-character-class
NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D3-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD46\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E\uDC5F\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
};
export const Character = {
fromCodePoint(cp: number): string {
return (cp < 0x10000) ? String.fromCharCode(cp) :
String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +
String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));
},
// https://tc39.github.io/ecma262/#sec-white-space
isWhiteSpace(cp: number): boolean {
return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||
(cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);
},
// https://tc39.github.io/ecma262/#sec-line-terminators
isLineTerminator(cp: number): boolean {
return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);
},
// https://tc39.github.io/ecma262/#sec-names-and-keywords
isIdentifierStart(cp: number): boolean {
return (cp === 0x24) || (cp === 0x5F) || // $ (dollar) and _ (underscore)
(cp >= 0x41 && cp <= 0x5A) || // A..Z
(cp >= 0x61 && cp <= 0x7A) || // a..z
(cp === 0x5C) || // \ (backslash)
((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(Character.fromCodePoint(cp)));
},
isIdentifierPart(cp: number): boolean {
return (cp === 0x24) || (cp === 0x5F) || // $ (dollar) and _ (underscore)
(cp >= 0x41 && cp <= 0x5A) || // A..Z
(cp >= 0x61 && cp <= 0x7A) || // a..z
(cp >= 0x30 && cp <= 0x39) || // 0..9
(cp === 0x5C) || // \ (backslash)
((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(Character.fromCodePoint(cp)));
},
// https://tc39.github.io/ecma262/#sec-literals-numeric-literals
isDecimalDigit(cp: number): boolean {
return (cp >= 0x30 && cp <= 0x39); // 0..9
},
isDecimalDigitChar(ch: string): ch is '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' {
return ch.length === 1 && Character.isDecimalDigit(ch.charCodeAt(0));
},
isHexDigit(cp: number): boolean {
return (cp >= 0x30 && cp <= 0x39) || // 0..9
(cp >= 0x41 && cp <= 0x46) || // A..F
(cp >= 0x61 && cp <= 0x66); // a..f
},
isOctalDigit(cp: number): boolean {
return (cp >= 0x30 && cp <= 0x37); // 0..7
}
};
================================================
FILE: src/comment-handler.ts
================================================
import { SourceLocation } from './scanner';
import { Syntax } from './syntax';
interface Comment {
type: string;
value: string;
range?: [number, number];
loc?: SourceLocation;
}
interface Entry {
comment: Comment;
start: number;
}
interface NodeInfo {
node: any;
start: number;
}
export class CommentHandler {
attach: boolean;
comments: Comment[];
stack: NodeInfo[];
leading: Entry[];
trailing: Entry[];
constructor() {
this.attach = false;
this.comments = [];
this.stack = [];
this.leading = [];
this.trailing = [];
}
insertInnerComments(node, metadata) {
// innnerComments for properties empty block
// `function a() {/** comments **\/}`
if (node.type === Syntax.BlockStatement && node.body.length === 0) {
const innerComments: Comment[] = [];
for (let i = this.leading.length - 1; i >= 0; --i) {
const entry = this.leading[i];
if (metadata.end.offset >= entry.start) {
innerComments.unshift(entry.comment);
this.leading.splice(i, 1);
this.trailing.splice(i, 1);
}
}
if (innerComments.length) {
node.innerComments = innerComments;
}
}
}
findTrailingComments(metadata) {
let trailingComments: Comment[] = [];
if (this.trailing.length > 0) {
for (let i = this.trailing.length - 1; i >= 0; --i) {
const entry = this.trailing[i];
if (entry.start >= metadata.end.offset) {
trailingComments.unshift(entry.comment);
}
}
this.trailing.length = 0;
return trailingComments;
}
const last = this.stack[this.stack.length - 1];
if (last && last.node.trailingComments) {
const firstComment = last.node.trailingComments[0];
if (firstComment && firstComment.range[0] >= metadata.end.offset) {
trailingComments = last.node.trailingComments;
delete last.node.trailingComments;
}
}
return trailingComments;
}
findLeadingComments(metadata) {
const leadingComments: Comment[] = [];
let target;
while (this.stack.length > 0) {
const entry = this.stack[this.stack.length - 1];
if (entry && entry.start >= metadata.start.offset) {
target = entry.node;
this.stack.pop();
} else {
break;
}
}
if (target) {
const count = target.leadingComments ? target.leadingComments.length : 0;
for (let i = count - 1; i >= 0; --i) {
const comment = target.leadingComments[i];
if (comment.range[1] <= metadata.start.offset) {
leadingComments.unshift(comment);
target.leadingComments.splice(i, 1);
}
}
if (target.leadingComments && target.leadingComments.length === 0) {
delete target.leadingComments;
}
return leadingComments;
}
for (let i = this.leading.length - 1; i >= 0; --i) {
const entry = this.leading[i];
if (entry.start <= metadata.start.offset) {
leadingComments.unshift(entry.comment);
this.leading.splice(i, 1);
}
}
return leadingComments;
}
visitNode(node, metadata) {
if (node.type === Syntax.Program && node.body.length > 0) {
return;
}
this.insertInnerComments(node, metadata);
const trailingComments = this.findTrailingComments(metadata);
const leadingComments = this.findLeadingComments(metadata);
if (leadingComments.length > 0) {
node.leadingComments = leadingComments;
}
if (trailingComments.length > 0) {
node.trailingComments = trailingComments;
}
this.stack.push({
node: node,
start: metadata.start.offset
});
}
visitComment(node, metadata) {
const type = (node.type[0] === 'L') ? 'Line' : 'Block';
const comment: Comment = {
type: type,
value: node.value
};
if (node.range) {
comment.range = node.range;
}
if (node.loc) {
comment.loc = node.loc;
}
this.comments.push(comment);
if (this.attach) {
const entry: Entry = {
comment: {
type: type,
value: node.value,
range: [metadata.start.offset, metadata.end.offset]
},
start: metadata.start.offset
};
if (node.loc) {
entry.comment.loc = node.loc;
}
node.type = type;
this.leading.push(entry);
this.trailing.push(entry);
}
}
visit(node, metadata) {
if (node.type === 'LineComment') {
this.visitComment(node, metadata);
} else if (node.type === 'BlockComment') {
this.visitComment(node, metadata);
} else if (this.attach) {
this.visitNode(node, metadata);
}
}
}
================================================
FILE: src/error-handler.ts
================================================
declare class Error {
public name: string;
public message: string;
public index: number;
public lineNumber: number;
public column: number;
public description: string;
constructor(message: string);
}
export class ErrorHandler {
readonly errors: Error[];
tolerant: boolean;
constructor() {
this.errors = [];
this.tolerant = false;
}
recordError(error: Error): void {
this.errors.push(error);
}
tolerate(error): void {
if (this.tolerant) {
this.recordError(error);
} else {
throw error;
}
}
constructError(msg: string, column: number): Error {
let error = new Error(msg);
try {
throw error;
} catch (base) {
/* istanbul ignore else */
if (Object.create && Object.defineProperty) {
error = Object.create(base);
Object.defineProperty(error, 'column', { value: column });
}
}
/* istanbul ignore next */
return error;
}
createError(index: number, line: number, col: number, description: string): Error {
const msg = 'Line ' + line + ': ' + description;
const error = this.constructError(msg, col);
error.index = index;
error.lineNumber = line;
error.description = description;
return error;
}
throwError(index: number, line: number, col: number, description: string): never {
throw this.createError(index, line, col, description);
}
tolerateError(index: number, line: number, col: number, description: string) {
const error = this.createError(index, line, col, description);
if (this.tolerant) {
this.recordError(error);
} else {
throw error;
}
}
}
================================================
FILE: src/esprima.ts
================================================
/*
Copyright JS Foundation and other contributors, https://js.foundation/
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import { CommentHandler } from './comment-handler';
import { JSXParser } from './jsx-parser';
import { Parser } from './parser';
import { Tokenizer } from './tokenizer';
export function parse(code: string, options, delegate) {
let commentHandler: CommentHandler | null = null;
const proxyDelegate = (node, metadata) => {
if (delegate) {
delegate(node, metadata);
}
if (commentHandler) {
commentHandler.visit(node, metadata);
}
};
let parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;
let collectComment = false;
if (options) {
collectComment = (typeof options.comment === 'boolean' && options.comment);
const attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);
if (collectComment || attachComment) {
commentHandler = new CommentHandler();
commentHandler.attach = attachComment;
options.comment = true;
parserDelegate = proxyDelegate;
}
}
let isModule = false;
if (options && typeof options.sourceType === 'string') {
isModule = (options.sourceType === 'module');
}
let parser: Parser;
if (options && typeof options.jsx === 'boolean' && options.jsx) {
parser = new JSXParser(code, options, parserDelegate);
} else {
parser = new Parser(code, options, parserDelegate);
}
const program = isModule ? parser.parseModule() : parser.parseScript();
const ast = program as any;
if (collectComment && commentHandler) {
ast.comments = commentHandler.comments;
}
if (parser.config.tokens) {
ast.tokens = parser.tokens;
}
if (parser.config.tolerant) {
ast.errors = parser.errorHandler.errors;
}
return ast;
}
export function parseModule(code: string, options, delegate) {
const parsingOptions = options || {};
parsingOptions.sourceType = 'module';
return parse(code, parsingOptions, delegate);
}
export function parseScript(code: string, options, delegate) {
const parsingOptions = options || {};
parsingOptions.sourceType = 'script';
return parse(code, parsingOptions, delegate);
}
export function tokenize(code: string, options, delegate) {
const tokenizer = new Tokenizer(code, options);
const tokens: any = [];
try {
while (true) {
let token = tokenizer.getNextToken();
if (!token) {
break;
}
if (delegate) {
token = delegate(token);
}
tokens.push(token);
}
} catch (e) {
tokenizer.errorHandler.tolerate(e);
}
if (tokenizer.errorHandler.tolerant) {
tokens.errors = tokenizer.errors();
}
return tokens;
}
export { Syntax } from './syntax';
// Sync with *.json manifests.
export const version = '4.0.0-dev';
================================================
FILE: src/jsx-nodes.ts
================================================
import { JSXSyntax } from './jsx-syntax';
import * as Node from './nodes';
export type JSXAttributeName = JSXIdentifier | JSXNamespacedName;
export type JSXAttributeValue = Node.Literal | JSXElement | JSXSpreadAttribute | JSXExpressionContainer;
export type JSXChild = JSXElement | JSXExpressionContainer | JSXText;
export type JSXElementAttribute = JSXAttribute | JSXSpreadAttribute;
export type JSXElementName = JSXIdentifier | JSXNamespacedName | JSXMemberExpression;
export class JSXClosingElement {
readonly type: string;
readonly name: JSXElementName;
constructor(name: JSXElementName) {
this.type = JSXSyntax.JSXClosingElement;
this.name = name;
}
}
export class JSXClosingFragment {
readonly type: string;
constructor() {
this.type = JSXSyntax.JSXClosingFragment;
}
}
export class JSXElement {
readonly type: string;
readonly openingElement: JSXOpeningElement | JSXOpeningFragment;
readonly children: JSXChild[];
readonly closingElement: JSXClosingElement | JSXClosingFragment | null;
constructor(
openingElement: JSXOpeningElement | JSXOpeningFragment,
children: JSXChild[],
closingElement: JSXClosingElement | JSXClosingFragment | null
) {
this.type = JSXSyntax.JSXElement;
this.openingElement = openingElement;
this.children = children;
this.closingElement = closingElement;
}
}
export class JSXEmptyExpression {
readonly type: string;
constructor() {
this.type = JSXSyntax.JSXEmptyExpression;
}
}
export class JSXExpressionContainer {
readonly type: string;
readonly expression: Node.Expression | JSXEmptyExpression;
constructor(expression: Node.Expression | JSXEmptyExpression) {
this.type = JSXSyntax.JSXExpressionContainer;
this.expression = expression;
}
}
export class JSXIdentifier {
readonly type: string;
readonly name: string;
constructor(name: string) {
this.type = JSXSyntax.JSXIdentifier;
this.name = name;
}
}
export class JSXMemberExpression {
readonly type: string;
readonly object: JSXMemberExpression | JSXIdentifier;
readonly property: JSXIdentifier;
constructor(object: JSXMemberExpression | JSXIdentifier, property: JSXIdentifier) {
this.type = JSXSyntax.JSXMemberExpression;
this.object = object;
this.property = property;
}
}
export class JSXAttribute {
readonly type: string;
readonly name: JSXAttributeName;
readonly value: JSXAttributeValue | null;
constructor(name: JSXAttributeName, value: JSXAttributeValue | null) {
this.type = JSXSyntax.JSXAttribute;
this.name = name;
this.value = value;
}
}
export class JSXNamespacedName {
readonly type: string;
readonly namespace: JSXIdentifier;
readonly name: JSXIdentifier;
constructor(namespace: JSXIdentifier, name: JSXIdentifier) {
this.type = JSXSyntax.JSXNamespacedName;
this.namespace = namespace;
this.name = name;
}
}
export class JSXOpeningElement {
readonly type: string;
readonly name: JSXElementName;
readonly selfClosing: boolean;
readonly attributes: JSXElementAttribute[];
constructor(name: JSXElementName, selfClosing: boolean, attributes: JSXElementAttribute[]) {
this.type = JSXSyntax.JSXOpeningElement;
this.name = name;
this.selfClosing = selfClosing;
this.attributes = attributes;
}
}
export class JSXOpeningFragment {
readonly type: string;
readonly selfClosing: boolean;
constructor(selfClosing: boolean) {
this.type = JSXSyntax.JSXOpeningFragment;
this.selfClosing = selfClosing;
}
}
export class JSXSpreadAttribute {
readonly type: string;
readonly argument: Node.Expression;
constructor(argument: Node.Expression) {
this.type = JSXSyntax.JSXSpreadAttribute;
this.argument = argument;
}
}
export class JSXText {
readonly type: string;
readonly value: string;
readonly raw: string;
constructor(value: string, raw: string) {
this.type = JSXSyntax.JSXText;
this.value = value;
this.raw = raw;
}
}
================================================
FILE: src/jsx-parser.ts
================================================
import { Character } from './character';
import * as JSXNode from './jsx-nodes';
import { JSXSyntax } from './jsx-syntax';
import * as Node from './nodes';
import { Marker, Parser } from './parser';
import { Token, TokenName } from './token';
import { XHTMLEntities } from './xhtml-entities';
interface MetaJSXElement {
node: Marker;
opening: JSXNode.JSXOpeningElement | JSXNode.JSXOpeningFragment;
closing: JSXNode.JSXClosingElement | JSXNode.JSXClosingFragment | null;
children: JSXNode.JSXChild[];
}
const enum JSXToken {
Identifier = 100,
Text
}
interface RawJSXToken {
type: Token | JSXToken;
value: string;
lineNumber: number;
lineStart: number;
start: number;
end: number;
}
TokenName[JSXToken.Identifier] = 'JSXIdentifier';
TokenName[JSXToken.Text] = 'JSXText';
// Fully qualified element name, e.g. <svg:path> returns "svg:path"
function getQualifiedElementName(elementName: JSXNode.JSXElementName): string {
let qualifiedName;
switch (elementName.type) {
case JSXSyntax.JSXIdentifier:
const id = elementName as JSXNode.JSXIdentifier;
qualifiedName = id.name;
break;
case JSXSyntax.JSXNamespacedName:
const ns = elementName as JSXNode.JSXNamespacedName;
qualifiedName = getQualifiedElementName(ns.namespace) + ':' +
getQualifiedElementName(ns.name);
break;
case JSXSyntax.JSXMemberExpression:
const expr = elementName as JSXNode.JSXMemberExpression;
qualifiedName = getQualifiedElementName(expr.object) + '.' +
getQualifiedElementName(expr.property);
break;
/* istanbul ignore next */
default:
break;
}
return qualifiedName;
}
export class JSXParser extends Parser {
constructor(code: string, options, delegate) {
super(code, options, delegate);
}
parsePrimaryExpression(): Node.Expression | JSXNode.JSXElement {
return this.match('<') ? this.parseJSXRoot() : super.parsePrimaryExpression();
}
startJSX() {
// Unwind the scanner before the lookahead token.
this.scanner.index = this.startMarker.index;
this.scanner.lineNumber = this.startMarker.line;
this.scanner.lineStart = this.startMarker.index - this.startMarker.column;
}
finishJSX() {
// Prime the next lookahead.
this.nextToken();
}
reenterJSX() {
this.startJSX();
this.expectJSX('}');
// Pop the closing '}' added from the lookahead.
if (this.config.tokens) {
this.tokens.pop();
}
}
createJSXNode(): Marker {
this.collectComments();
return {
index: this.scanner.index,
line: this.scanner.lineNumber,
column: this.scanner.index - this.scanner.lineStart
};
}
createJSXChildNode(): Marker {
return {
index: this.scanner.index,
line: this.scanner.lineNumber,
column: this.scanner.index - this.scanner.lineStart
};
}
scanXHTMLEntity(quote: string): string {
let result = '&';
let valid = true;
let terminated = false;
let numeric = false;
let hex = false;
while (!this.scanner.eof() && valid && !terminated) {
const ch = this.scanner.source[this.scanner.index];
if (ch === quote) {
break;
}
terminated = (ch === ';');
result += ch;
++this.scanner.index;
if (!terminated) {
switch (result.length) {
case 2:
// e.g. '{'
numeric = (ch === '#');
break;
case 3:
if (numeric) {
// e.g. 'A'
hex = (ch === 'x');
valid = hex || Character.isDecimalDigit(ch.charCodeAt(0));
numeric = numeric && !hex;
}
break;
default:
valid = valid && !(numeric && !Character.isDecimalDigit(ch.charCodeAt(0)));
valid = valid && !(hex && !Character.isHexDigit(ch.charCodeAt(0)));
break;
}
}
}
if (valid && terminated && result.length > 2) {
// e.g. 'A' becomes just '#x41'
const str = result.substr(1, result.length - 2);
if (numeric && str.length > 1) {
result = String.fromCharCode(parseInt(str.substr(1), 10));
} else if (hex && str.length > 2) {
result = String.fromCharCode(parseInt('0' + str.substr(1), 16));
} else if (!numeric && !hex && XHTMLEntities[str]) {
result = XHTMLEntities[str];
}
}
return result;
}
// Scan the next JSX token. This replaces Scanner#lex when in JSX mode.
lexJSX(): RawJSXToken {
const cp = this.scanner.source.charCodeAt(this.scanner.index);
// < > / : = { }
if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {
const value = this.scanner.source[this.scanner.index++];
return {
type: Token.Punctuator,
value: value,
lineNumber: this.scanner.lineNumber,
lineStart: this.scanner.lineStart,
start: this.scanner.index - 1,
end: this.scanner.index
};
}
// " '
if (cp === 34 || cp === 39) {
const start = this.scanner.index;
const quote = this.scanner.source[this.scanner.index++];
let str = '';
while (!this.scanner.eof()) {
const ch = this.scanner.source[this.scanner.index++];
if (ch === quote) {
break;
} else if (ch === '&') {
str += this.scanXHTMLEntity(quote);
} else {
str += ch;
}
}
return {
type: Token.StringLiteral,
value: str,
lineNumber: this.scanner.lineNumber,
lineStart: this.scanner.lineStart,
start: start,
end: this.scanner.index
};
}
// ... or .
if (cp === 46) {
const n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);
const n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);
const value = (n1 === 46 && n2 === 46) ? '...' : '.';
const start = this.scanner.index;
this.scanner.index += value.length;
return {
type: Token.Punctuator,
value: value,
lineNumber: this.scanner.lineNumber,
lineStart: this.scanner.lineStart,
start: start,
end: this.scanner.index
};
}
// `
if (cp === 96) {
// Only placeholder, since it will be rescanned as a real assignment expression.
return {
type: Token.Template,
value: '',
lineNumber: this.scanner.lineNumber,
lineStart: this.scanner.lineStart,
start: this.scanner.index,
end: this.scanner.index
};
}
// Identifer can not contain backslash (char code 92).
if (Character.isIdentifierStart(cp) && (cp !== 92)) {
const start = this.scanner.index;
++this.scanner.index;
while (!this.scanner.eof()) {
const ch = this.scanner.source.charCodeAt(this.scanner.index);
if (Character.isIdentifierPart(ch) && (ch !== 92)) {
++this.scanner.index;
} else if (ch === 45) {
// Hyphen (char code 45) can be part of an identifier.
++this.scanner.index;
} else {
break;
}
}
const id = this.scanner.source.slice(start, this.scanner.index);
return {
type: JSXToken.Identifier,
value: id,
lineNumber: this.scanner.lineNumber,
lineStart: this.scanner.lineStart,
start: start,
end: this.scanner.index
};
}
return this.scanner.lex() as RawJSXToken;
}
nextJSXToken(): RawJSXToken {
this.collectComments();
this.startMarker.index = this.scanner.index;
this.startMarker.line = this.scanner.lineNumber;
this.startMarker.column = this.scanner.index - this.scanner.lineStart;
const token = this.lexJSX();
this.lastMarker.index = this.scanner.index;
this.lastMarker.line = this.scanner.lineNumber;
this.lastMarker.column = this.scanner.index - this.scanner.lineStart;
if (this.config.tokens) {
this.tokens.push(this.convertToken(token as any));
}
return token;
}
nextJSXText(): RawJSXToken {
this.startMarker.index = this.scanner.index;
this.startMarker.line = this.scanner.lineNumber;
this.startMarker.column = this.scanner.index - this.scanner.lineStart;
const start = this.scanner.index;
let text = '';
while (!this.scanner.eof()) {
const ch = this.scanner.source[this.scanner.index];
if (ch === '{' || ch === '<') {
break;
}
++this.scanner.index;
text += ch;
if (Character.isLineTerminator(ch.charCodeAt(0))) {
++this.scanner.lineNumber;
if (ch === '\r' && this.scanner.source[this.scanner.index] === '\n') {
++this.scanner.index;
}
this.scanner.lineStart = this.scanner.index;
}
}
this.lastMarker.index = this.scanner.index;
this.lastMarker.line = this.scanner.lineNumber;
this.lastMarker.column = this.scanner.index - this.scanner.lineStart;
const token = {
type: JSXToken.Text,
value: text,
lineNumber: this.scanner.lineNumber,
lineStart: this.scanner.lineStart,
start: start,
end: this.scanner.index
};
if ((text.length > 0) && this.config.tokens) {
this.tokens.push(this.convertToken(token as any));
}
return token;
}
peekJSXToken(): RawJSXToken {
const state = this.scanner.saveState();
this.scanner.scanComments();
const next = this.lexJSX();
this.scanner.restoreState(state);
return next;
}
// Expect the next JSX token to match the specified punctuator.
// If not, an exception will be thrown.
expectJSX(value) {
const token = this.nextJSXToken();
if (token.type !== Token.Punctuator || token.value !== value) {
this.throwUnexpectedToken(token);
}
}
// Return true if the next JSX token matches the specified punctuator.
matchJSX(value) {
const next = this.peekJSXToken();
return next.type === Token.Punctuator && next.value === value;
}
parseJSXIdentifier(): JSXNode.JSXIdentifier {
const node = this.createJSXNode();
const token = this.nextJSXToken();
if (token.type !== JSXToken.Identifier) {
this.throwUnexpectedToken(token);
}
return this.finalize(node, new JSXNode.JSXIdentifier(token.value));
}
parseJSXElementName(): JSXNode.JSXElementName {
const node = this.createJSXNode();
let elementName = this.parseJSXIdentifier();
if (this.matchJSX(':')) {
const namespace = elementName;
this.expectJSX(':');
const name = this.parseJSXIdentifier();
elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name));
} else if (this.matchJSX('.')) {
while (this.matchJSX('.')) {
const object = elementName;
this.expectJSX('.');
const property = this.parseJSXIdentifier();
elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));
}
}
return elementName;
}
parseJSXAttributeName(): JSXNode.JSXAttributeName {
const node = this.createJSXNode();
let attributeName: JSXNode.JSXAttributeName;
const identifier = this.parseJSXIdentifier();
if (this.matchJSX(':')) {
const namespace = identifier;
this.expectJSX(':');
const name = this.parseJSXIdentifier();
attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name));
} else {
attributeName = identifier;
}
return attributeName;
}
parseJSXStringLiteralAttribute(): Node.Literal {
const node = this.createJSXNode();
const token = this.nextJSXToken();
if (token.type !== Token.StringLiteral) {
this.throwUnexpectedToken(token);
}
const raw = this.getTokenRaw(token);
return this.finalize(node, new Node.Literal(token.value, raw));
}
parseJSXExpressionAttribute(): JSXNode.JSXExpressionContainer {
const node = this.createJSXNode();
this.expectJSX('{');
this.finishJSX();
if (this.match('}')) {
this.tolerateError('JSX attributes must only be assigned a non-empty expression');
}
const expression = this.parseAssignmentExpression();
this.reenterJSX();
return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));
}
parseJSXAttributeValue(): JSXNode.JSXAttributeValue {
return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :
this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();
}
parseJSXNameValueAttribute(): JSXNode.JSXAttribute {
const node = this.createJSXNode();
const name = this.parseJSXAttributeName();
let value: JSXNode.JSXAttributeValue | null = null;
if (this.matchJSX('=')) {
this.expectJSX('=');
value = this.parseJSXAttributeValue();
}
return this.finalize(node, new JSXNode.JSXAttribute(name, value));
}
parseJSXSpreadAttribute(): JSXNode.JSXSpreadAttribute {
const node = this.createJSXNode();
this.expectJSX('{');
this.expectJSX('...');
this.finishJSX();
const argument = this.parseAssignmentExpression();
this.reenterJSX();
return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));
}
parseJSXAttributes(): JSXNode.JSXElementAttribute[] {
const attributes: JSXNode.JSXElementAttribute[] = [];
while (!this.matchJSX('/') && !this.matchJSX('>')) {
const attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :
this.parseJSXNameValueAttribute();
attributes.push(attribute);
}
return attributes;
}
parseJSXOpeningElement(): JSXNode.JSXOpeningElement | JSXNode.JSXOpeningFragment {
const node = this.createJSXNode();
this.expectJSX('<');
if (this.matchJSX('>')) {
this.expectJSX('>');
return this.finalize(node, new JSXNode.JSXOpeningFragment(false));
}
const name = this.parseJSXElementName();
const attributes = this.parseJSXAttributes();
const selfClosing = this.matchJSX('/');
if (selfClosing) {
this.expectJSX('/');
}
this.expectJSX('>');
return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));
}
parseJSXBoundaryElement(): JSXNode.JSXOpeningElement | JSXNode.JSXClosingElement | JSXNode.JSXOpeningFragment | JSXNode.JSXClosingFragment {
const node = this.createJSXNode();
this.expectJSX('<');
if (this.matchJSX('/')) {
this.expectJSX('/');
if (this.matchJSX('>')) {
this.expectJSX('>');
return this.finalize(node, new JSXNode.JSXClosingFragment());
}
const elementName = this.parseJSXElementName();
this.expectJSX('>');
return this.finalize(node, new JSXNode.JSXClosingElement(elementName));
}
const name = this.parseJSXElementName();
const attributes = this.parseJSXAttributes();
const selfClosing = this.matchJSX('/');
if (selfClosing) {
this.expectJSX('/');
}
this.expectJSX('>');
return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));
}
parseJSXEmptyExpression(): JSXNode.JSXEmptyExpression {
const node = this.createJSXChildNode();
this.collectComments();
this.lastMarker.index = this.scanner.index;
this.lastMarker.line = this.scanner.lineNumber;
this.lastMarker.column = this.scanner.index - this.scanner.lineStart;
return this.finalize(node, new JSXNode.JSXEmptyExpression());
}
parseJSXExpressionContainer(): JSXNode.JSXExpressionContainer {
const node = this.createJSXNode();
this.expectJSX('{');
let expression: Node.Expression | JSXNode.JSXEmptyExpression;
if (this.matchJSX('}')) {
expression = this.parseJSXEmptyExpression();
this.expectJSX('}');
} else {
this.finishJSX();
expression = this.parseAssignmentExpression();
this.reenterJSX();
}
return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));
}
parseJSXChildren(): JSXNode.JSXChild[] {
const children: JSXNode.JSXChild[] = [];
while (!this.scanner.eof()) {
const node = this.createJSXChildNode();
const token = this.nextJSXText();
if (token.start < token.end) {
const raw = this.getTokenRaw(token);
const child = this.finalize(node, new JSXNode.JSXText(token.value, raw));
children.push(child);
}
if (this.scanner.source[this.scanner.index] === '{') {
const container = this.parseJSXExpressionContainer();
children.push(container);
} else {
break;
}
}
return children;
}
parseComplexJSXElement(el: MetaJSXElement): MetaJSXElement {
const stack: MetaJSXElement[] = [];
while (!this.scanner.eof()) {
el.children = el.children.concat(this.parseJSXChildren());
const node = this.createJSXChildNode();
const element = this.parseJSXBoundaryElement();
if (element.type === JSXSyntax.JSXOpeningElement) {
const opening = element as JSXNode.JSXOpeningElement;
if (opening.selfClosing) {
const child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));
el.children.push(child);
} else {
stack.push(el);
el = { node, opening, closing: null, children: [] };
}
}
if (element.type === JSXSyntax.JSXClosingElement) {
el.closing = element as JSXNode.JSXClosingElement;
const open = getQualifiedElementName((el.opening as JSXNode.JSXOpeningElement).name);
const close = getQualifiedElementName((el.closing as JSXNode.JSXClosingElement).name);
if (open !== close) {
this.tolerateError('Expected corresponding JSX closing tag for %0', open);
}
if (stack.length > 0) {
const child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));
el = stack[stack.length - 1];
el.children.push(child);
stack.pop();
} else {
break;
}
}
if (element.type === JSXSyntax.JSXClosingFragment) {
el.closing = element as JSXNode.JSXClosingFragment;
if (el.opening.type !== JSXSyntax.JSXOpeningFragment) {
this.tolerateError('Expected corresponding JSX closing tag for jsx fragment');
} else {
break;
}
}
}
return el;
}
parseJSXElement(): JSXNode.JSXElement {
const node = this.createJSXNode();
const opening = this.parseJSXOpeningElement();
let children: JSXNode.JSXChild[] = [];
let closing: JSXNode.JSXClosingElement | JSXNode.JSXClosingFragment | null = null;
if (!opening.selfClosing) {
const el = this.parseComplexJSXElement({ node, opening, closing, children });
children = el.children;
closing = el.closing;
}
return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));
}
parseJSXRoot(): JSXNode.JSXElement {
// Pop the opening '<' added from the lookahead.
if (this.config.tokens) {
this.tokens.pop();
}
this.startJSX();
const element = this.parseJSXElement();
this.finishJSX();
return element;
}
isStartOfExpression(): boolean {
return super.isStartOfExpression() || this.match('<');
}
}
================================================
FILE: src/jsx-syntax.ts
================================================
export const JSXSyntax = {
JSXAttribute: 'JSXAttribute',
JSXClosingElement: 'JSXClosingElement',
JSXClosingFragment: 'JSXClosingFragment',
JSXElement: 'JSXElement',
JSXEmptyExpression: 'JSXEmptyExpression',
JSXExpressionContainer: 'JSXExpressionContainer',
JSXIdentifier: 'JSXIdentifier',
JSXMemberExpression: 'JSXMemberExpression',
JSXNamespacedName: 'JSXNamespacedName',
JSXOpeningElement: 'JSXOpeningElement',
JSXOpeningFragment: 'JSXOpeningFragment',
JSXSpreadAttribute: 'JSXSpreadAttribute',
JSXText: 'JSXText'
};
================================================
FILE: src/messages.ts
================================================
// Error messages should be identical to V8.
export const Messages = {
AsyncFunctionInSingleStatementContext: 'Async functions can only be declared at the top level or inside a block.',
BadImportCallArity: 'Unexpected token',
BadGetterArity: 'Getter must not have any formal parameters',
BadSetterArity: 'Setter must have exactly one formal parameter',
BadSetterRestParameter: 'Setter function argument must not be a rest parameter',
CannotUseImportMetaOutsideAModule: 'Cannot use \'import.meta\' outside a module',
ConstructorIsAsync: 'Class constructor may not be an async method',
ConstructorSpecialMethod: 'Class constructor may not be an accessor',
DeclarationMissingInitializer: 'Missing initializer in %0 declaration',
DefaultRestParameter: 'Unexpected token =',
DefaultRestProperty: 'Unexpected token =',
DuplicateBinding: 'Duplicate binding %0',
DuplicateConstructor: 'A class may only have one constructor',
DuplicateParameter: 'Duplicate parameter name not allowed in this context',
DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',
ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',
GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',
IllegalBreak: 'Illegal break statement',
IllegalContinue: 'Illegal continue statement',
IllegalExportDeclaration: 'Unexpected token',
IllegalImportDeclaration: 'Unexpected token',
IllegalLanguageModeDirective: 'Illegal \'use strict\' directive in function with non-simple parameter list',
IllegalReturn: 'Illegal return statement',
InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',
InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',
InvalidLHSInAssignment: 'Invalid left-hand side in assignment',
InvalidLHSInForIn: 'Invalid left-hand side in for-in',
InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',
InvalidModuleSpecifier: 'Unexpected token',
InvalidRegExp: 'Invalid regular expression',
InvalidTaggedTemplateOnOptionalChain: 'Invalid tagged template on optional chain',
InvalidUnicodeEscapeSequence: 'Invalid Unicode escape sequence',
LetInLexicalBinding: 'let is disallowed as a lexically bound name',
MissingFromClause: 'Unexpected token',
MultipleDefaultsInSwitch: 'More than one default clause in switch statement',
NewlineAfterThrow: 'Illegal newline after throw',
NoAsAfterImportNamespace: 'Unexpected token',
NoCatchOrFinally: 'Missing catch or finally after try',
ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',
PropertyAfterRestProperty: 'Unexpected token',
Redeclaration: '%0 \'%1\' has already been declared',
StaticPrototype: 'Classes may not have static property named prototype',
StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',
StrictDelete: 'Delete of an unqualified identifier in strict mode.',
StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',
StrictFunctionName: 'Function name may not be eval or arguments in strict mode',
StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',
StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',
StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',
StrictModeWith: 'Strict mode code may not include a with statement',
StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',
StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',
StrictReservedWord: 'Use of future reserved word in strict mode',
StrictVarName: 'Variable name may not be eval or arguments in strict mode',
TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',
TemplateEscape89: '\\8 and \\9 are not allowed in template strings.',
UnexpectedEOS: 'Unexpected end of input',
UnexpectedIdentifier: 'Unexpected identifier',
UnexpectedNumber: 'Unexpected number',
UnexpectedReserved: 'Unexpected reserved word',
UnexpectedString: 'Unexpected string',
UnexpectedSuper: '\'super\' keyword unexpected here',
UnexpectedTemplate: 'Unexpected quasi %0',
UnexpectedToken: 'Unexpected token %0',
UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',
UnknownLabel: 'Undefined label \'%0\'',
UnterminatedRegExp: 'Invalid regular expression: missing /'
};
================================================
FILE: src/nodes.ts
================================================
import { Syntax } from './syntax';
export type ArgumentListElement = Expression | SpreadElement;
export type ArrayExpressionElement = Expression | SpreadElement | null;
export type ArrayPatternElement = AssignmentPattern | BindingIdentifier | BindingPattern | RestElement | null;
export type BindingPattern = ArrayPattern | ObjectPattern;
export type BindingIdentifier = Identifier;
export type ChainElement = CallExpression | ComputedMemberExpression | StaticMemberExpression;
export type Declaration = AsyncFunctionDeclaration | ClassDeclaration | ExportDeclaration | FunctionDeclaration | ImportDeclaration | VariableDeclaration;
export type ExportableDefaultDeclaration = BindingIdentifier | BindingPattern | ClassDeclaration | Expression | FunctionDeclaration;
export type ExportableNamedDeclaration = AsyncFunctionDeclaration | ClassDeclaration | FunctionDeclaration | VariableDeclaration;
export type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration;
export type Expression = ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AsyncArrowFunctionExpression | AsyncFunctionExpression |
AwaitExpression | BinaryExpression | CallExpression | ChainExpression | ClassExpression | ComputedMemberExpression |
ConditionalExpression | Identifier | FunctionExpression | Literal | NewExpression | ObjectExpression |
RegexLiteral | SequenceExpression | StaticMemberExpression | TaggedTemplateExpression |
ThisExpression | UnaryExpression | UpdateExpression | YieldExpression;
export type FunctionParameter = AssignmentPattern | BindingIdentifier | BindingPattern;
export type ImportDeclarationSpecifier = ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier;
export type ObjectExpressionProperty = Property | SpreadElement;
export type ObjectPatternProperty = Property | RestElement;
export type Statement = AsyncFunctionDeclaration | BreakStatement | ContinueStatement | DebuggerStatement | DoWhileStatement |
EmptyStatement | ExpressionStatement | Directive | ForStatement | ForInStatement | ForOfStatement |
FunctionDeclaration | IfStatement | ReturnStatement | SwitchStatement | ThrowStatement |
TryStatement | VariableDeclaration | WhileStatement | WithStatement;
export type PropertyKey = Identifier | Literal;
export type PropertyValue = AssignmentPattern | AsyncFunctionExpression | BindingIdentifier | BindingPattern | FunctionExpression;
export type StatementListItem = Declaration | Statement;
export class ArrayExpression {
readonly type: string;
readonly elements: ArrayExpressionElement[];
constructor(elements: ArrayExpressionElement[]) {
this.type = Syntax.ArrayExpression;
this.elements = elements;
}
}
export class ArrayPattern {
readonly type: string;
readonly elements: ArrayPatternElement[];
constructor(elements: ArrayPatternElement[]) {
this.type = Syntax.ArrayPattern;
this.elements = elements;
}
}
export class ArrowFunctionExpression {
readonly type: string;
readonly id: Identifier | null;
readonly params: FunctionParameter[];
readonly body: BlockStatement | Expression;
readonly generator: boolean;
readonly expression: boolean;
readonly async: boolean;
constructor(params: FunctionParameter[], body: BlockStatement | Expression, expression: boolean) {
this.type = Syntax.ArrowFunctionExpression;
this.id = null;
this.params = params;
this.body = body;
this.generator = false;
this.expression = expression;
this.async = false;
}
}
export class AssignmentExpression {
readonly type: string;
readonly operator: string;
readonly left: Expression;
readonly right: Expression;
constructor(operator: string, left: Expression, right: Expression) {
this.type = Syntax.AssignmentExpression;
this.operator = operator;
this.left = left;
this.right = right;
}
}
export class AssignmentPattern {
readonly type: string;
readonly left: BindingIdentifier | BindingPattern;
readonly right: Expression;
constructor(left: BindingIdentifier | BindingPattern, right: Expression) {
this.type = Syntax.AssignmentPattern;
this.left = left;
this.right = right;
}
}
export class AsyncArrowFunctionExpression {
readonly type: string;
readonly id: Identifier | null;
readonly params: FunctionParameter[];
readonly body: BlockStatement | Expression;
readonly generator: boolean;
readonly expression: boolean;
readonly async: boolean;
constructor(params: FunctionParameter[], body: BlockStatement | Expression, expression: boolean) {
this.type = Syntax.ArrowFunctionExpression;
this.id = null;
this.params = params;
this.body = body;
this.generator = false;
this.expression = expression;
this.async = true;
}
}
export class AsyncFunctionDeclaration {
readonly type: string;
readonly id: Identifier | null;
readonly params: FunctionParameter[];
readonly body: BlockStatement;
readonly generator: boolean;
readonly expression: boolean;
readonly async: boolean;
constructor(id: Identifier | null, params: FunctionParameter[], body: BlockStatement, generator: boolean) {
this.type = Syntax.FunctionDeclaration;
this.id = id;
this.params = params;
this.body = body;
this.generator = generator;
this.expression = false;
this.async = true;
}
}
export class AsyncFunctionExpression {
readonly type: string;
readonly id: Identifier | null;
readonly params: FunctionParameter[];
readonly body: BlockStatement;
readonly generator: boolean;
readonly expression: boolean;
readonly async: boolean;
constructor(id: Identifier | null, params: FunctionParameter[], body: BlockStatement, generator: boolean) {
this.type = Syntax.FunctionExpression;
this.id = id;
this.params = params;
this.body = body;
this.generator = generator;
this.expression = false;
this.async = true;
}
}
export class AwaitExpression {
readonly type: string;
readonly argument: Expression;
constructor(argument: Expression) {
this.type = Syntax.AwaitExpression;
this.argument = argument;
}
}
export class BinaryExpression {
readonly type: string;
readonly operator: string;
readonly left: Expression;
readonly right: Expression;
constructor(operator: string, left: Expression, right: Expression) {
const logical = (operator === '||' || operator === '&&' || operator === '??');
this.type = logical ? Syntax.LogicalExpression : Syntax.BinaryExpression;
this.operator = operator;
this.left = left;
this.right = right;
}
}
export class BlockStatement {
readonly type: string;
readonly body: Statement[];
constructor(body) {
this.type = Syntax.BlockStatement;
this.body = body;
}
}
export class BreakStatement {
readonly type: string;
readonly label: Identifier | null;
constructor(label: Identifier | null) {
this.type = Syntax.BreakStatement;
this.label = label;
}
}
export class CallExpression {
readonly type: string;
readonly callee: Expression | Import;
readonly arguments: ArgumentListElement[];
readonly optional: boolean;
constructor(callee: Expression | Import, args: ArgumentListElement[], optional: boolean) {
this.type = Syntax.CallExpression;
this.callee = callee;
this.arguments = args;
this.optional = optional;
}
}
export class CatchClause {
readonly type: string;
readonly param: BindingIdentifier | BindingPattern | null;
readonly body: BlockStatement;
constructor(param: BindingIdentifier | BindingPattern | null, body: BlockStatement) {
this.type = Syntax.CatchClause;
this.param = param;
this.body = body;
}
}
export class ChainExpression {
readonly type: string;
readonly expression: ChainElement;
constructor(expression: ChainElement) {
this.type = Syntax.ChainExpression;
this.expression = expression;
}
}
export class ClassBody {
readonly type: string;
readonly body: Property[];
constructor(body: Property[]) {
this.type = Syntax.ClassBody;
this.body = body;
}
}
export class ClassDeclaration {
readonly type: string;
readonly id: Identifier | null;
readonly superClass: Identifier | null;
readonly body: ClassBody;
constructor(id: Identifier | null, superClass: Identifier | null, body: ClassBody) {
this.type = Syntax.ClassDeclaration;
this.id = id;
this.superClass = superClass;
this.body = body;
}
}
export class ClassExpression {
readonly type: string;
readonly id: Identifier | null;
readonly superClass: Identifier | null;
readonly body: ClassBody;
constructor(id: Identifier | null, superClass: Identifier | null, body: ClassBody) {
this.type = Syntax.ClassExpression;
this.id = id;
this.superClass = superClass;
this.body = body;
}
}
export class ComputedMemberExpression {
readonly type: string;
readonly computed: boolean;
readonly object: Expression;
readonly property: Expression;
readonly optional: boolean;
constructor(object: Expression, property: Expression, optional: boolean) {
this.type = Syntax.MemberExpression;
this.computed = true;
this.object = object;
this.property = property;
this.optional = optional;
}
}
export class ConditionalExpression {
readonly type: string;
readonly test: Expression;
readonly consequent: Expression;
readonly alternate: Expression;
constructor(test: Expression, consequent: Expression, alternate: Expression) {
this.type = Syntax.ConditionalExpression;
this.test = test;
this.consequent = consequent;
this.alternate = alternate;
}
}
export class ContinueStatement {
readonly type: string;
readonly label: Identifier | null;
constructor(label: Identifier | null) {
this.type = Syntax.ContinueStatement;
this.label = label;
}
}
export class DebuggerStatement {
readonly type: string;
constructor() {
this.type = Syntax.DebuggerStatement;
}
}
export class Directive {
readonly type: string;
readonly expression: Expression;
readonly directive: string;
constructor(expression: Expression, directive: string) {
this.type = Syntax.ExpressionStatement;
this.expression = expression;
this.directive = directive;
}
}
export class DoWhileStatement {
readonly type: string;
readonly body: Statement;
readonly test: Expression;
constructor(body: Statement, test: Expression) {
this.type = Syntax.DoWhileStatement;
this.body = body;
this.test = test;
}
}
export class EmptyStatement {
readonly type: string;
constructor() {
this.type = Syntax.EmptyStatement;
}
}
export class ExportAllDeclaration {
readonly type: string;
readonly source: Literal;
constructor(source: Literal) {
this.type = Syntax.ExportAllDeclaration;
this.source = source;
}
}
export class ExportDefaultDeclaration {
readonly type: string;
readonly declaration: ExportableDefaultDeclaration;
constructor(declaration: ExportableDefaultDeclaration) {
this.type = Syntax.ExportDefaultDeclaration;
this.declaration = declaration;
}
}
export class ExportNamedDeclaration {
readonly type: string;
readonly declaration: ExportableNamedDeclaration | null;
readonly specifiers: ExportSpecifier[];
readonly source: Literal | null;
constructor(declaration: ExportableNamedDeclaration | null, specifiers: ExportSpecifier[], source: Literal | null) {
this.type = Syntax.ExportNamedDeclaration;
this.declaration = declaration;
this.specifiers = specifiers;
this.source = source;
}
}
export class ExportSpecifier {
readonly type: string;
readonly exported: Identifier;
readonly local: Identifier;
constructor(local: Identifier, exported: Identifier) {
this.type = Syntax.ExportSpecifier;
this.exported = exported;
this.local = local;
}
}
export class ExpressionStatement {
readonly type: string;
readonly expression: Expression;
constructor(expression: Expression) {
this.type = Syntax.ExpressionStatement;
this.expression = expression;
}
}
export class ForInStatement {
readonly type: string;
readonly left: Expression;
readonly right: Expression;
readonly body: Statement;
readonly each: boolean;
constructor(left: Expression, right: Expression, body: Statement) {
this.type = Syntax.ForInStatement;
this.left = left;
this.right = right;
this.body = body;
this.each = false;
}
}
export class ForOfStatement {
readonly type: string;
readonly await: boolean;
readonly left: Expression;
readonly right: Expression;
readonly body: Statement;
constructor(left: Expression, right: Expression, body: Statement, _await: boolean) {
this.type = Syntax.ForOfStatement;
this.await = _await;
this.left = left;
this.right = right;
this.body = body;
}
}
export class ForStatement {
readonly type: string;
readonly init: Expression | null;
readonly test: Expression | null;
readonly update: Expression | null;
body: Statement;
constructor(init: Expression | null, test: Expression | null, update: Expression | null, body: Statement) {
this.type = Syntax.ForStatement;
this.init = init;
this.test = test;
this.update = update;
this.body = body;
}
}
export class FunctionDeclaration {
readonly type: string;
readonly id: Identifier | null;
readonly params: FunctionParameter[];
readonly body: BlockStatement;
readonly generator: boolean;
readonly expression: boolean;
readonly async: boolean;
constructor(id: Identifier | null, params: FunctionParameter[], body: BlockStatement, generator: boolean) {
this.type = Syntax.FunctionDeclaration;
this.id = id;
this.params = params;
this.body = body;
this.generator = generator;
this.expression = false;
this.async = false;
}
}
export class FunctionExpression {
readonly type: string;
readonly id: Identifier | null;
readonly params: FunctionParameter[];
readonly body: BlockStatement;
readonly generator: boolean;
readonly expression: boolean;
readonly async: boolean;
constructor(id: Identifier | null, params: FunctionParameter[], body: BlockStatement, generator: boolean) {
this.type = Syntax.FunctionExpression;
this.id = id;
this.params = params;
this.body = body;
this.generator = generator;
this.expression = false;
this.async = false;
}
}
export class Identifier {
readonly type: string;
readonly name: string;
constructor(name) {
this.type = Syntax.Identifier;
this.name = name;
}
}
export class IfStatement {
readonly type: string;
readonly test: Expression;
readonly consequent: Statement;
readonly alternate: Statement | null;
constructor(test: Expression, consequent: Statement, alternate: Statement | null) {
this.type = Syntax.IfStatement;
this.test = test;
this.consequent = consequent;
this.alternate = alternate;
}
}
export class Import {
readonly type: string;
constructor() {
this.type = Syntax.Import;
}
}
export class ImportDeclaration {
readonly type: string;
readonly specifiers: ImportDeclarationSpecifier[];
readonly source: Literal;
constructor(specifiers, source) {
this.type = Syntax.ImportDeclaration;
this.specifiers = specifiers;
this.source = source;
}
}
export class ImportDefaultSpecifier {
readonly type: string;
readonly local: Identifier;
constructor(local: Identifier) {
this.type = Syntax.ImportDefaultSpecifier;
this.local = local;
}
}
export class ImportNamespaceSpecifier {
readonly type: string;
readonly local: Identifier;
constructor(local: Identifier) {
this.type = Syntax.ImportNamespaceSpecifier;
this.local = local;
}
}
export class ImportSpecifier {
readonly type: string;
readonly local: Identifier;
readonly imported: Identifier;
constructor(local: Identifier, imported: Identifier) {
this.type = Syntax.ImportSpecifier;
this.local = local;
this.imported = imported;
}
}
export class LabeledStatement {
readonly type: string;
readonly label: Identifier;
readonly body: Statement;
constructor(label: Identifier, body: Statement) {
this.type = Syntax.LabeledStatement;
this.label = label;
this.body = body;
}
}
export class Literal {
readonly type: string;
readonly value: boolean | number | string | null;
readonly raw: string;
constructor(value: boolean | number | string | null, raw: string) {
this.type = Syntax.Literal;
this.value = value;
this.raw = raw;
}
}
export class MetaProperty {
readonly type: string;
readonly meta: Identifier;
readonly property: Identifier;
constructor(meta: Identifier, property: Identifier) {
this.type = Syntax.MetaProperty;
this.meta = meta;
this.property = property;
}
}
export class MethodDefinition {
readonly type: string;
readonly key: Expression | null;
readonly computed: boolean;
readonly value: AsyncFunctionExpression | FunctionExpression | null;
readonly kind: string;
readonly static: boolean;
constructor(key: Expression | null, computed: boolean, value: AsyncFunctionExpression | FunctionExpression | null, kind: string, isStatic: boolean) {
this.type = Syntax.MethodDefinition;
this.key = key;
this.computed = computed;
this.value = value;
this.kind = kind;
this.static = isStatic;
}
}
export class Module {
readonly type: string;
readonly body: StatementListItem[];
readonly sourceType: string;
constructor(body: StatementListItem[]) {
this.type = Syntax.Program;
this.body = body;
this.sourceType = 'module';
}
}
export class NewExpression {
readonly type: string;
readonly callee: Expression;
readonly arguments: ArgumentListElement[];
constructor(callee: Expression, args: ArgumentListElement[]) {
this.type = Syntax.NewExpression;
this.callee = callee;
this.arguments = args;
}
}
export class ObjectExpression {
readonly type: string;
readonly properties: ObjectExpressionProperty[];
constructor(properties: ObjectExpressionProperty[]) {
this.type = Syntax.ObjectExpression;
this.properties = properties;
}
}
export class ObjectPattern {
readonly type: string;
readonly properties: ObjectPatternProperty[];
constructor(properties: ObjectPatternProperty[]) {
this.type = Syntax.ObjectPattern;
this.properties = properties;
}
}
export class Property {
readonly type: string;
readonly key: PropertyKey;
readonly computed: boolean;
readonly value: PropertyValue | null;
readonly kind: string;
readonly method: boolean;
readonly shorthand: boolean;
constructor(kind: string, key: PropertyKey, computed: boolean, value: PropertyValue | null, method: boolean, shorthand: boolean) {
this.type = Syntax.Property;
this.key = key;
this.computed = computed;
this.value = value;
this.kind = kind;
this.method = method;
this.shorthand = shorthand;
}
}
export class RegexLiteral {
readonly type: string;
readonly value: RegExp;
readonly raw: string;
readonly regex: { pattern: string; flags: string };
constructor(value: RegExp, raw: string, pattern: string, flags: string) {
this.type = Syntax.Literal;
this.value = value;
this.raw = raw;
this.regex = { pattern, flags };
}
}
export class RestElement {
readonly type: string;
readonly argument: BindingIdentifier | BindingPattern;
constructor(argument: BindingIdentifier | BindingPattern) {
this.type = Syntax.RestElement;
this.argument = argument;
}
}
export class ReturnStatement {
readonly type: string;
readonly argument: Expression | null;
constructor(argument: Expression | null) {
this.type = Syntax.ReturnStatement;
this.argument = argument;
}
}
export class Script {
readonly type: string;
readonly body: StatementListItem[];
readonly sourceType: string;
constructor(body: StatementListItem[]) {
this.type = Syntax.Program;
this.body = body;
this.sourceType = 'script';
}
}
export class SequenceExpression {
readonly type: string;
readonly expressions: Expression[];
constructor(expressions: Expression[]) {
this.type = Syntax.SequenceExpression;
this.expressions = expressions;
}
}
export class SpreadElement {
readonly type: string;
readonly argument: Expression;
constructor(argument: Expression) {
this.type = Syntax.SpreadElement;
this.argument = argument;
}
}
export class StaticMemberExpression {
readonly type: string;
readonly computed: boolean;
readonly object: Expression;
readonly property: Expression;
readonly optional: boolean;
constructor(object: Expression, property: Expression, optional: boolean) {
this.type = Syntax.MemberExpression;
this.computed = false;
this.object = object;
this.property = property;
this.optional = optional;
}
}
export class Super {
readonly type: string;
constructor() {
this.type = Syntax.Super;
}
}
export class SwitchCase {
readonly type: string;
readonly test: Expression | null;
readonly consequent: Statement[];
constructor(test: Expression, consequent: Statement[]) {
this.type = Syntax.SwitchCase;
this.test = test;
this.consequent = consequent;
}
}
export class SwitchStatement {
readonly type: string;
readonly discriminant: Expression;
readonly cases: SwitchCase[];
constructor(discriminant: Expression, cases: SwitchCase[]) {
this.type = Syntax.SwitchStatement;
this.discriminant = discriminant;
this.cases = cases;
}
}
export class TaggedTemplateExpression {
readonly type: string;
readonly tag: Expression;
readonly quasi: TemplateLiteral;
constructor(tag: Expression, quasi: TemplateLiteral) {
this.type = Syntax.TaggedTemplateExpression;
this.tag = tag;
this.quasi = quasi;
}
}
interface TemplateElementValue {
cooked: string | null;
raw: string;
}
export class TemplateElement {
readonly type: string;
readonly value: TemplateElementValue;
readonly tail: boolean;
constructor(value: TemplateElementValue, tail: boolean) {
this.type = Syntax.TemplateElement;
this.value = value;
this.tail = tail;
}
}
export class TemplateLiteral {
readonly type: string;
readonly quasis: TemplateElement[];
readonly expressions: Expression[];
constructor(quasis: TemplateElement[], expressions: Expression[]) {
this.type = Syntax.TemplateLiteral;
this.quasis = quasis;
this.expressions = expressions;
}
}
export class ThisExpression {
readonly type: string;
constructor() {
this.type = Syntax.ThisExpression;
}
}
export class ThrowStatement {
readonly type: string;
readonly argument: Expression;
constructor(argument: Expression) {
this.type = Syntax.ThrowStatement;
this.argument = argument;
}
}
export class TryStatement {
readonly type: string;
readonly block: BlockStatement;
readonly handler: CatchClause | null;
readonly finalizer: BlockStatement | null;
constructor(block: BlockStatement, handler: CatchClause | null, finalizer: BlockStatement | null) {
this.type = Syntax.TryStatement;
this.block = block;
this.handler = handler;
this.finalizer = finalizer;
}
}
export class UnaryExpression {
readonly type: string;
readonly operator: string;
readonly argument: Expression;
readonly prefix: boolean;
constructor(operator, argument) {
this.type = Syntax.UnaryExpression;
this.operator = operator;
this.argument = argument;
this.prefix = true;
}
}
export class UpdateExpression {
readonly type: string;
readonly operator: string;
readonly argument: Expression;
readonly prefix: boolean;
constructor(operator, argument, prefix) {
this.type = Syntax.UpdateExpression;
this.operator = operator;
this.argument = argument;
this.prefix = prefix;
}
}
export class VariableDeclaration {
readonly type: string;
readonly declarations: VariableDeclarator[];
readonly kind: string;
constructor(declarations: VariableDeclarator[], kind: string) {
this.type = Syntax.VariableDeclaration;
this.declarations = declarations;
this.kind = kind;
}
}
export class VariableDeclarator {
readonly type: string;
readonly id: BindingIdentifier | BindingPattern;
readonly init: Expression | null;
constructor(id: BindingIdentifier | BindingPattern, init: Expression | null) {
this.type = Syntax.VariableDeclarator;
this.id = id;
this.init = init;
}
}
export class WhileStatement {
readonly type: string;
readonly test: Expression;
readonly body: Statement;
constructor(test: Expression, body: Statement) {
this.type = Syntax.WhileStatement;
this.test = test;
this.body = body;
}
}
export class WithStatement {
readonly type: string;
readonly object: Expression;
readonly body: Statement;
constructor(object: Expression, body: Statement) {
this.type = Syntax.WithStatement;
this.object = object;
this.body = body;
}
}
export class YieldExpression {
readonly type: string;
readonly argument: Expression | null;
readonly delegate: boolean;
constructor(argument: Expression | null, delegate: boolean) {
this.type = Syntax.YieldExpression;
this.argument = argument;
this.delegate = delegate;
}
}
================================================
FILE: src/parser.ts
================================================
import { assert } from './assert';
import { ErrorHandler } from './error-handler';
import { Messages } from './messages';
import * as Node from './nodes';
import { Comment, RawToken, Scanner, SourceLocation } from './scanner';
import { Syntax } from './syntax';
import { Token, TokenName } from './token';
interface Config {
range: boolean;
loc: boolean;
source: string | null;
tokens: boolean;
comment: boolean;
tolerant: boolean;
}
interface Context {
isModule: boolean;
allowIn: boolean;
allowStrictDirective: boolean;
allowYield: boolean;
isAsync: boolean;
firstCoverInitializedNameError: RawToken | null;
isAssignmentTarget: boolean;
isBindingElement: boolean;
inFunctionBody: boolean;
inIteration: boolean;
inSwitch: boolean;
inClassConstructor: boolean;
labelSet: any;
strict: boolean;
}
export interface Marker {
index: number;
line: number;
column: number;
}
const ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';
interface ArrowParameterPlaceHolderNode {
type: string;
params: Node.Expression[];
async: boolean;
}
interface DeclarationOptions {
inFor: boolean;
}
interface TokenEntry {
type: string;
value: string;
regex?: {
pattern: string;
flags: string;
};
range?: [number, number];
loc?: SourceLocation;
}
interface ParseTemplateLiteralOptions {
isTagged: boolean;
}
/* eslint-disable @typescript-eslint/unbound-method */
export class Parser {
readonly config: Config;
readonly delegate: any;
readonly errorHandler: ErrorHandler;
readonly scanner: Scanner;
readonly operatorPrecedence: any;
lookahead: RawToken;
hasLineTerminator: boolean;
context: Context;
tokens: any[];
startMarker: Marker;
lastMarker: Marker;
constructor(code: string, options: any = {}, delegate) {
this.config = {
range: (typeof options.range === 'boolean') && options.range,
loc: (typeof options.loc === 'boolean') && options.loc,
source: null,
tokens: (typeof options.tokens === 'boolean') && options.tokens,
comment: (typeof options.comment === 'boolean') && options.comment,
tolerant: (typeof options.tolerant === 'boolean') && options.tolerant
};
if (this.config.loc && options.source && options.source !== null) {
this.config.source = String(options.source);
}
this.delegate = delegate;
this.errorHandler = new ErrorHandler();
this.errorHandler.tolerant = this.config.tolerant;
this.scanner = new Scanner(code, this.errorHandler);
this.scanner.trackComment = this.config.comment;
this.operatorPrecedence = {
')': 0,
';': 0,
',': 0,
'=': 0,
']': 0,
'??': 5,
'||': 6,
'&&': 7,
'|': 8,
'^': 9,
'&': 10,
'==': 11,
'!=': 11,
'===': 11,
'!==': 11,
'<': 12,
'>': 12,
'<=': 12,
'>=': 12,
'<<': 13,
'>>': 13,
'>>>': 13,
'+': 14,
'-': 14,
'*': 15,
'/': 15,
'%': 15
};
this.lookahead = {
type: Token.EOF,
value: '',
lineNumber: this.scanner.lineNumber,
lineStart: 0,
start: 0,
end: 0
};
this.hasLineTerminator = false;
this.context = {
isModule: false,
isAsync: false,
allowIn: true,
allowStrictDirective: true,
allowYield: true,
firstCoverInitializedNameError: null,
isAssignmentTarget: false,
isBindingElement: false,
inFunctionBody: false,
inIteration: false,
inSwitch: false,
inClassConstructor: false,
labelSet: {},
strict: false
};
this.tokens = [];
this.startMarker = {
index: 0,
line: this.scanner.lineNumber,
column: 0
};
this.lastMarker = {
index: 0,
line: this.scanner.lineNumber,
column: 0
};
this.nextToken();
this.lastMarker = {
index: this.scanner.index,
line: this.scanner.lineNumber,
column: this.scanner.index - this.scanner.lineStart
};
}
throwError(messageFormat: string, ...values): void {
const args = values.slice();
const msg = messageFormat.replace(/%(\d)/g, (whole, idx) => {
assert(idx < args.length, 'Message reference must be in range');
return args[idx];
}
);
const index = this.lastMarker.index;
const line = this.lastMarker.line;
const column = this.lastMarker.column + 1;
throw this.errorHandler.createError(index, line, column, msg);
}
tolerateError(messageFor
gitextract_sgqz2li3/ ├── .editorconfig ├── .eslintrc.json ├── .github/ │ ├── ISSUE_TEMPLATE.md │ └── workflows/ │ ├── codestyle.yml │ ├── downstream.yml │ ├── ecma262suite.yml │ ├── nightly.yml │ └── tests.yml ├── .gitignore ├── .npmignore ├── CONTRIBUTING.md ├── ChangeLog ├── LICENSE.BSD ├── README.md ├── bin/ │ ├── esparse.js │ └── esvalidate.js ├── dist/ │ └── .gitignore ├── docs/ │ ├── Makefile │ ├── README.md │ ├── _static/ │ │ └── custom.css │ ├── conf.py │ ├── getting-started.md │ ├── index.rst │ ├── lexical-analysis.md │ ├── requirements.txt │ ├── syntactic-analysis.md │ └── syntax-tree-format.md ├── eslint/ │ ├── index.js │ └── package.json ├── package.json ├── src/ │ ├── assert.ts │ ├── character.ts │ ├── comment-handler.ts │ ├── error-handler.ts │ ├── esprima.ts │ ├── jsx-nodes.ts │ ├── jsx-parser.ts │ ├── jsx-syntax.ts │ ├── messages.ts │ ├── nodes.ts │ ├── parser.ts │ ├── scanner.ts │ ├── syntax.ts │ ├── token.ts │ ├── tokenizer.ts │ ├── tsconfig.json │ └── xhtml-entities.ts ├── test/ │ ├── .gitattributes │ ├── 3rdparty/ │ │ ├── angular-1.2.5.js │ │ ├── backbone-1.1.0.js │ │ ├── benchmark.js │ │ ├── jquery-1.9.1.js │ │ ├── jquery.mobile-1.4.2.js │ │ ├── mootools-1.4.5.js │ │ ├── syntax/ │ │ │ ├── .gitignore │ │ │ ├── README │ │ │ ├── angular-1.2.5.json │ │ │ ├── angular-1.2.5.tokens │ │ │ ├── backbone-1.1.0.json │ │ │ ├── backbone-1.1.0.tokens │ │ │ ├── jquery-1.9.1.json │ │ │ ├── jquery-1.9.1.tokens │ │ │ ├── jquery.mobile-1.4.2.json │ │ │ ├── jquery.mobile-1.4.2.tokens │ │ │ ├── mootools-1.4.5.json │ │ │ ├── mootools-1.4.5.tokens │ │ │ ├── underscore-1.5.2.json │ │ │ ├── underscore-1.5.2.tokens │ │ │ ├── yui-3.12.0.json │ │ │ └── yui-3.12.0.tokens │ │ ├── underscore-1.5.2.js │ │ └── yui-3.12.0.js │ ├── api-tests.js │ ├── benchmark-parser.js │ ├── benchmark-tokenizer.js │ ├── check-version.js │ ├── downstream.js │ ├── fixtures/ │ │ ├── ES2016/ │ │ │ ├── exponent/ │ │ │ │ ├── exp_assign.js │ │ │ │ ├── exp_assign.tree.json │ │ │ │ ├── exp_bitnot.js │ │ │ │ ├── exp_bitnot.tree.json │ │ │ │ ├── exp_delete.js │ │ │ │ ├── exp_delete.tree.json │ │ │ │ ├── exp_minus.js │ │ │ │ ├── exp_minus.tree.json │ │ │ │ ├── exp_minusminus.js │ │ │ │ ├── exp_minusminus.tree.json │ │ │ │ ├── exp_not.js │ │ │ │ ├── exp_not.tree.json │ │ │ │ ├── exp_operator.js │ │ │ │ ├── exp_operator.tree.json │ │ │ │ ├── exp_plus.js │ │ │ │ ├── exp_plus.tree.json │ │ │ │ ├── exp_plusplus.js │ │ │ │ ├── exp_plusplus.tree.json │ │ │ │ ├── exp_precedence.js │ │ │ │ ├── exp_precedence.tree.json │ │ │ │ ├── exp_typeof.js │ │ │ │ ├── exp_typeof.tree.json │ │ │ │ ├── exp_void.js │ │ │ │ ├── exp_void.tree.json │ │ │ │ ├── invalid_bitnot_exp.failure.json │ │ │ │ ├── invalid_bitnot_exp.js │ │ │ │ ├── invalid_delete_exp.failure.json │ │ │ │ ├── invalid_delete_exp.js │ │ │ │ ├── invalid_minus_exp.failure.json │ │ │ │ ├── invalid_minus_exp.js │ │ │ │ ├── invalid_not_exp.failure.json │ │ │ │ ├── invalid_not_exp.js │ │ │ │ ├── invalid_plus_exp.failure.json │ │ │ │ ├── invalid_plus_exp.js │ │ │ │ ├── invalid_typeof_exp.failure.json │ │ │ │ ├── invalid_typeof_exp.js │ │ │ │ ├── invalid_void_exp.failure.json │ │ │ │ ├── invalid_void_exp.js │ │ │ │ ├── update_exp.js │ │ │ │ └── update_exp.tree.json │ │ │ ├── identifier/ │ │ │ │ ├── gujarati_zha.js │ │ │ │ └── gujarati_zha.tree.json │ │ │ └── strict-directive/ │ │ │ ├── invalid-strict-arrow-expression-array-destructuring.js │ │ │ ├── invalid-strict-arrow-expression-array-destructuring.tree.json │ │ │ ├── invalid-strict-arrow-expression-default-value.js │ │ │ ├── invalid-strict-arrow-expression-default-value.tree.json │ │ │ ├── invalid-strict-arrow-expression-object-destructuring.js │ │ │ ├── invalid-strict-arrow-expression-object-destructuring.tree.json │ │ │ ├── invalid-strict-arrow-expression-rest.js │ │ │ ├── invalid-strict-arrow-expression-rest.tree.json │ │ │ ├── invalid-strict-function-declaration-array-destructuring.js │ │ │ ├── invalid-strict-function-declaration-array-destructuring.tree.json │ │ │ ├── invalid-strict-function-declaration-default-value.js │ │ │ ├── invalid-strict-function-declaration-default-value.tree.json │ │ │ ├── invalid-strict-function-declaration-object-destructuring.js │ │ │ ├── invalid-strict-function-declaration-object-destructuring.tree.json │ │ │ ├── invalid-strict-function-declaration-rest.js │ │ │ ├── invalid-strict-function-declaration-rest.tree.json │ │ │ ├── invalid-strict-function-expression-array-destructuring.js │ │ │ ├── invalid-strict-function-expression-array-destructuring.tree.json │ │ │ ├── invalid-strict-function-expression-default-value.js │ │ │ ├── invalid-strict-function-expression-default-value.tree.json │ │ │ ├── invalid-strict-function-expression-object-destructuring.js │ │ │ ├── invalid-strict-function-expression-object-destructuring.tree.json │ │ │ ├── invalid-strict-function-expression-rest.js │ │ │ ├── invalid-strict-function-expression-rest.tree.json │ │ │ ├── invalid-strict-generator-array-destructuring.js │ │ │ ├── invalid-strict-generator-array-destructuring.tree.json │ │ │ ├── invalid-strict-generator-default-value.js │ │ │ ├── invalid-strict-generator-default-value.tree.json │ │ │ ├── invalid-strict-generator-object-destructuring.js │ │ │ ├── invalid-strict-generator-object-destructuring.tree.json │ │ │ ├── invalid-strict-generator-rest.js │ │ │ ├── invalid-strict-generator-rest.tree.json │ │ │ ├── invalid-strict-method-array-destructuring.js │ │ │ ├── invalid-strict-method-array-destructuring.tree.json │ │ │ ├── invalid-strict-method-default-value.js │ │ │ ├── invalid-strict-method-default-value.tree.json │ │ │ ├── invalid-strict-method-object-destructuring.js │ │ │ ├── invalid-strict-method-object-destructuring.tree.json │ │ │ ├── invalid-strict-method-rest.js │ │ │ ├── invalid-strict-method-rest.tree.json │ │ │ ├── invalid-strict-setter-array-destructuring.js │ │ │ ├── invalid-strict-setter-array-destructuring.tree.json │ │ │ ├── invalid-strict-setter-default-value.js │ │ │ ├── invalid-strict-setter-default-value.tree.json │ │ │ ├── invalid-strict-setter-object-destructuring.js │ │ │ └── invalid-strict-setter-object-destructuring.tree.json │ │ ├── ES6/ │ │ │ ├── arrow-function/ │ │ │ │ ├── array-binding-pattern/ │ │ │ │ │ ├── array-binding-pattern-01.js │ │ │ │ │ ├── array-binding-pattern-01.tree.json │ │ │ │ │ ├── array-binding-pattern-02.js │ │ │ │ │ ├── array-binding-pattern-02.tree.json │ │ │ │ │ ├── array-binding-pattern-03.js │ │ │ │ │ ├── array-binding-pattern-03.tree.json │ │ │ │ │ ├── array-binding-pattern-empty.js │ │ │ │ │ ├── array-binding-pattern-empty.tree.json │ │ │ │ │ ├── elision.js │ │ │ │ │ ├── elision.tree.json │ │ │ │ │ ├── invalid-dup-param.failure.json │ │ │ │ │ ├── invalid-dup-param.js │ │ │ │ │ ├── invalid-elision-after-rest.failure.json │ │ │ │ │ └── invalid-elision-after-rest.js │ │ │ │ ├── arrow-rest-forgetting-comma.failure.json │ │ │ │ ├── arrow-rest-forgetting-comma.js │ │ │ │ ├── arrow-with-multiple-arg-and-rest.js │ │ │ │ ├── arrow-with-multiple-arg-and-rest.tree.json │ │ │ │ ├── arrow-with-multiple-rest.failure.json │ │ │ │ ├── arrow-with-multiple-rest.js │ │ │ │ ├── arrow-with-only-rest.js │ │ │ │ ├── arrow-with-only-rest.tree.json │ │ │ │ ├── concise-body-in.js │ │ │ │ ├── concise-body-in.tree.json │ │ │ │ ├── invalid-duplicated-names-rest-parameter.failure.json │ │ │ │ ├── invalid-duplicated-names-rest-parameter.js │ │ │ │ ├── invalid-duplicated-params.failure.json │ │ │ │ ├── invalid-duplicated-params.js │ │ │ │ ├── invalid-line-terminator-arrow.failure.json │ │ │ │ ├── invalid-line-terminator-arrow.js │ │ │ │ ├── invalid-param-strict-mode.failure.json │ │ │ │ ├── invalid-param-strict-mode.js │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── migrated_0007.js │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ ├── migrated_0008.js │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ ├── migrated_0009.js │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ ├── migrated_0010.js │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ ├── migrated_0011.js │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ ├── migrated_0012.js │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ ├── migrated_0013.js │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ ├── migrated_0014.js │ │ │ │ ├── migrated_0014.tree.json │ │ │ │ ├── migrated_0015.js │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ ├── migrated_0016.js │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ ├── migrated_0017.js │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ ├── migrated_0018.js │ │ │ │ ├── migrated_0018.tree.json │ │ │ │ ├── migrated_0019.js │ │ │ │ ├── migrated_0019.tree.json │ │ │ │ ├── migrated_0020.js │ │ │ │ ├── migrated_0020.tree.json │ │ │ │ ├── non-arrow-param-followed-by-arrow.failure.json │ │ │ │ ├── non-arrow-param-followed-by-arrow.js │ │ │ │ ├── non-arrow-param-followed-by-rest.failure.json │ │ │ │ ├── non-arrow-param-followed-by-rest.js │ │ │ │ ├── object-binding-pattern/ │ │ │ │ │ ├── invalid-member-expr.failure.json │ │ │ │ │ ├── invalid-member-expr.js │ │ │ │ │ ├── invalid-method-in-pattern.failure.json │ │ │ │ │ ├── invalid-method-in-pattern.js │ │ │ │ │ ├── invalid-nested-param.failure.json │ │ │ │ │ ├── invalid-nested-param.js │ │ │ │ │ ├── invalid-pattern-without-parenthesis.failure.json │ │ │ │ │ ├── invalid-pattern-without-parenthesis.js │ │ │ │ │ ├── nested-cover-grammar.js │ │ │ │ │ ├── nested-cover-grammar.tree.json │ │ │ │ │ ├── object-binding-pattern-01.js │ │ │ │ │ ├── object-binding-pattern-01.tree.json │ │ │ │ │ ├── object-binding-pattern-empty.js │ │ │ │ │ └── object-binding-pattern-empty.tree.json │ │ │ │ ├── param-with-rest-without-arrow.failure.json │ │ │ │ ├── param-with-rest-without-arrow.js │ │ │ │ ├── rest-without-arrow.failure.json │ │ │ │ └── rest-without-arrow.js │ │ │ ├── binary-integer-literal/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ └── migrated_0005.tree.json │ │ │ ├── binding-pattern/ │ │ │ │ ├── array-pattern/ │ │ │ │ │ ├── dupe-param.failure.json │ │ │ │ │ ├── dupe-param.js │ │ │ │ │ ├── elision.js │ │ │ │ │ ├── elision.tree.json │ │ │ │ │ ├── empty-pattern-catch-param.js │ │ │ │ │ ├── empty-pattern-catch-param.tree.json │ │ │ │ │ ├── empty-pattern-fn.js │ │ │ │ │ ├── empty-pattern-fn.tree.json │ │ │ │ │ ├── empty-pattern-lexical.js │ │ │ │ │ ├── empty-pattern-lexical.tree.json │ │ │ │ │ ├── empty-pattern-var.js │ │ │ │ │ ├── empty-pattern-var.tree.json │ │ │ │ │ ├── for-let-let.js │ │ │ │ │ ├── for-let-let.tree.json │ │ │ │ │ ├── hole.js │ │ │ │ │ ├── hole.tree.json │ │ │ │ │ ├── invalid-strict-for-let-let.failure.json │ │ │ │ │ ├── invalid-strict-for-let-let.js │ │ │ │ │ ├── nested-pattern.js │ │ │ │ │ ├── nested-pattern.tree.json │ │ │ │ │ ├── patterned-catch-dupe.failure.json │ │ │ │ │ ├── patterned-catch-dupe.js │ │ │ │ │ ├── patterned-catch.js │ │ │ │ │ ├── patterned-catch.tree.json │ │ │ │ │ ├── rest-element-array-pattern.js │ │ │ │ │ ├── rest-element-array-pattern.tree.json │ │ │ │ │ ├── rest-element-object-pattern.js │ │ │ │ │ ├── rest-element-object-pattern.tree.json │ │ │ │ │ ├── rest.elision.failure.json │ │ │ │ │ ├── rest.elision.js │ │ │ │ │ ├── rest.js │ │ │ │ │ ├── rest.tree.json │ │ │ │ │ ├── tailing-hold.js │ │ │ │ │ ├── tailing-hold.tree.json │ │ │ │ │ ├── var-for-in.js │ │ │ │ │ ├── var-for-in.tree.json │ │ │ │ │ ├── var_let_array.js │ │ │ │ │ ├── var_let_array.tree.json │ │ │ │ │ ├── with-default-catch-param-fail.failure.json │ │ │ │ │ ├── with-default-catch-param-fail.js │ │ │ │ │ ├── with-default-catch-param.js │ │ │ │ │ ├── with-default-catch-param.tree.json │ │ │ │ │ ├── with-default-fn.js │ │ │ │ │ ├── with-default-fn.tree.json │ │ │ │ │ ├── with-object-pattern.js │ │ │ │ │ └── with-object-pattern.tree.json │ │ │ │ └── object-pattern/ │ │ │ │ ├── elision.js │ │ │ │ ├── elision.tree.json │ │ │ │ ├── empty-catch-param.js │ │ │ │ ├── empty-catch-param.tree.json │ │ │ │ ├── empty-fn.js │ │ │ │ ├── empty-fn.tree.json │ │ │ │ ├── empty-for-lex.js │ │ │ │ ├── empty-for-lex.tree.json │ │ │ │ ├── empty-lexical.js │ │ │ │ ├── empty-lexical.tree.json │ │ │ │ ├── empty-var.js │ │ │ │ ├── empty-var.tree.json │ │ │ │ ├── for-let-let.js │ │ │ │ ├── for-let-let.tree.json │ │ │ │ ├── invalid-strict-for-let-let.failure.json │ │ │ │ ├── invalid-strict-for-let-let.js │ │ │ │ ├── nested.js │ │ │ │ ├── nested.tree.json │ │ │ │ ├── properties.js │ │ │ │ ├── properties.tree.json │ │ │ │ ├── var-for-in.js │ │ │ │ └── var-for-in.tree.json │ │ │ ├── class/ │ │ │ │ ├── invalid-labelled-class-declaration.js │ │ │ │ ├── invalid-labelled-class-declaration.tree.json │ │ │ │ ├── invalid-setter-method-rest.js │ │ │ │ ├── invalid-setter-method-rest.tree.json │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── migrated_0007.js │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ ├── migrated_0008.js │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ ├── migrated_0009.js │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ ├── migrated_0010.js │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ ├── migrated_0011.js │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ ├── migrated_0012.js │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ ├── migrated_0013.js │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ ├── migrated_0014.js │ │ │ │ ├── migrated_0014.tree.json │ │ │ │ ├── migrated_0015.js │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ ├── migrated_0016.js │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ ├── migrated_0017.js │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ ├── migrated_0018.js │ │ │ │ ├── migrated_0018.tree.json │ │ │ │ ├── migrated_0019.js │ │ │ │ ├── migrated_0019.tree.json │ │ │ │ ├── migrated_0020.js │ │ │ │ ├── migrated_0020.tree.json │ │ │ │ ├── migrated_0021.js │ │ │ │ ├── migrated_0021.tree.json │ │ │ │ ├── migrated_0022.js │ │ │ │ ├── migrated_0022.tree.json │ │ │ │ ├── migrated_0023.js │ │ │ │ ├── migrated_0023.tree.json │ │ │ │ ├── migrated_0024.js │ │ │ │ ├── migrated_0024.tree.json │ │ │ │ ├── migrated_0025.js │ │ │ │ ├── migrated_0025.tree.json │ │ │ │ ├── migrated_0026.js │ │ │ │ └── migrated_0026.tree.json │ │ │ ├── default-parameter-value/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── destructuring-assignment/ │ │ │ │ ├── array-pattern/ │ │ │ │ │ ├── dup-assignment.js │ │ │ │ │ ├── dup-assignment.tree.json │ │ │ │ │ ├── elision.js │ │ │ │ │ ├── elision.tree.json │ │ │ │ │ ├── member-expr-in-rest.js │ │ │ │ │ ├── member-expr-in-rest.tree.json │ │ │ │ │ ├── nested-assignment.js │ │ │ │ │ ├── nested-assignment.tree.json │ │ │ │ │ ├── nested-cover-grammar.js │ │ │ │ │ ├── nested-cover-grammar.tree.json │ │ │ │ │ ├── simple-assignment.js │ │ │ │ │ └── simple-assignment.tree.json │ │ │ │ ├── invalid-cover-grammar.failure.json │ │ │ │ ├── invalid-cover-grammar.js │ │ │ │ ├── invalid-group-assignment.failure.json │ │ │ │ ├── invalid-group-assignment.js │ │ │ │ └── object-pattern/ │ │ │ │ ├── empty-object-pattern-assignment.js │ │ │ │ ├── empty-object-pattern-assignment.tree.json │ │ │ │ ├── invalid-lhs-01.failure.json │ │ │ │ ├── invalid-lhs-01.js │ │ │ │ ├── invalid-lhs-02.failure.json │ │ │ │ ├── invalid-lhs-02.js │ │ │ │ ├── invalid-pattern-with-method.failure.json │ │ │ │ ├── invalid-pattern-with-method.js │ │ │ │ ├── nested-cover-grammar.js │ │ │ │ ├── nested-cover-grammar.tree.json │ │ │ │ ├── object-pattern-assignment.js │ │ │ │ └── object-pattern-assignment.tree.json │ │ │ ├── export-declaration/ │ │ │ │ ├── export-const-number.js │ │ │ │ ├── export-const-number.tree.json │ │ │ │ ├── export-default-array.js │ │ │ │ ├── export-default-array.tree.json │ │ │ │ ├── export-default-assignment.module.js │ │ │ │ ├── export-default-assignment.module.tree.json │ │ │ │ ├── export-default-class.js │ │ │ │ ├── export-default-class.tree.json │ │ │ │ ├── export-default-expression.js │ │ │ │ ├── export-default-expression.tree.json │ │ │ │ ├── export-default-function.js │ │ │ │ ├── export-default-function.tree.json │ │ │ │ ├── export-default-named-class.js │ │ │ │ ├── export-default-named-class.tree.json │ │ │ │ ├── export-default-named-function.js │ │ │ │ ├── export-default-named-function.tree.json │ │ │ │ ├── export-default-number.js │ │ │ │ ├── export-default-number.tree.json │ │ │ │ ├── export-default-object.js │ │ │ │ ├── export-default-object.tree.json │ │ │ │ ├── export-default-value.js │ │ │ │ ├── export-default-value.tree.json │ │ │ │ ├── export-from-batch.js │ │ │ │ ├── export-from-batch.tree.json │ │ │ │ ├── export-from-default.js │ │ │ │ ├── export-from-default.tree.json │ │ │ │ ├── export-from-named-as-default.js │ │ │ │ ├── export-from-named-as-default.tree.json │ │ │ │ ├── export-from-named-as-specifier.js │ │ │ │ ├── export-from-named-as-specifier.tree.json │ │ │ │ ├── export-from-named-as-specifiers.js │ │ │ │ ├── export-from-named-as-specifiers.tree.json │ │ │ │ ├── export-from-specifier.js │ │ │ │ ├── export-from-specifier.tree.json │ │ │ │ ├── export-from-specifiers.js │ │ │ │ ├── export-from-specifiers.tree.json │ │ │ │ ├── export-function-declaration.js │ │ │ │ ├── export-function-declaration.tree.json │ │ │ │ ├── export-function.js │ │ │ │ ├── export-function.tree.json │ │ │ │ ├── export-let-number.js │ │ │ │ ├── export-let-number.tree.json │ │ │ │ ├── export-named-as-default.js │ │ │ │ ├── export-named-as-default.tree.json │ │ │ │ ├── export-named-as-specifier.js │ │ │ │ ├── export-named-as-specifier.tree.json │ │ │ │ ├── export-named-as-specifiers.js │ │ │ │ ├── export-named-as-specifiers.tree.json │ │ │ │ ├── export-named-empty.js │ │ │ │ ├── export-named-empty.tree.json │ │ │ │ ├── export-named-keyword-as-specifier.js │ │ │ │ ├── export-named-keyword-as-specifier.tree.json │ │ │ │ ├── export-named-keyword-specifier.js │ │ │ │ ├── export-named-keyword-specifier.tree.json │ │ │ │ ├── export-named-specifier.js │ │ │ │ ├── export-named-specifier.tree.json │ │ │ │ ├── export-named-specifiers-comma.js │ │ │ │ ├── export-named-specifiers-comma.tree.json │ │ │ │ ├── export-named-specifiers.js │ │ │ │ ├── export-named-specifiers.tree.json │ │ │ │ ├── export-var-anonymous-function.js │ │ │ │ ├── export-var-anonymous-function.tree.json │ │ │ │ ├── export-var-number.js │ │ │ │ ├── export-var-number.tree.json │ │ │ │ ├── export-var.js │ │ │ │ ├── export-var.tree.json │ │ │ │ ├── invalid-export-batch-missing-from-clause.module.failure.json │ │ │ │ ├── invalid-export-batch-missing-from-clause.module.js │ │ │ │ ├── invalid-export-batch-token.module.failure.json │ │ │ │ ├── invalid-export-batch-token.module.js │ │ │ │ ├── invalid-export-default-equal.module.failure.json │ │ │ │ ├── invalid-export-default-equal.module.js │ │ │ │ ├── invalid-export-default-token.module.failure.json │ │ │ │ ├── invalid-export-default-token.module.js │ │ │ │ ├── invalid-export-default.module.failure.json │ │ │ │ ├── invalid-export-default.module.js │ │ │ │ ├── invalid-export-named-default.module.failure.json │ │ │ │ └── invalid-export-named-default.module.js │ │ │ ├── for-of/ │ │ │ │ ├── for-of-array-pattern-let.js │ │ │ │ ├── for-of-array-pattern-let.tree.json │ │ │ │ ├── for-of-array-pattern-var.js │ │ │ │ ├── for-of-array-pattern-var.tree.json │ │ │ │ ├── for-of-array-pattern.js │ │ │ │ ├── for-of-array-pattern.tree.json │ │ │ │ ├── for-of-let.js │ │ │ │ ├── for-of-let.tree.json │ │ │ │ ├── for-of-object-pattern-const.js │ │ │ │ ├── for-of-object-pattern-const.tree.json │ │ │ │ ├── for-of-object-pattern-var.js │ │ │ │ ├── for-of-object-pattern-var.tree.json │ │ │ │ ├── for-of-object-pattern.js │ │ │ │ ├── for-of-object-pattern.tree.json │ │ │ │ ├── for-of-with-const.js │ │ │ │ ├── for-of-with-const.tree.json │ │ │ │ ├── for-of-with-let.js │ │ │ │ ├── for-of-with-let.tree.json │ │ │ │ ├── for-of-with-var.js │ │ │ │ ├── for-of-with-var.tree.json │ │ │ │ ├── for-of.js │ │ │ │ ├── for-of.tree.json │ │ │ │ ├── invalid-assign-for-of.failure.json │ │ │ │ ├── invalid-assign-for-of.js │ │ │ │ ├── invalid-const-init.failure.json │ │ │ │ ├── invalid-const-init.js │ │ │ │ ├── invalid-decl-cls.failure.json │ │ │ │ ├── invalid-decl-cls.js │ │ │ │ ├── invalid-for-of-array-pattern.failure.json │ │ │ │ ├── invalid-for-of-array-pattern.js │ │ │ │ ├── invalid-for-of-object-pattern.failure.json │ │ │ │ ├── invalid-for-of-object-pattern.js │ │ │ │ ├── invalid-let-init.failure.json │ │ │ │ ├── invalid-let-init.js │ │ │ │ ├── invalid-lhs-init.failure.json │ │ │ │ ├── invalid-lhs-init.js │ │ │ │ ├── invalid-strict-for-of-let.failure.json │ │ │ │ ├── invalid-strict-for-of-let.js │ │ │ │ ├── invalid-var-init.failure.json │ │ │ │ ├── invalid-var-init.js │ │ │ │ ├── invalid_const_let.failure.json │ │ │ │ ├── invalid_const_let.js │ │ │ │ ├── invalid_let_let.failure.json │ │ │ │ ├── invalid_let_let.js │ │ │ │ ├── let-of-of.js │ │ │ │ ├── let-of-of.tree.json │ │ │ │ ├── unexpected-number.failure.json │ │ │ │ └── unexpected-number.js │ │ │ ├── generator/ │ │ │ │ ├── generator-declaration-with-params.js │ │ │ │ ├── generator-declaration-with-params.tree.json │ │ │ │ ├── generator-declaration-with-yield-delegate.js │ │ │ │ ├── generator-declaration-with-yield-delegate.tree.json │ │ │ │ ├── generator-declaration-with-yield.js │ │ │ │ ├── generator-declaration-with-yield.tree.json │ │ │ │ ├── generator-declaration.js │ │ │ │ ├── generator-declaration.tree.json │ │ │ │ ├── generator-expression-rest-param.js │ │ │ │ ├── generator-expression-rest-param.tree.json │ │ │ │ ├── generator-expression-with-params.js │ │ │ │ ├── generator-expression-with-params.tree.json │ │ │ │ ├── generator-expression-with-yield-delegate.js │ │ │ │ ├── generator-expression-with-yield-delegate.tree.json │ │ │ │ ├── generator-expression-with-yield.js │ │ │ │ ├── generator-expression-with-yield.tree.json │ │ │ │ ├── generator-expression.js │ │ │ │ ├── generator-expression.tree.json │ │ │ │ ├── generator-method-with-computed-name.failure.json │ │ │ │ ├── generator-method-with-computed-name.js │ │ │ │ ├── generator-method-with-invalid-computed-name.failure.json │ │ │ │ ├── generator-method-with-invalid-computed-name.js │ │ │ │ ├── generator-method-with-params.js │ │ │ │ ├── generator-method-with-params.tree.json │ │ │ │ ├── generator-method-with-yield-delegate.js │ │ │ │ ├── generator-method-with-yield-delegate.tree.json │ │ │ │ ├── generator-method-with-yield-expression.js │ │ │ │ ├── generator-method-with-yield-expression.tree.json │ │ │ │ ├── generator-method-with-yield-line-terminator.js │ │ │ │ ├── generator-method-with-yield-line-terminator.tree.json │ │ │ │ ├── generator-method-with-yield.js │ │ │ │ ├── generator-method-with-yield.tree.json │ │ │ │ ├── generator-method.js │ │ │ │ ├── generator-method.tree.json │ │ │ │ ├── generator-parameter-binding-element.failure.json │ │ │ │ ├── generator-parameter-binding-element.js │ │ │ │ ├── generator-parameter-binding-property-reserved.failure.json │ │ │ │ ├── generator-parameter-binding-property-reserved.js │ │ │ │ ├── generator-parameter-binding-property.failure.json │ │ │ │ ├── generator-parameter-binding-property.js │ │ │ │ ├── generator-parameter-computed-property-name.failure.json │ │ │ │ ├── generator-parameter-computed-property-name.js │ │ │ │ ├── generator-parameter-invalid-binding-element.failure.json │ │ │ │ ├── generator-parameter-invalid-binding-element.js │ │ │ │ ├── generator-parameter-invalid-binding-property.failure.json │ │ │ │ ├── generator-parameter-invalid-binding-property.js │ │ │ │ ├── generator-parameter-invalid-computed-property-name.failure.json │ │ │ │ ├── generator-parameter-invalid-computed-property-name.js │ │ │ │ ├── incomplete-yield-delegate.failure.json │ │ │ │ ├── incomplete-yield-delegate.js │ │ │ │ ├── invalid-labelled-generator.js │ │ │ │ ├── invalid-labelled-generator.tree.json │ │ │ │ ├── malformed-generator-method-2.failure.json │ │ │ │ ├── malformed-generator-method-2.js │ │ │ │ ├── malformed-generator-method.failure.json │ │ │ │ ├── malformed-generator-method.js │ │ │ │ ├── static-generator-method-with-computed-name.js │ │ │ │ ├── static-generator-method-with-computed-name.tree.json │ │ │ │ ├── static-generator-method.js │ │ │ │ └── static-generator-method.tree.json │ │ │ ├── identifier/ │ │ │ │ ├── dakuten_handakuten.js │ │ │ │ ├── dakuten_handakuten.tree.json │ │ │ │ ├── escaped_all.js │ │ │ │ ├── escaped_all.tree.json │ │ │ │ ├── escaped_math_alef.js │ │ │ │ ├── escaped_math_alef.tree.json │ │ │ │ ├── escaped_math_dal_part.js │ │ │ │ ├── escaped_math_dal_part.tree.json │ │ │ │ ├── escaped_math_kaf_lam.js │ │ │ │ ├── escaped_math_kaf_lam.tree.json │ │ │ │ ├── escaped_math_zain_start.js │ │ │ │ ├── escaped_math_zain_start.tree.json │ │ │ │ ├── escaped_part.js │ │ │ │ ├── escaped_part.tree.json │ │ │ │ ├── escaped_start.js │ │ │ │ ├── escaped_start.tree.json │ │ │ │ ├── estimated.js │ │ │ │ ├── estimated.tree.json │ │ │ │ ├── ethiopic_digits.js │ │ │ │ ├── ethiopic_digits.tree.json │ │ │ │ ├── invalid-hex-escape-sequence.failure.json │ │ │ │ ├── invalid-hex-escape-sequence.js │ │ │ │ ├── invalid_escaped_surrogate_pairs.failure.json │ │ │ │ ├── invalid_escaped_surrogate_pairs.js │ │ │ │ ├── invalid_expression_await.module.failure.json │ │ │ │ ├── invalid_expression_await.module.js │ │ │ │ ├── invalid_function_await.module.failure.json │ │ │ │ ├── invalid_function_await.module.js │ │ │ │ ├── invalid_id_smp.failure.json │ │ │ │ ├── invalid_id_smp.js │ │ │ │ ├── invalid_lone_surrogate.failure.json │ │ │ │ ├── invalid_lone_surrogate.source.js │ │ │ │ ├── invalid_var_await.module.failure.json │ │ │ │ ├── invalid_var_await.module.js │ │ │ │ ├── math_alef.js │ │ │ │ ├── math_alef.tree.json │ │ │ │ ├── math_dal_part.js │ │ │ │ ├── math_dal_part.tree.json │ │ │ │ ├── math_kaf_lam.js │ │ │ │ ├── math_kaf_lam.tree.json │ │ │ │ ├── math_zain_start.js │ │ │ │ ├── math_zain_start.tree.json │ │ │ │ ├── module_await.js │ │ │ │ ├── module_await.tree.json │ │ │ │ ├── valid_await.js │ │ │ │ ├── valid_await.tree.json │ │ │ │ ├── weierstrass.js │ │ │ │ ├── weierstrass.tree.json │ │ │ │ ├── weierstrass_weierstrass.js │ │ │ │ └── weierstrass_weierstrass.tree.json │ │ │ ├── import-declaration/ │ │ │ │ ├── import-default-and-named-specifiers.js │ │ │ │ ├── import-default-and-named-specifiers.tree.json │ │ │ │ ├── import-default-and-namespace-specifiers.js │ │ │ │ ├── import-default-and-namespace-specifiers.tree.json │ │ │ │ ├── import-default-as.js │ │ │ │ ├── import-default-as.tree.json │ │ │ │ ├── import-default.js │ │ │ │ ├── import-default.tree.json │ │ │ │ ├── import-jquery.js │ │ │ │ ├── import-jquery.tree.json │ │ │ │ ├── import-module.js │ │ │ │ ├── import-module.tree.json │ │ │ │ ├── import-named-as-specifier.js │ │ │ │ ├── import-named-as-specifier.tree.json │ │ │ │ ├── import-named-as-specifiers.js │ │ │ │ ├── import-named-as-specifiers.tree.json │ │ │ │ ├── import-named-empty.js │ │ │ │ ├── import-named-empty.tree.json │ │ │ │ ├── import-named-specifier.js │ │ │ │ ├── import-named-specifier.tree.json │ │ │ │ ├── import-named-specifiers-comma.js │ │ │ │ ├── import-named-specifiers-comma.tree.json │ │ │ │ ├── import-named-specifiers.js │ │ │ │ ├── import-named-specifiers.tree.json │ │ │ │ ├── import-namespace-specifier.js │ │ │ │ ├── import-namespace-specifier.tree.json │ │ │ │ ├── import-null-as-nil.js │ │ │ │ ├── import-null-as-nil.tree.json │ │ │ │ ├── invalid-import-boolean.module.failure.json │ │ │ │ ├── invalid-import-boolean.module.js │ │ │ │ ├── invalid-import-default-after-named-after-default.module.failure.json │ │ │ │ ├── invalid-import-default-after-named-after-default.module.js │ │ │ │ ├── invalid-import-default-after-named.module.failure.json │ │ │ │ ├── invalid-import-default-after-named.module.js │ │ │ │ ├── invalid-import-default-missing-module-specifier.module.failure.json │ │ │ │ ├── invalid-import-default-missing-module-specifier.module.js │ │ │ │ ├── invalid-import-default-module-specifier.module.failure.json │ │ │ │ ├── invalid-import-default-module-specifier.module.js │ │ │ │ ├── invalid-import-default.module.failure.json │ │ │ │ ├── invalid-import-default.module.js │ │ │ │ ├── invalid-import-keyword.module.failure.json │ │ │ │ ├── invalid-import-keyword.module.js │ │ │ │ ├── invalid-import-missing-comma.module.failure.json │ │ │ │ ├── invalid-import-missing-comma.module.js │ │ │ │ ├── invalid-import-missing-module-specifier.module.failure.json │ │ │ │ ├── invalid-import-missing-module-specifier.module.js │ │ │ │ ├── invalid-import-module-specifier.module.failure.json │ │ │ │ ├── invalid-import-module-specifier.module.js │ │ │ │ ├── invalid-import-named-after-named.module.failure.json │ │ │ │ ├── invalid-import-named-after-named.module.js │ │ │ │ ├── invalid-import-named-after-namespace.module.failure.json │ │ │ │ ├── invalid-import-named-after-namespace.module.js │ │ │ │ ├── invalid-import-named-as-missing-from.module.failure.json │ │ │ │ ├── invalid-import-named-as-missing-from.module.js │ │ │ │ ├── invalid-import-namespace-after-named.module.failure.json │ │ │ │ ├── invalid-import-namespace-after-named.module.js │ │ │ │ ├── invalid-import-namespace-missing-as.module.failure.json │ │ │ │ ├── invalid-import-namespace-missing-as.module.js │ │ │ │ ├── invalid-import-null.module.failure.json │ │ │ │ ├── invalid-import-null.module.js │ │ │ │ ├── invalid-import-specifiers.module.failure.json │ │ │ │ └── invalid-import-specifiers.module.js │ │ │ ├── lexical-declaration/ │ │ │ │ ├── for_let_in.js │ │ │ │ ├── for_let_in.tree.json │ │ │ │ ├── invalid_complex_binding_without_init.failure.json │ │ │ │ ├── invalid_complex_binding_without_init.js │ │ │ │ ├── invalid_const_const.failure.json │ │ │ │ ├── invalid_const_const.js │ │ │ │ ├── invalid_const_forin.failure.json │ │ │ │ ├── invalid_const_forin.js │ │ │ │ ├── invalid_const_let.failure.json │ │ │ │ ├── invalid_const_let.js │ │ │ │ ├── invalid_for_const_declarations.failure.json │ │ │ │ ├── invalid_for_const_declarations.js │ │ │ │ ├── invalid_for_const_let.failure.json │ │ │ │ ├── invalid_for_const_let.js │ │ │ │ ├── invalid_for_let_declarations.failure.json │ │ │ │ ├── invalid_for_let_declarations.js │ │ │ │ ├── invalid_for_let_init.failure.json │ │ │ │ ├── invalid_for_let_init.js │ │ │ │ ├── invalid_for_let_let.failure.json │ │ │ │ ├── invalid_for_let_let.js │ │ │ │ ├── invalid_for_let_pattern.failure.json │ │ │ │ ├── invalid_for_let_pattern.js │ │ │ │ ├── invalid_forin_const_let.failure.json │ │ │ │ ├── invalid_forin_const_let.js │ │ │ │ ├── invalid_forin_let_let.failure.json │ │ │ │ ├── invalid_forin_let_let.js │ │ │ │ ├── invalid_let_declarations.failure.json │ │ │ │ ├── invalid_let_declarations.js │ │ │ │ ├── invalid_let_for_in.failure.json │ │ │ │ ├── invalid_let_for_in.js │ │ │ │ ├── invalid_let_forin.failure.json │ │ │ │ ├── invalid_let_forin.js │ │ │ │ ├── invalid_let_init.failure.json │ │ │ │ ├── invalid_let_init.js │ │ │ │ ├── invalid_let_let.failure.json │ │ │ │ ├── invalid_let_let.js │ │ │ │ ├── invalid_strict_const_const.failure.json │ │ │ │ ├── invalid_strict_const_const.js │ │ │ │ ├── invalid_strict_const_let.failure.json │ │ │ │ ├── invalid_strict_const_let.js │ │ │ │ ├── invalid_trailing_comma_1.failure.json │ │ │ │ ├── invalid_trailing_comma_1.js │ │ │ │ ├── invalid_trailing_comma_2.failure.json │ │ │ │ ├── invalid_trailing_comma_2.js │ │ │ │ ├── invalid_trailing_comma_3.failure.json │ │ │ │ ├── invalid_trailing_comma_3.js │ │ │ │ ├── invalid_trailing_comma_4.failure.json │ │ │ │ ├── invalid_trailing_comma_4.js │ │ │ │ ├── invalid_trailing_comma_5.failure.json │ │ │ │ ├── invalid_trailing_comma_5.js │ │ │ │ ├── invalid_trailing_comma_6.failure.json │ │ │ │ ├── invalid_trailing_comma_6.js │ │ │ │ ├── invalid_trailing_comma_7.failure.json │ │ │ │ ├── invalid_trailing_comma_7.js │ │ │ │ ├── let_assign.js │ │ │ │ ├── let_assign.tree.json │ │ │ │ ├── let_identifier.js │ │ │ │ ├── let_identifier.tree.json │ │ │ │ ├── let_member.js │ │ │ │ ├── let_member.tree.json │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── module_let.module.js │ │ │ │ └── module_let.module.tree.json │ │ │ ├── meta-property/ │ │ │ │ ├── assign-new-target.js │ │ │ │ ├── assign-new-target.tree.json │ │ │ │ ├── invalid-dots.failure.json │ │ │ │ ├── invalid-dots.js │ │ │ │ ├── invalid-new-target.failure.json │ │ │ │ ├── invalid-new-target.js │ │ │ │ ├── new-new-target.js │ │ │ │ ├── new-new-target.tree.json │ │ │ │ ├── new-target-declaration.js │ │ │ │ ├── new-target-declaration.tree.json │ │ │ │ ├── new-target-expression.js │ │ │ │ ├── new-target-expression.tree.json │ │ │ │ ├── new-target-invoke.js │ │ │ │ ├── new-target-invoke.tree.json │ │ │ │ ├── new-target-precedence.js │ │ │ │ ├── new-target-precedence.tree.json │ │ │ │ ├── unknown-property.failure.json │ │ │ │ └── unknown-property.js │ │ │ ├── method-definition/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ └── migrated_0004.tree.json │ │ │ ├── object-initialiser/ │ │ │ │ ├── invalid-proto-getter-literal-identifier.failure.json │ │ │ │ ├── invalid-proto-getter-literal-identifier.js │ │ │ │ ├── invalid-proto-identifier-literal.failure.json │ │ │ │ ├── invalid-proto-identifier-literal.js │ │ │ │ ├── invalid-proto-identifiers.failure.json │ │ │ │ ├── invalid-proto-identifiers.js │ │ │ │ ├── invalid-proto-literal-identifier.failure.json │ │ │ │ ├── invalid-proto-literal-identifier.js │ │ │ │ ├── invalid-proto-literals.failure.json │ │ │ │ ├── invalid-proto-literals.js │ │ │ │ ├── invalid-proto-setter-literal-identifier.failure.json │ │ │ │ ├── invalid-proto-setter-literal-identifier.js │ │ │ │ ├── proto-identifier-getter-setter.js │ │ │ │ ├── proto-identifier-getter-setter.tree.json │ │ │ │ ├── proto-identifier-getter.js │ │ │ │ ├── proto-identifier-getter.tree.json │ │ │ │ ├── proto-identifier-method.js │ │ │ │ ├── proto-identifier-method.tree.json │ │ │ │ ├── proto-identifier-setter.js │ │ │ │ ├── proto-identifier-setter.tree.json │ │ │ │ ├── proto-identifier-shorthand.js │ │ │ │ ├── proto-identifier-shorthand.tree.json │ │ │ │ ├── proto-literal-getter-setter.js │ │ │ │ ├── proto-literal-getter-setter.tree.json │ │ │ │ ├── proto-literal-getter.js │ │ │ │ ├── proto-literal-getter.tree.json │ │ │ │ ├── proto-literal-method.js │ │ │ │ ├── proto-literal-method.tree.json │ │ │ │ ├── proto-literal-setter.js │ │ │ │ ├── proto-literal-setter.tree.json │ │ │ │ ├── proto-literal-shorthand.js │ │ │ │ ├── proto-literal-shorthand.tree.json │ │ │ │ ├── proto-shorthand-assignments.js │ │ │ │ ├── proto-shorthand-assignments.tree.json │ │ │ │ ├── proto-shorthand-identifier.js │ │ │ │ ├── proto-shorthand-identifier.tree.json │ │ │ │ ├── proto-shorthand-literal.js │ │ │ │ ├── proto-shorthand-literal.tree.json │ │ │ │ ├── proto-shorthands.js │ │ │ │ └── proto-shorthands.tree.json │ │ │ ├── object-literal-property-value-shorthand/ │ │ │ │ ├── migrated_0000.js │ │ │ │ └── migrated_0000.tree.json │ │ │ ├── octal-integer-literal/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ └── migrated_0006.tree.json │ │ │ ├── program/ │ │ │ │ ├── module/ │ │ │ │ │ ├── invalid-delete.module.failure.json │ │ │ │ │ ├── invalid-delete.module.js │ │ │ │ │ ├── invalid-export-if.module.failure.json │ │ │ │ │ ├── invalid-export-if.module.js │ │ │ │ │ ├── invalid-export-in-function.module.failure.json │ │ │ │ │ ├── invalid-export-in-function.module.js │ │ │ │ │ ├── invalid-import-in-function.module.failure.json │ │ │ │ │ ├── invalid-import-in-function.module.js │ │ │ │ │ ├── invalid-with.module.failure.json │ │ │ │ │ └── invalid-with.module.js │ │ │ │ └── script/ │ │ │ │ ├── invalid-export-declaration.failure.json │ │ │ │ ├── invalid-export-declaration.js │ │ │ │ ├── invalid-import-declaration.failure.json │ │ │ │ └── invalid-import-declaration.js │ │ │ ├── rest-parameter/ │ │ │ │ ├── arrow-rest-parameter-array.js │ │ │ │ ├── arrow-rest-parameter-array.tree.json │ │ │ │ ├── arrow-rest-parameter-object.js │ │ │ │ ├── arrow-rest-parameter-object.tree.json │ │ │ │ ├── function-declaration.js │ │ │ │ ├── function-declaration.tree.json │ │ │ │ ├── function-expression.js │ │ │ │ ├── function-expression.tree.json │ │ │ │ ├── invalid-setter-rest.js │ │ │ │ ├── invalid-setter-rest.tree.json │ │ │ │ ├── object-method.js │ │ │ │ ├── object-method.tree.json │ │ │ │ ├── object-shorthand-method.js │ │ │ │ ├── object-shorthand-method.tree.json │ │ │ │ ├── rest-parameter-array.js │ │ │ │ ├── rest-parameter-array.tree.json │ │ │ │ ├── rest-parameter-object.js │ │ │ │ └── rest-parameter-object.tree.json │ │ │ ├── spread-element/ │ │ │ │ ├── call-multi-spread.js │ │ │ │ ├── call-multi-spread.tree.json │ │ │ │ ├── call-spread-default.js │ │ │ │ ├── call-spread-default.tree.json │ │ │ │ ├── call-spread-first.js │ │ │ │ ├── call-spread-first.tree.json │ │ │ │ ├── call-spread-number.js │ │ │ │ ├── call-spread-number.tree.json │ │ │ │ ├── call-spread.js │ │ │ │ ├── call-spread.tree.json │ │ │ │ ├── invalid-call-dot-dot.failure.json │ │ │ │ ├── invalid-call-dot-dot.js │ │ │ │ ├── invalid-call-dots.failure.json │ │ │ │ ├── invalid-call-dots.js │ │ │ │ ├── invalid-call-spreads.failure.json │ │ │ │ ├── invalid-call-spreads.js │ │ │ │ ├── invalid-new-dot-dot.failure.json │ │ │ │ ├── invalid-new-dot-dot.js │ │ │ │ ├── invalid-new-dots.failure.json │ │ │ │ ├── invalid-new-dots.js │ │ │ │ ├── invalid-new-spreads.failure.json │ │ │ │ ├── invalid-new-spreads.js │ │ │ │ ├── new-multi-spread.js │ │ │ │ ├── new-multi-spread.tree.json │ │ │ │ ├── new-spread-default.js │ │ │ │ ├── new-spread-default.tree.json │ │ │ │ ├── new-spread-first.js │ │ │ │ ├── new-spread-first.tree.json │ │ │ │ ├── new-spread-number.js │ │ │ │ ├── new-spread-number.tree.json │ │ │ │ ├── new-spread.js │ │ │ │ └── new-spread.tree.json │ │ │ ├── super-property/ │ │ │ │ ├── arrow_super.js │ │ │ │ ├── arrow_super.tree.json │ │ │ │ ├── constructor_super.js │ │ │ │ ├── constructor_super.tree.json │ │ │ │ ├── invalid_super_access.failure.json │ │ │ │ ├── invalid_super_access.js │ │ │ │ ├── invalid_super_id.failure.json │ │ │ │ ├── invalid_super_id.js │ │ │ │ ├── invalid_super_not_inside_function.failure.json │ │ │ │ ├── invalid_super_not_inside_function.js │ │ │ │ ├── new_super.js │ │ │ │ ├── new_super.tree.json │ │ │ │ ├── super_computed.js │ │ │ │ ├── super_computed.tree.json │ │ │ │ ├── super_member.js │ │ │ │ └── super_member.tree.json │ │ │ ├── template-literals/ │ │ │ │ ├── after-switch.failure.json │ │ │ │ ├── after-switch.js │ │ │ │ ├── dollar-sign.js │ │ │ │ ├── dollar-sign.tree.json │ │ │ │ ├── escape-sequences.source.js │ │ │ │ ├── escape-sequences.tree.json │ │ │ │ ├── invalid-escape.failure.json │ │ │ │ ├── invalid-escape.js │ │ │ │ ├── invalid-hex-escape-sequence.failure.json │ │ │ │ ├── invalid-hex-escape-sequence.js │ │ │ │ ├── line-terminators.source.js │ │ │ │ ├── line-terminators.tree.json │ │ │ │ ├── literal-escape-sequences.source.js │ │ │ │ ├── literal-escape-sequences.tree.json │ │ │ │ ├── nested-function-with-object-pattern.js │ │ │ │ ├── nested-function-with-object-pattern.tree.json │ │ │ │ ├── new-expression.js │ │ │ │ ├── new-expression.tree.json │ │ │ │ ├── octal-literal.failure.json │ │ │ │ ├── octal-literal.js │ │ │ │ ├── strict-octal-literal.failure.json │ │ │ │ ├── strict-octal-literal.js │ │ │ │ ├── tagged-interpolation.js │ │ │ │ ├── tagged-interpolation.tree.json │ │ │ │ ├── tagged-nested-with-object-literal.js │ │ │ │ ├── tagged-nested-with-object-literal.tree.json │ │ │ │ ├── tagged.js │ │ │ │ ├── tagged.tree.json │ │ │ │ ├── unclosed-interpolation.failure.json │ │ │ │ ├── unclosed-interpolation.js │ │ │ │ ├── unclosed-nested.failure.json │ │ │ │ ├── unclosed-nested.js │ │ │ │ ├── unclosed.failure.json │ │ │ │ ├── unclosed.js │ │ │ │ ├── untagged.js │ │ │ │ └── untagged.tree.json │ │ │ ├── unicode-code-point-escape-sequence/ │ │ │ │ ├── migrated_0000.source.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.source.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.source.js │ │ │ │ └── migrated_0002.tree.json │ │ │ └── yield/ │ │ │ ├── invalid-yield-binding-property.failure.json │ │ │ ├── invalid-yield-binding-property.js │ │ │ ├── invalid-yield-expression.failure.json │ │ │ ├── invalid-yield-expression.js │ │ │ ├── invalid-yield-generator-arrow-default.failure.json │ │ │ ├── invalid-yield-generator-arrow-default.js │ │ │ ├── invalid-yield-generator-arrow-parameter.failure.json │ │ │ ├── invalid-yield-generator-arrow-parameter.js │ │ │ ├── invalid-yield-generator-arrow-parameters.failure.json │ │ │ ├── invalid-yield-generator-arrow-parameters.js │ │ │ ├── invalid-yield-generator-catch.failure.json │ │ │ ├── invalid-yield-generator-catch.js │ │ │ ├── invalid-yield-generator-declaration.failure.json │ │ │ ├── invalid-yield-generator-declaration.js │ │ │ ├── invalid-yield-generator-export-default.module.failure.json │ │ │ ├── invalid-yield-generator-export-default.module.js │ │ │ ├── invalid-yield-generator-expression-name.failure.json │ │ │ ├── invalid-yield-generator-expression-name.js │ │ │ ├── invalid-yield-generator-expression-parameter.failure.json │ │ │ ├── invalid-yield-generator-expression-parameter.js │ │ │ ├── invalid-yield-generator-expression-rest.failure.json │ │ │ ├── invalid-yield-generator-expression-rest.js │ │ │ ├── invalid-yield-generator-function-declaration.failure.json │ │ │ ├── invalid-yield-generator-function-declaration.js │ │ │ ├── invalid-yield-generator-lexical-declaration.failure.json │ │ │ ├── invalid-yield-generator-lexical-declaration.js │ │ │ ├── invalid-yield-generator-member-expression.failure.json │ │ │ ├── invalid-yield-generator-member-expression.js │ │ │ ├── invalid-yield-generator-parameter.failure.json │ │ │ ├── invalid-yield-generator-parameter.js │ │ │ ├── invalid-yield-generator-rest.failure.json │ │ │ ├── invalid-yield-generator-rest.js │ │ │ ├── invalid-yield-generator-strict-function-expression.failure.json │ │ │ ├── invalid-yield-generator-strict-function-expression.js │ │ │ ├── invalid-yield-generator-strict-function-parameter.failure.json │ │ │ ├── invalid-yield-generator-strict-function-parameter.js │ │ │ ├── invalid-yield-generator-variable-declaration.failure.json │ │ │ ├── invalid-yield-generator-variable-declaration.js │ │ │ ├── invalid-yield-object-methods.js │ │ │ ├── invalid-yield-object-methods.tree.json │ │ │ ├── invalid-yield-object-property-getter.js │ │ │ ├── invalid-yield-object-property-getter.tree.json │ │ │ ├── invalid-yield-object-property-setter.js │ │ │ ├── invalid-yield-object-property-setter.tree.json │ │ │ ├── invalid-yield-strict-array-pattern.failure.json │ │ │ ├── invalid-yield-strict-array-pattern.js │ │ │ ├── invalid-yield-strict-arrow-parameter-default.failure.json │ │ │ ├── invalid-yield-strict-arrow-parameter-default.js │ │ │ ├── invalid-yield-strict-arrow-parameter-name.failure.json │ │ │ ├── invalid-yield-strict-arrow-parameter-name.js │ │ │ ├── invalid-yield-strict-binding-element.failure.json │ │ │ ├── invalid-yield-strict-binding-element.js │ │ │ ├── invalid-yield-strict-catch-parameter.failure.json │ │ │ ├── invalid-yield-strict-catch-parameter.js │ │ │ ├── invalid-yield-strict-formal-parameter.failure.json │ │ │ ├── invalid-yield-strict-formal-parameter.js │ │ │ ├── invalid-yield-strict-function-declaration.failure.json │ │ │ ├── invalid-yield-strict-function-declaration.js │ │ │ ├── invalid-yield-strict-function-expression.failure.json │ │ │ ├── invalid-yield-strict-function-expression.js │ │ │ ├── invalid-yield-strict-identifier.failure.json │ │ │ ├── invalid-yield-strict-identifier.js │ │ │ ├── invalid-yield-strict-lexical-declaration.failure.json │ │ │ ├── invalid-yield-strict-lexical-declaration.js │ │ │ ├── invalid-yield-strict-rest-parameter.failure.json │ │ │ ├── invalid-yield-strict-rest-parameter.js │ │ │ ├── invalid-yield-strict-variable-declaration.failure.json │ │ │ ├── invalid-yield-strict-variable-declaration.js │ │ │ ├── ternary-yield.js │ │ │ ├── ternary-yield.tree.json │ │ │ ├── yield-arg-array.js │ │ │ ├── yield-arg-array.tree.json │ │ │ ├── yield-arg-bitnot.js │ │ │ ├── yield-arg-bitnot.tree.json │ │ │ ├── yield-arg-class.js │ │ │ ├── yield-arg-class.tree.json │ │ │ ├── yield-arg-delete.js │ │ │ ├── yield-arg-delete.tree.json │ │ │ ├── yield-arg-function.js │ │ │ ├── yield-arg-function.tree.json │ │ │ ├── yield-arg-group.js │ │ │ ├── yield-arg-group.tree.json │ │ │ ├── yield-arg-let.js │ │ │ ├── yield-arg-let.tree.json │ │ │ ├── yield-arg-minus.js │ │ │ ├── yield-arg-minus.tree.json │ │ │ ├── yield-arg-minusminus.js │ │ │ ├── yield-arg-minusminus.tree.json │ │ │ ├── yield-arg-new.js │ │ │ ├── yield-arg-new.tree.json │ │ │ ├── yield-arg-not.js │ │ │ ├── yield-arg-not.tree.json │ │ │ ├── yield-arg-object.js │ │ │ ├── yield-arg-object.tree.json │ │ │ ├── yield-arg-plus.js │ │ │ ├── yield-arg-plus.tree.json │ │ │ ├── yield-arg-plusplus.js │ │ │ ├── yield-arg-plusplus.tree.json │ │ │ ├── yield-arg-regexp1.js │ │ │ ├── yield-arg-regexp1.tree.json │ │ │ ├── yield-arg-regexp2.js │ │ │ ├── yield-arg-regexp2.tree.json │ │ │ ├── yield-arg-super.js │ │ │ ├── yield-arg-super.tree.json │ │ │ ├── yield-arg-this.js │ │ │ ├── yield-arg-this.tree.json │ │ │ ├── yield-arg-typeof.js │ │ │ ├── yield-arg-typeof.tree.json │ │ │ ├── yield-arg-void.js │ │ │ ├── yield-arg-void.tree.json │ │ │ ├── yield-array-pattern.js │ │ │ ├── yield-array-pattern.tree.json │ │ │ ├── yield-arrow-concise-body.js │ │ │ ├── yield-arrow-concise-body.tree.json │ │ │ ├── yield-arrow-function-body.js │ │ │ ├── yield-arrow-function-body.tree.json │ │ │ ├── yield-arrow-parameter-default.js │ │ │ ├── yield-arrow-parameter-default.tree.json │ │ │ ├── yield-arrow-parameter-name.js │ │ │ ├── yield-arrow-parameter-name.tree.json │ │ │ ├── yield-binding-element.js │ │ │ ├── yield-binding-element.tree.json │ │ │ ├── yield-binding-property.js │ │ │ ├── yield-binding-property.tree.json │ │ │ ├── yield-call-expression-property.js │ │ │ ├── yield-call-expression-property.tree.json │ │ │ ├── yield-catch-parameter.js │ │ │ ├── yield-catch-parameter.tree.json │ │ │ ├── yield-expression-precedence.js │ │ │ ├── yield-expression-precedence.tree.json │ │ │ ├── yield-function-declaration-formal-parameter.js │ │ │ ├── yield-function-declaration-formal-parameter.tree.json │ │ │ ├── yield-function-declaration.js │ │ │ ├── yield-function-declaration.tree.json │ │ │ ├── yield-function-expression-parameter.js │ │ │ ├── yield-function-expression-parameter.tree.json │ │ │ ├── yield-function-expression.js │ │ │ ├── yield-function-expression.tree.json │ │ │ ├── yield-generator-arrow-concise-body.js │ │ │ ├── yield-generator-arrow-concise-body.tree.json │ │ │ ├── yield-generator-arrow-default.js │ │ │ ├── yield-generator-arrow-default.tree.json │ │ │ ├── yield-generator-arrow-function-body.js │ │ │ ├── yield-generator-arrow-function-body.tree.json │ │ │ ├── yield-generator-declaration.js │ │ │ ├── yield-generator-declaration.tree.json │ │ │ ├── yield-generator-default-parameter.js │ │ │ ├── yield-generator-default-parameter.tree.json │ │ │ ├── yield-generator-function-expression.js │ │ │ ├── yield-generator-function-expression.tree.json │ │ │ ├── yield-generator-function-parameter.js │ │ │ ├── yield-generator-function-parameter.tree.json │ │ │ ├── yield-generator-method.js │ │ │ ├── yield-generator-method.tree.json │ │ │ ├── yield-generator-parameter-object-pattern.js │ │ │ ├── yield-generator-parameter-object-pattern.tree.json │ │ │ ├── yield-lexical-declaration.js │ │ │ ├── yield-lexical-declaration.tree.json │ │ │ ├── yield-member-expression-property.js │ │ │ ├── yield-member-expression-property.tree.json │ │ │ ├── yield-method.js │ │ │ ├── yield-method.tree.json │ │ │ ├── yield-parameter-object-pattern.js │ │ │ ├── yield-parameter-object-pattern.tree.json │ │ │ ├── yield-rest-parameter.js │ │ │ ├── yield-rest-parameter.tree.json │ │ │ ├── yield-strict-binding-property.js │ │ │ ├── yield-strict-binding-property.tree.json │ │ │ ├── yield-strict-method.js │ │ │ ├── yield-strict-method.tree.json │ │ │ ├── yield-super-property.js │ │ │ ├── yield-super-property.tree.json │ │ │ ├── yield-variable-declaration.js │ │ │ ├── yield-variable-declaration.tree.json │ │ │ ├── yield-yield-expression-delegate.js │ │ │ ├── yield-yield-expression-delegate.tree.json │ │ │ ├── yield-yield-expression.js │ │ │ └── yield-yield-expression.tree.json │ │ ├── JSX/ │ │ │ ├── attribute-double-quoted-string.js │ │ │ ├── attribute-double-quoted-string.tree.json │ │ │ ├── attribute-element.js │ │ │ ├── attribute-element.tree.json │ │ │ ├── attribute-empty-entity1.js │ │ │ ├── attribute-empty-entity1.tree.json │ │ │ ├── attribute-empty-entity2.js │ │ │ ├── attribute-empty-entity2.tree.json │ │ │ ├── attribute-entity-decimal.js │ │ │ ├── attribute-entity-decimal.tree.json │ │ │ ├── attribute-entity-hex.js │ │ │ ├── attribute-entity-hex.tree.json │ │ │ ├── attribute-entity.js │ │ │ ├── attribute-entity.tree.json │ │ │ ├── attribute-expression.js │ │ │ ├── attribute-expression.tree.json │ │ │ ├── attribute-illegal-short-entity.js │ │ │ ├── attribute-illegal-short-entity.tree.json │ │ │ ├── attribute-invalid-entity.js │ │ │ ├── attribute-invalid-entity.tree.json │ │ │ ├── attribute-multi-entities.js │ │ │ ├── attribute-multi-entities.tree.json │ │ │ ├── attribute-non-hex-entity.js │ │ │ ├── attribute-non-hex-entity.tree.json │ │ │ ├── attribute-non-numeric-entity.js │ │ │ ├── attribute-non-numeric-entity.tree.json │ │ │ ├── attribute-null-value.js │ │ │ ├── attribute-null-value.tree.json │ │ │ ├── attribute-primary.js │ │ │ ├── attribute-primary.tree.json │ │ │ ├── attribute-single-quoted-string.js │ │ │ ├── attribute-single-quoted-string.tree.json │ │ │ ├── attribute-spread.js │ │ │ ├── attribute-spread.tree.json │ │ │ ├── attribute-unknown-entity.js │ │ │ ├── attribute-unknown-entity.tree.json │ │ │ ├── attribute-unterminated-entity.js │ │ │ ├── attribute-unterminated-entity.tree.json │ │ │ ├── attribute-x-entity.js │ │ │ ├── attribute-x-entity.tree.json │ │ │ ├── container-numeric-literal.js │ │ │ ├── container-numeric-literal.tree.json │ │ │ ├── container-object-expression.js │ │ │ ├── container-object-expression.tree.json │ │ │ ├── container-series.js │ │ │ ├── container-series.tree.json │ │ │ ├── empty-child-comment.js │ │ │ ├── empty-child-comment.tree.json │ │ │ ├── empty-expression-container.js │ │ │ ├── empty-expression-container.tree.json │ │ │ ├── fragment-with-child.js │ │ │ ├── fragment-with-child.tree.json │ │ │ ├── fragment-with-children.js │ │ │ ├── fragment-with-children.tree.json │ │ │ ├── fragment.js │ │ │ ├── fragment.tree.json │ │ │ ├── inside-group-expression.js │ │ │ ├── inside-group-expression.tree.json │ │ │ ├── invalid-attribute-value-trail.failure.json │ │ │ ├── invalid-attribute-value-trail.js │ │ │ ├── invalid-closing-trail.failure.json │ │ │ ├── invalid-closing-trail.js │ │ │ ├── invalid-element.failure.json │ │ │ ├── invalid-element.js │ │ │ ├── invalid-empty-attribute-expression.failure.json │ │ │ ├── invalid-empty-attribute-expression.js │ │ │ ├── invalid-empty-selfclosing.failure.json │ │ │ ├── invalid-empty-selfclosing.js │ │ │ ├── invalid-fragment-tag.failure.json │ │ │ ├── invalid-fragment-tag.js │ │ │ ├── invalid-fragment.failure.json │ │ │ ├── invalid-fragment.js │ │ │ ├── invalid-incomplete-namespace.failure.json │ │ │ ├── invalid-incomplete-namespace.js │ │ │ ├── invalid-match-member.failure.json │ │ │ ├── invalid-match-member.js │ │ │ ├── invalid-match-name-namespace.failure.json │ │ │ ├── invalid-match-name-namespace.js │ │ │ ├── invalid-match-namespace-name.failure.json │ │ │ ├── invalid-match-namespace-name.js │ │ │ ├── invalid-match-namespace.failure.json │ │ │ ├── invalid-match-namespace.js │ │ │ ├── invalid-match.failure.json │ │ │ ├── invalid-match.js │ │ │ ├── invalid-member-incomplete.failure.json │ │ │ ├── invalid-member-incomplete.js │ │ │ ├── invalid-no-closing.failure.json │ │ │ ├── invalid-no-closing.js │ │ │ ├── invalid-self-closing.failure.json │ │ │ ├── invalid-self-closing.js │ │ │ ├── invalid-start-member.failure.json │ │ │ ├── invalid-start-member.js │ │ │ ├── invalid-start-namespace.failure.json │ │ │ ├── invalid-start-namespace.js │ │ │ ├── long-member-pair.js │ │ │ ├── long-member-pair.tree.json │ │ │ ├── long-member.js │ │ │ ├── long-member.tree.json │ │ │ ├── multi-attributes.js │ │ │ ├── multi-attributes.tree.json │ │ │ ├── multiline-crlf-text.js │ │ │ ├── multiline-crlf-text.tree.json │ │ │ ├── multiline-text.js │ │ │ ├── multiline-text.tree.json │ │ │ ├── nested-elements.js │ │ │ ├── nested-elements.tree.json │ │ │ ├── null-attribute-value.js │ │ │ ├── null-attribute-value.tree.json │ │ │ ├── simple-deeply-nested-pair.js │ │ │ ├── simple-deeply-nested-pair.tree.json │ │ │ ├── simple-expression-container.js │ │ │ ├── simple-expression-container.tree.json │ │ │ ├── simple-member-pair.js │ │ │ ├── simple-member-pair.tree.json │ │ │ ├── simple-member.js │ │ │ ├── simple-member.tree.json │ │ │ ├── simple-namespace-pair.js │ │ │ ├── simple-namespace-pair.tree.json │ │ │ ├── simple-namespace.js │ │ │ ├── simple-namespace.tree.json │ │ │ ├── simple-nested-pair.js │ │ │ ├── simple-nested-pair.tree.json │ │ │ ├── simple-pair.js │ │ │ ├── simple-pair.tree.json │ │ │ ├── simple-selfclosing-linefeed.js │ │ │ ├── simple-selfclosing-linefeed.tree.json │ │ │ ├── simple-selfclosing-whitespace.js │ │ │ ├── simple-selfclosing-whitespace.tree.json │ │ │ ├── simple-selfclosing.js │ │ │ ├── simple-selfclosing.tree.json │ │ │ ├── simple-text.js │ │ │ ├── simple-text.tree.json │ │ │ ├── template-literal.js │ │ │ ├── template-literal.tree.json │ │ │ ├── yield-jsx-element.js │ │ │ └── yield-jsx-element.tree.json │ │ ├── automatic-semicolon-insertion/ │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tree.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0001.tree.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0002.tree.json │ │ │ ├── migrated_0003.js │ │ │ ├── migrated_0003.tree.json │ │ │ ├── migrated_0004.js │ │ │ ├── migrated_0004.tree.json │ │ │ ├── migrated_0005.js │ │ │ ├── migrated_0005.tree.json │ │ │ ├── migrated_0006.js │ │ │ ├── migrated_0006.tree.json │ │ │ ├── migrated_0007.js │ │ │ ├── migrated_0007.tree.json │ │ │ ├── migrated_0008.js │ │ │ ├── migrated_0008.tree.json │ │ │ ├── migrated_0009.js │ │ │ ├── migrated_0009.tree.json │ │ │ ├── migrated_0010.js │ │ │ ├── migrated_0010.tree.json │ │ │ ├── migrated_0011.js │ │ │ ├── migrated_0011.tree.json │ │ │ ├── migrated_0012.js │ │ │ ├── migrated_0012.tree.json │ │ │ ├── migrated_0013.js │ │ │ ├── migrated_0013.tree.json │ │ │ ├── migrated_0014.js │ │ │ ├── migrated_0014.tree.json │ │ │ ├── migrated_0015.js │ │ │ └── migrated_0015.tree.json │ │ ├── comment/ │ │ │ ├── html-comment.module.js │ │ │ ├── html-comment.module.tree.json │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tree.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0001.tree.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0002.tree.json │ │ │ ├── migrated_0003.js │ │ │ ├── migrated_0003.tree.json │ │ │ ├── migrated_0004.js │ │ │ ├── migrated_0004.tree.json │ │ │ ├── migrated_0005.js │ │ │ ├── migrated_0005.tree.json │ │ │ ├── migrated_0006.js │ │ │ ├── migrated_0006.tree.json │ │ │ ├── migrated_0007.js │ │ │ ├── migrated_0007.tree.json │ │ │ ├── migrated_0008.js │ │ │ ├── migrated_0008.tree.json │ │ │ ├── migrated_0009.js │ │ │ ├── migrated_0009.tree.json │ │ │ ├── migrated_0010.js │ │ │ ├── migrated_0010.tree.json │ │ │ ├── migrated_0011.js │ │ │ ├── migrated_0011.tree.json │ │ │ ├── migrated_0012.js │ │ │ ├── migrated_0012.tree.json │ │ │ ├── migrated_0013.js │ │ │ ├── migrated_0013.tree.json │ │ │ ├── migrated_0014.js │ │ │ ├── migrated_0014.tree.json │ │ │ ├── migrated_0015.js │ │ │ ├── migrated_0015.tree.json │ │ │ ├── migrated_0016.js │ │ │ ├── migrated_0016.tree.json │ │ │ ├── migrated_0017.js │ │ │ ├── migrated_0017.tree.json │ │ │ ├── migrated_0018.js │ │ │ ├── migrated_0018.tree.json │ │ │ ├── migrated_0019.js │ │ │ ├── migrated_0019.tree.json │ │ │ ├── migrated_0020.js │ │ │ ├── migrated_0020.tree.json │ │ │ ├── migrated_0021.js │ │ │ ├── migrated_0021.tree.json │ │ │ ├── migrated_0022.js │ │ │ ├── migrated_0022.tree.json │ │ │ ├── migrated_0023.js │ │ │ ├── migrated_0023.tree.json │ │ │ ├── migrated_0024.js │ │ │ ├── migrated_0024.tree.json │ │ │ ├── migrated_0025.js │ │ │ ├── migrated_0025.tree.json │ │ │ ├── migrated_0026.js │ │ │ ├── migrated_0026.tree.json │ │ │ ├── migrated_0027.js │ │ │ ├── migrated_0027.tree.json │ │ │ ├── migrated_0028.js │ │ │ ├── migrated_0028.tree.json │ │ │ ├── migrated_0029.js │ │ │ ├── migrated_0029.tree.json │ │ │ ├── migrated_0030.js │ │ │ ├── migrated_0030.tree.json │ │ │ ├── migrated_0031.js │ │ │ ├── migrated_0031.tree.json │ │ │ ├── migrated_0032.js │ │ │ ├── migrated_0032.tree.json │ │ │ ├── migrated_0033.js │ │ │ ├── migrated_0033.tree.json │ │ │ ├── migrated_0034.js │ │ │ ├── migrated_0034.tree.json │ │ │ ├── migrated_0035.js │ │ │ ├── migrated_0035.tree.json │ │ │ ├── migrated_0036.js │ │ │ ├── migrated_0036.tree.json │ │ │ ├── migrated_0037.js │ │ │ ├── migrated_0037.tree.json │ │ │ ├── migrated_0038.js │ │ │ ├── migrated_0038.tree.json │ │ │ ├── migrated_0039.js │ │ │ ├── migrated_0039.tree.json │ │ │ ├── migrated_0040.js │ │ │ ├── migrated_0040.tree.json │ │ │ ├── migrated_0041.js │ │ │ ├── migrated_0041.tree.json │ │ │ ├── migrated_0042.js │ │ │ ├── migrated_0042.tree.json │ │ │ ├── migrated_0043.js │ │ │ ├── migrated_0043.tree.json │ │ │ ├── migrated_0044.js │ │ │ ├── migrated_0044.tree.json │ │ │ ├── migrated_0045.js │ │ │ ├── migrated_0045.tree.json │ │ │ ├── migrated_0046.js │ │ │ ├── migrated_0046.tree.json │ │ │ ├── migrated_0047.js │ │ │ ├── migrated_0047.tree.json │ │ │ ├── migrated_0048.js │ │ │ ├── migrated_0048.tree.json │ │ │ ├── migrated_0049.js │ │ │ ├── migrated_0049.tree.json │ │ │ ├── migrated_0050.js │ │ │ ├── migrated_0050.tree.json │ │ │ ├── migrated_0051.js │ │ │ ├── migrated_0051.tree.json │ │ │ ├── migrated_0052.js │ │ │ ├── migrated_0052.tree.json │ │ │ ├── migrated_0053.js │ │ │ ├── migrated_0053.tree.json │ │ │ ├── migrated_0054.js │ │ │ ├── migrated_0054.tree.json │ │ │ ├── migrated_0055.js │ │ │ └── migrated_0055.tree.json │ │ ├── declaration/ │ │ │ ├── const/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── function/ │ │ │ │ ├── dupe-param.failure.json │ │ │ │ ├── dupe-param.js │ │ │ │ ├── invalid-strict-labelled-function-declaration.js │ │ │ │ ├── invalid-strict-labelled-function-declaration.tree.json │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── migrated_0007.js │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ ├── migrated_0008.js │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ ├── migrated_0009.js │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ ├── migrated_0010.js │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ ├── migrated_0011.js │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ ├── migrated_0012.js │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ ├── migrated_0013.js │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ ├── migrated_0014.js │ │ │ │ └── migrated_0014.tree.json │ │ │ └── let/ │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tree.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0001.tree.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0002.tree.json │ │ │ ├── migrated_0003.js │ │ │ └── migrated_0003.tree.json │ │ ├── directive-prolog/ │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tree.json │ │ │ ├── migrated_0001.js │ │ │ └── migrated_0001.tree.json │ │ ├── es2017/ │ │ │ ├── async/ │ │ │ │ ├── arrows/ │ │ │ │ │ ├── assigned-async-arrow.js │ │ │ │ │ ├── assigned-async-arrow.tree.json │ │ │ │ │ ├── async-arrow-as-last-parameter.js │ │ │ │ │ ├── async-arrow-as-last-parameter.tree.json │ │ │ │ │ ├── async-arrow-as-parameter.js │ │ │ │ │ ├── async-arrow-as-parameter.tree.json │ │ │ │ │ ├── async-arrow-multi-args-await.js │ │ │ │ │ ├── async-arrow-multi-args-await.tree.json │ │ │ │ │ ├── async-arrow-multi-args-concise-await.js │ │ │ │ │ ├── async-arrow-multi-args-concise-await.tree.json │ │ │ │ │ ├── async-arrow-multi-args-concise.js │ │ │ │ │ ├── async-arrow-multi-args-concise.tree.json │ │ │ │ │ ├── async-arrow-multi-args.js │ │ │ │ │ ├── async-arrow-multi-args.tree.json │ │ │ │ │ ├── async-arrow-no-arg.js │ │ │ │ │ ├── async-arrow-no-arg.tree.json │ │ │ │ │ ├── async-arrow-object-pattern-parameter.js │ │ │ │ │ ├── async-arrow-object-pattern-parameter.tree.json │ │ │ │ │ ├── async-arrow-one-arg-await.js │ │ │ │ │ ├── async-arrow-one-arg-await.tree.json │ │ │ │ │ ├── async-arrow-one-arg-concise-await.js │ │ │ │ │ ├── async-arrow-one-arg-concise-await.tree.json │ │ │ │ │ ├── async-arrow-one-arg-concise.js │ │ │ │ │ ├── async-arrow-one-arg-concise.tree.json │ │ │ │ │ ├── async-arrow-one-arg.js │ │ │ │ │ ├── async-arrow-one-arg.tree.json │ │ │ │ │ ├── async-arrow-parenthesized-await.js │ │ │ │ │ ├── async-arrow-parenthesized-await.tree.json │ │ │ │ │ ├── async-arrow-parenthesized-concise-await.js │ │ │ │ │ ├── async-arrow-parenthesized-concise-await.tree.json │ │ │ │ │ ├── async-arrow-parenthesized-concise.js │ │ │ │ │ ├── async-arrow-parenthesized-concise.tree.json │ │ │ │ │ ├── async-arrow-parenthesized-yield.js │ │ │ │ │ ├── async-arrow-parenthesized-yield.tree.json │ │ │ │ │ ├── async-arrow-parenthesized.js │ │ │ │ │ ├── async-arrow-parenthesized.tree.json │ │ │ │ │ ├── async-arrow-pattern-parameter.js │ │ │ │ │ ├── async-arrow-pattern-parameter.tree.json │ │ │ │ │ ├── async-arrow-rest.js │ │ │ │ │ ├── async-arrow-rest.tree.json │ │ │ │ │ ├── async-arrow-trailing-comma.js │ │ │ │ │ ├── async-arrow-trailing-comma.tree.json │ │ │ │ │ ├── async-arrow-yield.js │ │ │ │ │ ├── async-arrow-yield.tree.json │ │ │ │ │ ├── export-async-arrow.module.js │ │ │ │ │ ├── export-async-arrow.module.tree.json │ │ │ │ │ ├── export-default-async-arrow.module.js │ │ │ │ │ ├── export-default-async-arrow.module.tree.json │ │ │ │ │ ├── invalid-async-line-terminator1.failure.json │ │ │ │ │ ├── invalid-async-line-terminator1.js │ │ │ │ │ ├── invalid-async-line-terminator2.failure.json │ │ │ │ │ ├── invalid-async-line-terminator2.js │ │ │ │ │ ├── invalid-async-line-terminator3.failure.json │ │ │ │ │ ├── invalid-async-line-terminator3.js │ │ │ │ │ ├── invalid-async-line-terminator4.failure.json │ │ │ │ │ ├── invalid-async-line-terminator4.js │ │ │ │ │ ├── invalid-async-line-terminator5.failure.json │ │ │ │ │ └── invalid-async-line-terminator5.js │ │ │ │ ├── functions/ │ │ │ │ │ ├── argument-async-function-expression.js │ │ │ │ │ ├── argument-async-function-expression.tree.json │ │ │ │ │ ├── async-function-declaration-await.js │ │ │ │ │ ├── async-function-declaration-await.tree.json │ │ │ │ │ ├── async-function-declaration.js │ │ │ │ │ ├── async-function-declaration.tree.json │ │ │ │ │ ├── async-function-expression-as-parameter.js │ │ │ │ │ ├── async-function-expression-as-parameter.tree.json │ │ │ │ │ ├── async-function-expression-await.js │ │ │ │ │ ├── async-function-expression-await.tree.json │ │ │ │ │ ├── async-function-expression-named-await.js │ │ │ │ │ ├── async-function-expression-named-await.tree.json │ │ │ │ │ ├── async-function-expression-named.js │ │ │ │ │ ├── async-function-expression-named.tree.json │ │ │ │ │ ├── async-function-expression.js │ │ │ │ │ ├── async-function-expression.tree.json │ │ │ │ │ ├── async-generator-declaration.js │ │ │ │ │ ├── async-generator-declaration.tree.json │ │ │ │ │ ├── async-generator-expression.js │ │ │ │ │ ├── async-generator-expression.tree.json │ │ │ │ │ ├── async-if-await.js │ │ │ │ │ ├── async-if-await.tree.json │ │ │ │ │ ├── async-if.js │ │ │ │ │ ├── async-if.tree.json │ │ │ │ │ ├── export-async-function-declaration-await.module.js │ │ │ │ │ ├── export-async-function-declaration-await.module.tree.json │ │ │ │ │ ├── export-async-function-declaration.module.js │ │ │ │ │ ├── export-async-function-declaration.module.tree.json │ │ │ │ │ ├── export-default-async-function-declaration.module.js │ │ │ │ │ ├── export-default-async-function-declaration.module.tree.json │ │ │ │ │ ├── export-default-async-named-function-declaration-await.module.js │ │ │ │ │ ├── export-default-async-named-function-declaration-await.module.tree.json │ │ │ │ │ ├── export-default-async-named-function-declaration.module.js │ │ │ │ │ ├── export-default-async-named-function-declaration.module.tree.json │ │ │ │ │ ├── inner-function-async.js │ │ │ │ │ ├── inner-function-async.tree.json │ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.failure.json │ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.js │ │ │ │ │ ├── invalid-async-function-expression-duplicate-params.failure.json │ │ │ │ │ ├── invalid-async-function-expression-duplicate-params.js │ │ │ │ │ ├── invalid-async-line-terminator-expression.failure.json │ │ │ │ │ ├── invalid-async-line-terminator-expression.js │ │ │ │ │ ├── invalid-async-while.failure.json │ │ │ │ │ ├── invalid-async-while.js │ │ │ │ │ ├── invalid-export-async-function-expression.module.failure.json │ │ │ │ │ ├── invalid-export-async-function-expression.module.js │ │ │ │ │ ├── invalid-expression-body-contains-super-call.failure.json │ │ │ │ │ └── invalid-expression-body-contains-super-call.js │ │ │ │ ├── invalid-await/ │ │ │ │ │ ├── invalid-await-declaration1.failure.json │ │ │ │ │ ├── invalid-await-declaration1.js │ │ │ │ │ ├── invalid-await-declaration2.failure.json │ │ │ │ │ ├── invalid-await-declaration2.js │ │ │ │ │ ├── invalid-await-declaration3.failure.json │ │ │ │ │ ├── invalid-await-declaration3.js │ │ │ │ │ ├── invalid-await-declaration4.failure.json │ │ │ │ │ ├── invalid-await-declaration4.js │ │ │ │ │ ├── invalid-await-function-name1.failure.json │ │ │ │ │ ├── invalid-await-function-name1.js │ │ │ │ │ ├── invalid-await-function-name2.failure.json │ │ │ │ │ ├── invalid-await-function-name2.js │ │ │ │ │ ├── invalid-await-identifier1.failure.json │ │ │ │ │ ├── invalid-await-identifier1.js │ │ │ │ │ ├── invalid-await-identifier2.failure.json │ │ │ │ │ ├── invalid-await-identifier2.js │ │ │ │ │ ├── invalid-await-method.failure.json │ │ │ │ │ ├── invalid-await-method.js │ │ │ │ │ ├── invalid-await-no-argument1.failure.json │ │ │ │ │ ├── invalid-await-no-argument1.js │ │ │ │ │ ├── invalid-await-no-argument2.failure.json │ │ │ │ │ ├── invalid-await-no-argument2.js │ │ │ │ │ ├── invalid-await-object-expression1.failure.json │ │ │ │ │ ├── invalid-await-object-expression1.js │ │ │ │ │ ├── invalid-await-object-expression2.failure.json │ │ │ │ │ ├── invalid-await-object-expression2.js │ │ │ │ │ ├── invalid-await-outside-async.failure.json │ │ │ │ │ ├── invalid-await-outside-async.js │ │ │ │ │ ├── invalid-await-parameter1.failure.json │ │ │ │ │ ├── invalid-await-parameter1.js │ │ │ │ │ ├── invalid-await-parameter2.failure.json │ │ │ │ │ ├── invalid-await-parameter2.js │ │ │ │ │ ├── invalid-await-parameter3.failure.json │ │ │ │ │ ├── invalid-await-parameter3.js │ │ │ │ │ ├── invalid-await-parameter4.failure.json │ │ │ │ │ ├── invalid-await-parameter4.js │ │ │ │ │ ├── invalid-await-parameter5.failure.json │ │ │ │ │ ├── invalid-await-parameter5.js │ │ │ │ │ ├── invalid-await-parameter6.failure.json │ │ │ │ │ ├── invalid-await-parameter6.js │ │ │ │ │ ├── invalid-await-parameter7.failure.json │ │ │ │ │ ├── invalid-await-parameter7.js │ │ │ │ │ ├── invalid-await-property.failure.json │ │ │ │ │ └── invalid-await-property.js │ │ │ │ ├── methods/ │ │ │ │ │ ├── async-class-generator.js │ │ │ │ │ ├── async-class-generator.tree.json │ │ │ │ │ ├── async-generator.js │ │ │ │ │ ├── async-generator.tree.json │ │ │ │ │ ├── async-method-await.js │ │ │ │ │ ├── async-method-await.tree.json │ │ │ │ │ ├── async-method-computed.js │ │ │ │ │ ├── async-method-computed.tree.json │ │ │ │ │ ├── async-method-literal.js │ │ │ │ │ ├── async-method-literal.tree.json │ │ │ │ │ ├── async-method-number.js │ │ │ │ │ ├── async-method-number.tree.json │ │ │ │ │ ├── async-method.js │ │ │ │ │ ├── async-method.tree.json │ │ │ │ │ ├── class-async-get.js │ │ │ │ │ ├── class-async-get.tree.json │ │ │ │ │ ├── class-async-method-await.js │ │ │ │ │ ├── class-async-method-await.tree.json │ │ │ │ │ ├── class-async-method-computed.js │ │ │ │ │ ├── class-async-method-computed.tree.json │ │ │ │ │ ├── class-async-method-literal.js │ │ │ │ │ ├── class-async-method-literal.tree.json │ │ │ │ │ ├── class-async-method-number.js │ │ │ │ │ ├── class-async-method-number.tree.json │ │ │ │ │ ├── class-async-method.js │ │ │ │ │ ├── class-async-method.tree.json │ │ │ │ │ ├── class-async-set.js │ │ │ │ │ ├── class-async-set.tree.json │ │ │ │ │ ├── class-static-async-get.js │ │ │ │ │ ├── class-static-async-get.tree.json │ │ │ │ │ ├── class-static-async-method-await.js │ │ │ │ │ ├── class-static-async-method-await.tree.json │ │ │ │ │ ├── class-static-async-method.js │ │ │ │ │ ├── class-static-async-method.tree.json │ │ │ │ │ ├── class-static-async-set.js │ │ │ │ │ ├── class-static-async-set.tree.json │ │ │ │ │ ├── invalid-async-class-constructor.failure.json │ │ │ │ │ ├── invalid-async-class-constructor.js │ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.failure.json │ │ │ │ │ ├── invalid-async-function-declaration-duplicate-params.js │ │ │ │ │ ├── invalid-async-getter.failure.json │ │ │ │ │ ├── invalid-async-getter.js │ │ │ │ │ ├── invalid-async-line-terminator-method.failure.json │ │ │ │ │ ├── invalid-async-line-terminator-method.js │ │ │ │ │ ├── invalid-async-line-terminator-property.failure.json │ │ │ │ │ ├── invalid-async-line-terminator-property.js │ │ │ │ │ ├── invalid-async-line-terminator-static-method.failure.json │ │ │ │ │ ├── invalid-async-line-terminator-static-method.js │ │ │ │ │ ├── invalid-async-method.failure.json │ │ │ │ │ ├── invalid-async-method.js │ │ │ │ │ ├── invalid-async-setter.failure.json │ │ │ │ │ ├── invalid-async-setter.js │ │ │ │ │ ├── invalid-async-static.failure.json │ │ │ │ │ ├── invalid-async-static.js │ │ │ │ │ ├── static-async-class-generator.js │ │ │ │ │ └── static-async-class-generator.tree.json │ │ │ │ └── regular-identifier/ │ │ │ │ ├── argument-async-call.js │ │ │ │ ├── argument-async-call.tree.json │ │ │ │ ├── async-arrow-parameter1.js │ │ │ │ ├── async-arrow-parameter1.tree.json │ │ │ │ ├── async-arrow-parameter2.js │ │ │ │ ├── async-arrow-parameter2.tree.json │ │ │ │ ├── await-function-name.js │ │ │ │ ├── await-function-name.tree.json │ │ │ │ ├── await-method-name.js │ │ │ │ ├── await-method-name.tree.json │ │ │ │ ├── await-static-name.js │ │ │ │ ├── await-static-name.tree.json │ │ │ │ ├── call-async-await.js │ │ │ │ ├── call-async-await.tree.json │ │ │ │ ├── call-async.js │ │ │ │ ├── call-async.tree.json │ │ │ │ ├── export-identifier-async.module.js │ │ │ │ ├── export-identifier-async.module.tree.json │ │ │ │ ├── expr-async.js │ │ │ │ ├── expr-async.tree.json │ │ │ │ ├── generator-name-async.js │ │ │ │ ├── generator-name-async.tree.json │ │ │ │ ├── identifier-async.js │ │ │ │ ├── identifier-async.tree.json │ │ │ │ ├── label-async.js │ │ │ │ ├── label-async.tree.json │ │ │ │ ├── line-terminator-arrow.js │ │ │ │ ├── line-terminator-arrow.tree.json │ │ │ │ ├── line-terminator-async.js │ │ │ │ ├── line-terminator-async.tree.json │ │ │ │ ├── line-terminator-parenthesized-arrow.failure.json │ │ │ │ ├── line-terminator-parenthesized-arrow.js │ │ │ │ ├── method-name-async.js │ │ │ │ ├── method-name-async.tree.json │ │ │ │ ├── property-async.js │ │ │ │ ├── property-async.tree.json │ │ │ │ ├── proto-identifier-shorthand-with-async.js │ │ │ │ ├── proto-identifier-shorthand-with-async.tree.json │ │ │ │ ├── static-generator-name-async.js │ │ │ │ ├── static-generator-name-async.tree.json │ │ │ │ ├── static-name-async.js │ │ │ │ └── static-name-async.tree.json │ │ │ ├── for-statement/ │ │ │ │ ├── invalid-var-init-forin1.failure.json │ │ │ │ ├── invalid-var-init-forin1.js │ │ │ │ ├── invalid-var-init-forin2.failure.json │ │ │ │ ├── invalid-var-init-forin2.js │ │ │ │ ├── invalid-var-init-forin3.failure.json │ │ │ │ ├── invalid-var-init-forin3.js │ │ │ │ ├── invalid-var-init-forin4.failure.json │ │ │ │ ├── invalid-var-init-forin4.js │ │ │ │ ├── invalid-var-init-forin5.failure.json │ │ │ │ └── invalid-var-init-forin5.js │ │ │ └── trailing-commas/ │ │ │ ├── invalid-empty-arrow.failure.json │ │ │ ├── invalid-empty-arrow.js │ │ │ ├── invalid-empty-call.failure.json │ │ │ ├── invalid-empty-call.js │ │ │ ├── invalid-empty-constructor.failure.json │ │ │ ├── invalid-empty-constructor.js │ │ │ ├── invalid-empty-method.failure.json │ │ │ ├── invalid-empty-method.js │ │ │ ├── invalid-empty-parameters.failure.json │ │ │ ├── invalid-empty-parameters.js │ │ │ ├── invalid-rest.failure.json │ │ │ ├── invalid-rest.js │ │ │ ├── invalid-sequence.failure.json │ │ │ ├── invalid-sequence.js │ │ │ ├── invalid-trailing-comma-getter.failure.json │ │ │ ├── invalid-trailing-comma-getter.js │ │ │ ├── trailing-comma-arrow-multi.js │ │ │ ├── trailing-comma-arrow-multi.tree.json │ │ │ ├── trailing-comma-arrow-single.js │ │ │ ├── trailing-comma-arrow-single.tree.json │ │ │ ├── trailing-comma-arrow.js │ │ │ ├── trailing-comma-arrow.tree.json │ │ │ ├── trailing-comma-call.js │ │ │ ├── trailing-comma-call.tree.json │ │ │ ├── trailing-comma-constructor.js │ │ │ ├── trailing-comma-constructor.tree.json │ │ │ ├── trailing-comma-export-function.js │ │ │ ├── trailing-comma-export-function.tree.json │ │ │ ├── trailing-comma-function-declaration.js │ │ │ ├── trailing-comma-function-declaration.tree.json │ │ │ ├── trailing-comma-function-expression.js │ │ │ ├── trailing-comma-function-expression.tree.json │ │ │ ├── trailing-comma-method.js │ │ │ ├── trailing-comma-method.tree.json │ │ │ ├── trailing-comma-new.js │ │ │ ├── trailing-comma-new.tree.json │ │ │ ├── trailing-comma-spread.js │ │ │ └── trailing-comma-spread.tree.json │ │ ├── es2018/ │ │ │ ├── dynamic-import/ │ │ │ │ ├── await-import.js │ │ │ │ ├── await-import.tree.json │ │ │ │ ├── coexist-import-call-import-declaration.module.js │ │ │ │ ├── coexist-import-call-import-declaration.module.tree.json │ │ │ │ ├── import-call-string.js │ │ │ │ ├── import-call-string.tree.json │ │ │ │ ├── import-call-template.js │ │ │ │ ├── import-call-template.tree.json │ │ │ │ ├── import-call-var.js │ │ │ │ ├── import-call-var.tree.json │ │ │ │ ├── invalid-import-call-many-arguments.js │ │ │ │ ├── invalid-import-call-many-arguments.tree.json │ │ │ │ ├── invalid-import-call-no-argument.js │ │ │ │ ├── invalid-import-call-no-argument.tree.json │ │ │ │ ├── invalid-new-import-call.failure.json │ │ │ │ ├── invalid-new-import-call.js │ │ │ │ ├── invalid-non-callee.failure.json │ │ │ │ ├── invalid-non-callee.js │ │ │ │ ├── loader-using-import.js │ │ │ │ └── loader-using-import.tree.json │ │ │ ├── for-await-of/ │ │ │ │ ├── for-await-of.js │ │ │ │ ├── for-await-of.tree.json │ │ │ │ ├── invalid-for-await-of-not-async-context.failure.json │ │ │ │ └── invalid-for-await-of-not-async-context.js │ │ │ ├── rest-property/ │ │ │ │ ├── destructuring-mirror.js │ │ │ │ ├── destructuring-mirror.tree.json │ │ │ │ ├── function-extension.js │ │ │ │ ├── function-extension.tree.json │ │ │ │ ├── invalid-default-rest-property.failure.json │ │ │ │ ├── invalid-default-rest-property.js │ │ │ │ ├── invalid-property-after-rest.failure.json │ │ │ │ ├── invalid-property-after-rest.js │ │ │ │ ├── rest-property-object-pattern-arrow.js │ │ │ │ ├── rest-property-object-pattern-arrow.tree.json │ │ │ │ ├── shallow-clone.js │ │ │ │ ├── shallow-clone.tree.json │ │ │ │ ├── simple-rest-properties.js │ │ │ │ └── simple-rest-properties.tree.json │ │ │ ├── spread-property/ │ │ │ │ ├── default-properties.js │ │ │ │ ├── default-properties.tree.json │ │ │ │ ├── multiple-merges.js │ │ │ │ ├── multiple-merges.tree.json │ │ │ │ ├── object-initializer-getter.js │ │ │ │ ├── object-initializer-getter.tree.json │ │ │ │ ├── object-merging.js │ │ │ │ ├── object-merging.tree.json │ │ │ │ ├── properties-overriding.js │ │ │ │ ├── properties-overriding.tree.json │ │ │ │ ├── shallow-clone.js │ │ │ │ ├── shallow-clone.tree.json │ │ │ │ ├── spread-getter.js │ │ │ │ ├── spread-getter.tree.json │ │ │ │ ├── spread-null-undefined.js │ │ │ │ └── spread-null-undefined.tree.json │ │ │ └── template-literal-revision/ │ │ │ ├── not-escape-8.failure.json │ │ │ ├── not-escape-8.js │ │ │ ├── not-escape-9.failure.json │ │ │ ├── not-escape-9.js │ │ │ ├── not-escape-hex.failure.json │ │ │ ├── not-escape-hex.js │ │ │ ├── not-escape-oct.js │ │ │ ├── not-escape-oct.tree.json │ │ │ ├── not-escape-unicode-code-point.failure.json │ │ │ ├── not-escape-unicode-code-point.js │ │ │ ├── not-escape-unicode.failure.json │ │ │ ├── not-escape-unicode.js │ │ │ ├── span-not-escape-unicode.failure.json │ │ │ ├── span-not-escape-unicode.js │ │ │ ├── tagged-not-escape-8.js │ │ │ ├── tagged-not-escape-8.tree.json │ │ │ ├── tagged-not-escape-9.js │ │ │ ├── tagged-not-escape-9.tree.json │ │ │ ├── tagged-not-escape-hex.js │ │ │ ├── tagged-not-escape-hex.tree.json │ │ │ ├── tagged-not-escape-oct.js │ │ │ ├── tagged-not-escape-oct.tree.json │ │ │ ├── tagged-not-escape-unicode-code-point.js │ │ │ ├── tagged-not-escape-unicode-code-point.tree.json │ │ │ ├── tagged-not-escape-unicode.js │ │ │ └── tagged-not-escape-unicode.tree.json │ │ ├── es2019/ │ │ │ └── optional-catch-binding/ │ │ │ ├── optional-catch-binding.js │ │ │ └── optional-catch-binding.tree.json │ │ ├── es2020/ │ │ │ ├── import.meta/ │ │ │ │ ├── assignment.module.js │ │ │ │ ├── assignment.module.tree.json │ │ │ │ ├── log.failure.json │ │ │ │ ├── log.js │ │ │ │ ├── log.module.js │ │ │ │ ├── log.module.tree.json │ │ │ │ ├── unicode-escape-import.module.failure.json │ │ │ │ ├── unicode-escape-import.module.js │ │ │ │ ├── unicode-escape-meta.module.failure.json │ │ │ │ ├── unicode-escape-meta.module.js │ │ │ │ ├── url.module.js │ │ │ │ └── url.module.tree.json │ │ │ ├── nullish-coalescing/ │ │ │ │ ├── invalid-nullish-coalescing-chain-and-head.failure.json │ │ │ │ ├── invalid-nullish-coalescing-chain-and-head.js │ │ │ │ ├── invalid-nullish-coalescing-chain-and-tail.failure.json │ │ │ │ ├── invalid-nullish-coalescing-chain-and-tail.js │ │ │ │ ├── invalid-nullish-coalescing-chain-or-tail.failure.json │ │ │ │ └── invalid-nullish-coalescing-chain-or-tail.js │ │ │ └── optional-chaining/ │ │ │ ├── invalid-optional-chaining-as-assignment-target.failure.json │ │ │ ├── invalid-optional-chaining-as-assignment-target.js │ │ │ ├── invalid-optional-chaining-indirect-template-string.failure.json │ │ │ ├── invalid-optional-chaining-indirect-template-string.js │ │ │ ├── invalid-optional-chaining-new-indirect-template-string.failure.json │ │ │ ├── invalid-optional-chaining-new-indirect-template-string.js │ │ │ ├── invalid-optional-chaining-new-template-string.failure.json │ │ │ ├── invalid-optional-chaining-new-template-string.js │ │ │ ├── invalid-optional-chaining-template-string.failure.json │ │ │ ├── invalid-optional-chaining-template-string.js │ │ │ ├── optional-chaining-call.failure.json │ │ │ ├── optional-chaining-call.js │ │ │ ├── optional-chaining-computed-property.js │ │ │ ├── optional-chaining-computed-property.tree.json │ │ │ ├── optional-chaining-static-property.js │ │ │ └── optional-chaining-static-property.tree.json │ │ ├── expression/ │ │ │ ├── additive/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── assignment/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── migrated_0007.js │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ ├── migrated_0008.js │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ ├── migrated_0009.js │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ ├── migrated_0010.js │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ ├── migrated_0011.js │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ ├── migrated_0012.js │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ ├── migrated_0013.js │ │ │ │ └── migrated_0013.tree.json │ │ │ ├── binary/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── migrated_0007.js │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ ├── migrated_0008.js │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ ├── migrated_0009.js │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ ├── migrated_0010.js │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ ├── migrated_0011.js │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ ├── migrated_0012.js │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ ├── migrated_0013.js │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ ├── migrated_0014.js │ │ │ │ ├── migrated_0014.tree.json │ │ │ │ ├── migrated_0015.js │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ ├── migrated_0016.js │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ ├── migrated_0017.js │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ ├── multiline_string.js │ │ │ │ ├── multiline_string.tree.json │ │ │ │ ├── multiline_string_literal.js │ │ │ │ └── multiline_string_literal.tree.json │ │ │ ├── binary-bitwise/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── binary-logical/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ └── migrated_0005.tree.json │ │ │ ├── bitwise-shift/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── complex/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ └── migrated_0001.tree.json │ │ │ ├── conditional/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── equality/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ └── migrated_0003.tree.json │ │ │ ├── grouping/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ └── migrated_0001.tree.json │ │ │ ├── left-hand-side/ │ │ │ │ ├── let_object_computed.js │ │ │ │ ├── let_object_computed.tree.json │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── migrated_0007.js │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ ├── migrated_0008.js │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ ├── migrated_0009.js │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ ├── migrated_0010.js │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ ├── migrated_0011.js │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ ├── migrated_0012.js │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ ├── migrated_0013.js │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ ├── migrated_0014.js │ │ │ │ ├── migrated_0014.tree.json │ │ │ │ ├── migrated_0015.js │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ ├── migrated_0016.js │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ ├── migrated_0017.js │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ ├── migrated_0018.js │ │ │ │ ├── migrated_0018.tree.json │ │ │ │ ├── migrated_0019.js │ │ │ │ ├── migrated_0019.tree.json │ │ │ │ ├── migrated_0020.js │ │ │ │ ├── migrated_0020.tree.json │ │ │ │ ├── migrated_0021.js │ │ │ │ ├── migrated_0021.tree.json │ │ │ │ ├── migrated_0022.js │ │ │ │ └── migrated_0022.tree.json │ │ │ ├── multiplicative/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── postfix/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ └── migrated_0005.tree.json │ │ │ ├── primary/ │ │ │ │ ├── array/ │ │ │ │ │ ├── migrated_0000.js │ │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ │ ├── migrated_0001.js │ │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ │ ├── migrated_0002.js │ │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ │ ├── migrated_0003.js │ │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ │ ├── migrated_0004.js │ │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ │ ├── migrated_0005.js │ │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ │ ├── migrated_0006.js │ │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ │ ├── migrated_0007.js │ │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ │ ├── migrated_0008.source.js │ │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ │ ├── migrated_0009.source.js │ │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ │ ├── migrated_0010.source.js │ │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ │ ├── migrated_0011.source.js │ │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ │ ├── migrated_0012.source.js │ │ │ │ │ └── migrated_0012.tree.json │ │ │ │ ├── keyword/ │ │ │ │ │ ├── invalid-escaped-if.js │ │ │ │ │ ├── invalid-escaped-if.tree.json │ │ │ │ │ ├── invalid-escaped-null.js │ │ │ │ │ ├── invalid-escaped-null.tree.json │ │ │ │ │ ├── invalid-escaped-true.js │ │ │ │ │ └── invalid-escaped-true.tree.json │ │ │ │ ├── literal/ │ │ │ │ │ ├── numeric/ │ │ │ │ │ │ ├── invalid_hex.failure.json │ │ │ │ │ │ ├── invalid_hex.js │ │ │ │ │ │ ├── migrated_0000.js │ │ │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ │ │ ├── migrated_0001.js │ │ │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ │ │ ├── migrated_0002.js │ │ │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ │ │ ├── migrated_0003.js │ │ │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ │ │ ├── migrated_0004.js │ │ │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ │ │ ├── migrated_0005.js │ │ │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ │ │ ├── migrated_0006.js │ │ │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ │ │ ├── migrated_0007.js │ │ │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ │ │ ├── migrated_0008.js │ │ │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ │ │ ├── migrated_0009.js │ │ │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ │ │ ├── migrated_0010.js │ │ │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ │ │ ├── migrated_0011.js │ │ │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ │ │ ├── migrated_0012.js │ │ │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ │ │ ├── migrated_0013.js │ │ │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ │ │ ├── migrated_0014.js │ │ │ │ │ │ ├── migrated_0014.tree.json │ │ │ │ │ │ ├── migrated_0015.js │ │ │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ │ │ ├── migrated_0016.js │ │ │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ │ │ ├── migrated_0017.js │ │ │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ │ │ ├── migrated_0018.js │ │ │ │ │ │ ├── migrated_0018.tree.json │ │ │ │ │ │ ├── migrated_0019.js │ │ │ │ │ │ ├── migrated_0019.tree.json │ │ │ │ │ │ ├── migrated_0020.js │ │ │ │ │ │ ├── migrated_0020.tree.json │ │ │ │ │ │ ├── migrated_0021.js │ │ │ │ │ │ ├── migrated_0021.tree.json │ │ │ │ │ │ ├── migrated_0022.js │ │ │ │ │ │ ├── migrated_0022.tree.json │ │ │ │ │ │ ├── migrated_0023.js │ │ │ │ │ │ ├── migrated_0023.tree.json │ │ │ │ │ │ ├── migrated_0024.js │ │ │ │ │ │ └── migrated_0024.tree.json │ │ │ │ │ ├── regular-expression/ │ │ │ │ │ │ ├── migrated_0000.js │ │ │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ │ │ ├── migrated_0001.js │ │ │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ │ │ ├── migrated_0002.js │ │ │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ │ │ ├── migrated_0003.js │ │ │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ │ │ ├── migrated_0004.js │ │ │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ │ │ ├── migrated_0005.source.js │ │ │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ │ │ ├── migrated_0006.failure.json │ │ │ │ │ │ ├── migrated_0006.source.js │ │ │ │ │ │ ├── migrated_0007.js │ │ │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ │ │ ├── migrated_0008.js │ │ │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ │ │ ├── migrated_0009.js │ │ │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ │ │ ├── migrated_0010.js │ │ │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ │ │ ├── migrated_0011.js │ │ │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ │ │ ├── migrated_0012.js │ │ │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ │ │ ├── migrated_0013.js │ │ │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ │ │ ├── u-flag-invalid-range-4-hex.failure.json │ │ │ │ │ │ ├── u-flag-invalid-range-4-hex.js │ │ │ │ │ │ ├── u-flag-invalid-range-var-hex.failure.json │ │ │ │ │ │ ├── u-flag-invalid-range-var-hex.js │ │ │ │ │ │ ├── u-flag-surrogate-pair.js │ │ │ │ │ │ ├── u-flag-surrogate-pair.tree.json │ │ │ │ │ │ ├── u-flag-valid-range.js │ │ │ │ │ │ └── u-flag-valid-range.tree.json │ │ │ │ │ └── string/ │ │ │ │ │ ├── invalid_escaped_hex.failure.json │ │ │ │ │ ├── invalid_escaped_hex.js │ │ │ │ │ ├── invalid_hex.failure.json │ │ │ │ │ ├── invalid_hex.js │ │ │ │ │ ├── migrated_0000.js │ │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ │ ├── migrated_0001.js │ │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ │ ├── migrated_0002.source.js │ │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ │ ├── migrated_0003.js │ │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ │ ├── migrated_0006.js │ │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ │ ├── migrated_0007.js │ │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ │ ├── migrated_0008.js │ │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ │ ├── migrated_0009.js │ │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ │ ├── migrated_0010.js │ │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ │ ├── migrated_0011.js │ │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ │ ├── migrated_0012.js │ │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ │ ├── migrated_0013.js │ │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ │ ├── migrated_0015.js │ │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ │ ├── migrated_0016.js │ │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ │ ├── migrated_0017.js │ │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ │ ├── migrated_0018.js │ │ │ │ │ └── migrated_0018.tree.json │ │ │ │ ├── object/ │ │ │ │ │ ├── invalid-getter.js │ │ │ │ │ ├── invalid-getter.tree.json │ │ │ │ │ ├── invalid-setter1.js │ │ │ │ │ ├── invalid-setter1.tree.json │ │ │ │ │ ├── invalid-setter2.js │ │ │ │ │ ├── invalid-setter2.tree.json │ │ │ │ │ ├── migrated_0000.js │ │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ │ ├── migrated_0001.js │ │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ │ ├── migrated_0002.js │ │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ │ ├── migrated_0003.js │ │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ │ ├── migrated_0004.js │ │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ │ ├── migrated_0005.js │ │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ │ ├── migrated_0006.js │ │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ │ ├── migrated_0007.js │ │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ │ ├── migrated_0008.js │ │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ │ ├── migrated_0009.js │ │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ │ ├── migrated_0010.js │ │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ │ ├── migrated_0011.js │ │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ │ ├── migrated_0012.js │ │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ │ ├── migrated_0013.js │ │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ │ ├── migrated_0014.js │ │ │ │ │ ├── migrated_0014.tree.json │ │ │ │ │ ├── migrated_0015.js │ │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ │ ├── migrated_0016.js │ │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ │ ├── migrated_0017.js │ │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ │ ├── migrated_0018.js │ │ │ │ │ ├── migrated_0018.tree.json │ │ │ │ │ ├── migrated_0019.js │ │ │ │ │ ├── migrated_0019.tree.json │ │ │ │ │ ├── migrated_0020.js │ │ │ │ │ ├── migrated_0020.tree.json │ │ │ │ │ ├── migrated_0021.js │ │ │ │ │ ├── migrated_0021.tree.json │ │ │ │ │ ├── migrated_0022.js │ │ │ │ │ ├── migrated_0022.tree.json │ │ │ │ │ ├── migrated_0023.js │ │ │ │ │ ├── migrated_0023.tree.json │ │ │ │ │ ├── migrated_0024.js │ │ │ │ │ ├── migrated_0024.tree.json │ │ │ │ │ ├── migrated_0025.js │ │ │ │ │ ├── migrated_0025.tree.json │ │ │ │ │ ├── migrated_0026.js │ │ │ │ │ ├── migrated_0026.tree.json │ │ │ │ │ ├── migrated_0027.js │ │ │ │ │ ├── migrated_0027.tree.json │ │ │ │ │ ├── migrated_0028.js │ │ │ │ │ ├── migrated_0028.tree.json │ │ │ │ │ ├── migrated_0029.js │ │ │ │ │ ├── migrated_0029.tree.json │ │ │ │ │ ├── migrated_0030.js │ │ │ │ │ ├── migrated_0030.tree.json │ │ │ │ │ ├── migrated_0031.js │ │ │ │ │ ├── migrated_0031.tree.json │ │ │ │ │ ├── migrated_0032.js │ │ │ │ │ ├── migrated_0032.tree.json │ │ │ │ │ ├── migrated_0033.js │ │ │ │ │ ├── migrated_0033.tree.json │ │ │ │ │ ├── migrated_0034.js │ │ │ │ │ ├── migrated_0034.tree.json │ │ │ │ │ ├── migrated_0035.js │ │ │ │ │ ├── migrated_0035.tree.json │ │ │ │ │ ├── migrated_0036.js │ │ │ │ │ ├── migrated_0036.tree.json │ │ │ │ │ ├── migrated_0037.js │ │ │ │ │ ├── migrated_0037.tree.json │ │ │ │ │ ├── migrated_0038.js │ │ │ │ │ └── migrated_0038.tree.json │ │ │ │ └── other/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ └── migrated_0003.tree.json │ │ │ ├── relational/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ └── migrated_0006.tree.json │ │ │ └── unary/ │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tree.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0001.tree.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0002.tree.json │ │ │ ├── migrated_0003.js │ │ │ ├── migrated_0003.tree.json │ │ │ ├── migrated_0004.js │ │ │ ├── migrated_0004.tree.json │ │ │ ├── migrated_0005.js │ │ │ ├── migrated_0005.tree.json │ │ │ ├── migrated_0006.js │ │ │ ├── migrated_0006.tree.json │ │ │ ├── migrated_0007.js │ │ │ ├── migrated_0007.tree.json │ │ │ ├── migrated_0008.js │ │ │ ├── migrated_0008.tree.json │ │ │ ├── migrated_0009.js │ │ │ ├── migrated_0009.tree.json │ │ │ ├── migrated_0010.js │ │ │ ├── migrated_0010.tree.json │ │ │ ├── migrated_0011.js │ │ │ ├── migrated_0011.tree.json │ │ │ ├── migrated_0012.js │ │ │ └── migrated_0012.tree.json │ │ ├── invalid-syntax/ │ │ │ ├── GH-1106-00.failure.json │ │ │ ├── GH-1106-00.js │ │ │ ├── GH-1106-01.failure.json │ │ │ ├── GH-1106-01.js │ │ │ ├── GH-1106-02.failure.json │ │ │ ├── GH-1106-02.js │ │ │ ├── GH-1106-03.failure.json │ │ │ ├── GH-1106-03.js │ │ │ ├── GH-1106-04.failure.json │ │ │ ├── GH-1106-04.js │ │ │ ├── GH-1106-05.failure.json │ │ │ ├── GH-1106-05.js │ │ │ ├── GH-1106-06.failure.json │ │ │ ├── GH-1106-06.js │ │ │ ├── GH-1106-07.failure.json │ │ │ ├── GH-1106-07.js │ │ │ ├── GH-1106-08.failure.json │ │ │ ├── GH-1106-08.js │ │ │ ├── GH-1106-09.failure.json │ │ │ ├── GH-1106-09.js │ │ │ ├── migrated_0000.failure.json │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0001.failure.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0002.failure.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0003.failure.json │ │ │ ├── migrated_0003.js │ │ │ ├── migrated_0004.failure.json │ │ │ ├── migrated_0004.js │ │ │ ├── migrated_0005.failure.json │ │ │ ├── migrated_0005.js │ │ │ ├── migrated_0006.failure.json │ │ │ ├── migrated_0006.js │ │ │ ├── migrated_0007.failure.json │ │ │ ├── migrated_0007.js │ │ │ ├── migrated_0008.failure.json │ │ │ ├── migrated_0008.js │ │ │ ├── migrated_0009.failure.json │ │ │ ├── migrated_0009.js │ │ │ ├── migrated_0010.failure.json │ │ │ ├── migrated_0010.js │ │ │ ├── migrated_0011.failure.json │ │ │ ├── migrated_0011.js │ │ │ ├── migrated_0012.failure.json │ │ │ ├── migrated_0012.js │ │ │ ├── migrated_0013.failure.json │ │ │ ├── migrated_0013.js │ │ │ ├── migrated_0014.failure.json │ │ │ ├── migrated_0014.js │ │ │ ├── migrated_0015.failure.json │ │ │ ├── migrated_0015.js │ │ │ ├── migrated_0016.failure.json │ │ │ ├── migrated_0016.js │ │ │ ├── migrated_0017.failure.json │ │ │ ├── migrated_0017.js │ │ │ ├── migrated_0018.failure.json │ │ │ ├── migrated_0018.js │ │ │ ├── migrated_0019.failure.json │ │ │ ├── migrated_0019.js │ │ │ ├── migrated_0020.failure.json │ │ │ ├── migrated_0020.js │ │ │ ├── migrated_0021.failure.json │ │ │ ├── migrated_0021.js │ │ │ ├── migrated_0022.failure.json │ │ │ ├── migrated_0022.js │ │ │ ├── migrated_0023.failure.json │ │ │ ├── migrated_0023.js │ │ │ ├── migrated_0024.failure.json │ │ │ ├── migrated_0024.js │ │ │ ├── migrated_0025.failure.json │ │ │ ├── migrated_0025.js │ │ │ ├── migrated_0026.failure.json │ │ │ ├── migrated_0026.js │ │ │ ├── migrated_0027.failure.json │ │ │ ├── migrated_0027.js │ │ │ ├── migrated_0028.failure.json │ │ │ ├── migrated_0028.js │ │ │ ├── migrated_0029.failure.json │ │ │ ├── migrated_0029.js │ │ │ ├── migrated_0030.failure.json │ │ │ ├── migrated_0030.js │ │ │ ├── migrated_0031.failure.json │ │ │ ├── migrated_0031.js │ │ │ ├── migrated_0032.failure.json │ │ │ ├── migrated_0032.js │ │ │ ├── migrated_0033.failure.json │ │ │ ├── migrated_0033.source.js │ │ │ ├── migrated_0034.failure.json │ │ │ ├── migrated_0034.source.js │ │ │ ├── migrated_0035.failure.json │ │ │ ├── migrated_0035.js │ │ │ ├── migrated_0036.failure.json │ │ │ ├── migrated_0036.source.js │ │ │ ├── migrated_0037.failure.json │ │ │ ├── migrated_0037.source.js │ │ │ ├── migrated_0038.failure.json │ │ │ ├── migrated_0038.js │ │ │ ├── migrated_0039.failure.json │ │ │ ├── migrated_0039.js │ │ │ ├── migrated_0040.failure.json │ │ │ ├── migrated_0040.js │ │ │ ├── migrated_0041.failure.json │ │ │ ├── migrated_0041.source.js │ │ │ ├── migrated_0042.failure.json │ │ │ ├── migrated_0042.source.js │ │ │ ├── migrated_0043.failure.json │ │ │ ├── migrated_0043.source.js │ │ │ ├── migrated_0044.failure.json │ │ │ ├── migrated_0044.source.js │ │ │ ├── migrated_0045.failure.json │ │ │ ├── migrated_0045.js │ │ │ ├── migrated_0046.failure.json │ │ │ ├── migrated_0046.js │ │ │ ├── migrated_0047.failure.json │ │ │ ├── migrated_0047.js │ │ │ ├── migrated_0048.failure.json │ │ │ ├── migrated_0048.source.js │ │ │ ├── migrated_0049.failure.json │ │ │ ├── migrated_0049.source.js │ │ │ ├── migrated_0050.failure.json │ │ │ ├── migrated_0050.source.js │ │ │ ├── migrated_0051.failure.json │ │ │ ├── migrated_0051.source.js │ │ │ ├── migrated_0052.failure.json │ │ │ ├── migrated_0052.js │ │ │ ├── migrated_0053.failure.json │ │ │ ├── migrated_0053.js │ │ │ ├── migrated_0054.failure.json │ │ │ ├── migrated_0054.js │ │ │ ├── migrated_0055.failure.json │ │ │ ├── migrated_0055.js │ │ │ ├── migrated_0056.failure.json │ │ │ ├── migrated_0056.js │ │ │ ├── migrated_0057.failure.json │ │ │ ├── migrated_0057.js │ │ │ ├── migrated_0058.failure.json │ │ │ ├── migrated_0058.js │ │ │ ├── migrated_0059.failure.json │ │ │ ├── migrated_0059.js │ │ │ ├── migrated_0060.failure.json │ │ │ ├── migrated_0060.js │ │ │ ├── migrated_0061.failure.json │ │ │ ├── migrated_0061.js │ │ │ ├── migrated_0062.failure.json │ │ │ ├── migrated_0062.js │ │ │ ├── migrated_0063.failure.json │ │ │ ├── migrated_0063.js │ │ │ ├── migrated_0064.failure.json │ │ │ ├── migrated_0064.js │ │ │ ├── migrated_0065.failure.json │ │ │ ├── migrated_0065.js │ │ │ ├── migrated_0066.failure.json │ │ │ ├── migrated_0066.js │ │ │ ├── migrated_0067.failure.json │ │ │ ├── migrated_0067.js │ │ │ ├── migrated_0068.failure.json │ │ │ ├── migrated_0068.js │ │ │ ├── migrated_0069.failure.json │ │ │ ├── migrated_0069.js │ │ │ ├── migrated_0070.failure.json │ │ │ ├── migrated_0070.js │ │ │ ├── migrated_0071.failure.json │ │ │ ├── migrated_0071.js │ │ │ ├── migrated_0072.failure.json │ │ │ ├── migrated_0072.js │ │ │ ├── migrated_0073.failure.json │ │ │ ├── migrated_0073.js │ │ │ ├── migrated_0074.failure.json │ │ │ ├── migrated_0074.js │ │ │ ├── migrated_0076.failure.json │ │ │ ├── migrated_0076.js │ │ │ ├── migrated_0077.failure.json │ │ │ ├── migrated_0077.js │ │ │ ├── migrated_0078.failure.json │ │ │ ├── migrated_0078.js │ │ │ ├── migrated_0080.failure.json │ │ │ ├── migrated_0080.js │ │ │ ├── migrated_0081.failure.json │ │ │ ├── migrated_0081.js │ │ │ ├── migrated_0082.failure.json │ │ │ ├── migrated_0082.js │ │ │ ├── migrated_0083.failure.json │ │ │ ├── migrated_0083.js │ │ │ ├── migrated_0084.failure.json │ │ │ ├── migrated_0084.js │ │ │ ├── migrated_0085.failure.json │ │ │ ├── migrated_0085.js │ │ │ ├── migrated_0086.failure.json │ │ │ ├── migrated_0086.js │ │ │ ├── migrated_0087.failure.json │ │ │ ├── migrated_0087.js │ │ │ ├── migrated_0088.failure.json │ │ │ ├── migrated_0088.js │ │ │ ├── migrated_0089.failure.json │ │ │ ├── migrated_0089.js │ │ │ ├── migrated_0090.failure.json │ │ │ ├── migrated_0090.js │ │ │ ├── migrated_0091.failure.json │ │ │ ├── migrated_0091.js │ │ │ ├── migrated_0092.failure.json │ │ │ ├── migrated_0092.js │ │ │ ├── migrated_0093.failure.json │ │ │ ├── migrated_0093.js │ │ │ ├── migrated_0094.failure.json │ │ │ ├── migrated_0094.js │ │ │ ├── migrated_0095.failure.json │ │ │ ├── migrated_0095.js │ │ │ ├── migrated_0096.failure.json │ │ │ ├── migrated_0096.js │ │ │ ├── migrated_0097.failure.json │ │ │ ├── migrated_0097.js │ │ │ ├── migrated_0098.failure.json │ │ │ ├── migrated_0098.js │ │ │ ├── migrated_0099.failure.json │ │ │ ├── migrated_0099.js │ │ │ ├── migrated_0100.failure.json │ │ │ ├── migrated_0100.js │ │ │ ├── migrated_0101.failure.json │ │ │ ├── migrated_0101.js │ │ │ ├── migrated_0102.failure.json │ │ │ ├── migrated_0102.js │ │ │ ├── migrated_0103.failure.json │ │ │ ├── migrated_0103.js │ │ │ ├── migrated_0104.failure.json │ │ │ ├── migrated_0104.js │ │ │ ├── migrated_0105.failure.json │ │ │ ├── migrated_0105.js │ │ │ ├── migrated_0106.failure.json │ │ │ ├── migrated_0106.js │ │ │ ├── migrated_0107.failure.json │ │ │ ├── migrated_0107.js │ │ │ ├── migrated_0108.failure.json │ │ │ ├── migrated_0108.js │ │ │ ├── migrated_0109.failure.json │ │ │ ├── migrated_0109.js │ │ │ ├── migrated_0110.failure.json │ │ │ ├── migrated_0110.js │ │ │ ├── migrated_0111.failure.json │ │ │ ├── migrated_0111.js │ │ │ ├── migrated_0112.failure.json │ │ │ ├── migrated_0112.js │ │ │ ├── migrated_0113.failure.json │ │ │ ├── migrated_0113.js │ │ │ ├── migrated_0114.failure.json │ │ │ ├── migrated_0114.js │ │ │ ├── migrated_0115.failure.json │ │ │ ├── migrated_0115.js │ │ │ ├── migrated_0116.failure.json │ │ │ ├── migrated_0116.js │ │ │ ├── migrated_0117.failure.json │ │ │ ├── migrated_0117.js │ │ │ ├── migrated_0118.failure.json │ │ │ ├── migrated_0118.js │ │ │ ├── migrated_0119.failure.json │ │ │ ├── migrated_0119.js │ │ │ ├── migrated_0120.failure.json │ │ │ ├── migrated_0120.js │ │ │ ├── migrated_0121.failure.json │ │ │ ├── migrated_0121.js │ │ │ ├── migrated_0122.failure.json │ │ │ ├── migrated_0122.js │ │ │ ├── migrated_0123.failure.json │ │ │ ├── migrated_0123.js │ │ │ ├── migrated_0124.failure.json │ │ │ ├── migrated_0124.js │ │ │ ├── migrated_0125.failure.json │ │ │ ├── migrated_0125.js │ │ │ ├── migrated_0126.failure.json │ │ │ ├── migrated_0126.js │ │ │ ├── migrated_0127.failure.json │ │ │ ├── migrated_0127.js │ │ │ ├── migrated_0128.failure.json │ │ │ ├── migrated_0128.js │ │ │ ├── migrated_0129.failure.json │ │ │ ├── migrated_0129.js │ │ │ ├── migrated_0130.failure.json │ │ │ ├── migrated_0130.js │ │ │ ├── migrated_0131.failure.json │ │ │ ├── migrated_0131.js │ │ │ ├── migrated_0132.failure.json │ │ │ ├── migrated_0132.js │ │ │ ├── migrated_0133.failure.json │ │ │ ├── migrated_0133.js │ │ │ ├── migrated_0134.failure.json │ │ │ ├── migrated_0134.js │ │ │ ├── migrated_0135.failure.json │ │ │ ├── migrated_0135.js │ │ │ ├── migrated_0136.failure.json │ │ │ ├── migrated_0136.js │ │ │ ├── migrated_0137.failure.json │ │ │ ├── migrated_0137.source.js │ │ │ ├── migrated_0138.failure.json │ │ │ ├── migrated_0138.js │ │ │ ├── migrated_0139.failure.json │ │ │ ├── migrated_0139.js │ │ │ ├── migrated_0140.failure.json │ │ │ ├── migrated_0140.js │ │ │ ├── migrated_0141.failure.json │ │ │ ├── migrated_0141.js │ │ │ ├── migrated_0142.failure.json │ │ │ ├── migrated_0142.js │ │ │ ├── migrated_0143.failure.json │ │ │ ├── migrated_0143.js │ │ │ ├── migrated_0144.failure.json │ │ │ ├── migrated_0144.js │ │ │ ├── migrated_0145.failure.json │ │ │ ├── migrated_0145.js │ │ │ ├── migrated_0146.failure.json │ │ │ ├── migrated_0146.js │ │ │ ├── migrated_0147.failure.json │ │ │ ├── migrated_0147.js │ │ │ ├── migrated_0148.failure.json │ │ │ ├── migrated_0148.js │ │ │ ├── migrated_0149.failure.json │ │ │ ├── migrated_0149.js │ │ │ ├── migrated_0150.failure.json │ │ │ ├── migrated_0150.js │ │ │ ├── migrated_0151.failure.json │ │ │ ├── migrated_0151.js │ │ │ ├── migrated_0152.failure.json │ │ │ ├── migrated_0152.js │ │ │ ├── migrated_0153.failure.json │ │ │ ├── migrated_0153.js │ │ │ ├── migrated_0154.failure.json │ │ │ ├── migrated_0154.js │ │ │ ├── migrated_0155.failure.json │ │ │ ├── migrated_0155.js │ │ │ ├── migrated_0156.failure.json │ │ │ ├── migrated_0156.js │ │ │ ├── migrated_0157.failure.json │ │ │ ├── migrated_0157.js │ │ │ ├── migrated_0158.failure.json │ │ │ ├── migrated_0158.js │ │ │ ├── migrated_0159.failure.json │ │ │ ├── migrated_0159.js │ │ │ ├── migrated_0160.failure.json │ │ │ ├── migrated_0160.js │ │ │ ├── migrated_0161.failure.json │ │ │ ├── migrated_0161.js │ │ │ ├── migrated_0162.failure.json │ │ │ ├── migrated_0162.js │ │ │ ├── migrated_0163.failure.json │ │ │ ├── migrated_0163.source.js │ │ │ ├── migrated_0164.failure.json │ │ │ ├── migrated_0164.js │ │ │ ├── migrated_0165.failure.json │ │ │ ├── migrated_0165.source.js │ │ │ ├── migrated_0166.failure.json │ │ │ ├── migrated_0166.source.js │ │ │ ├── migrated_0167.failure.json │ │ │ ├── migrated_0167.source.js │ │ │ ├── migrated_0168.failure.json │ │ │ ├── migrated_0168.js │ │ │ ├── migrated_0169.failure.json │ │ │ ├── migrated_0169.source.js │ │ │ ├── migrated_0170.failure.json │ │ │ ├── migrated_0170.js │ │ │ ├── migrated_0171.failure.json │ │ │ ├── migrated_0171.js │ │ │ ├── migrated_0172.failure.json │ │ │ ├── migrated_0172.js │ │ │ ├── migrated_0173.failure.json │ │ │ ├── migrated_0173.js │ │ │ ├── migrated_0174.failure.json │ │ │ ├── migrated_0174.js │ │ │ ├── migrated_0175.failure.json │ │ │ ├── migrated_0175.js │ │ │ ├── migrated_0176.failure.json │ │ │ ├── migrated_0176.js │ │ │ ├── migrated_0177.failure.json │ │ │ ├── migrated_0177.js │ │ │ ├── migrated_0178.failure.json │ │ │ ├── migrated_0178.js │ │ │ ├── migrated_0179.failure.json │ │ │ ├── migrated_0179.js │ │ │ ├── migrated_0180.failure.json │ │ │ ├── migrated_0180.js │ │ │ ├── migrated_0181.failure.json │ │ │ ├── migrated_0181.js │ │ │ ├── migrated_0182.failure.json │ │ │ ├── migrated_0182.js │ │ │ ├── migrated_0183.failure.json │ │ │ ├── migrated_0183.js │ │ │ ├── migrated_0184.failure.json │ │ │ ├── migrated_0184.js │ │ │ ├── migrated_0185.failure.json │ │ │ ├── migrated_0185.js │ │ │ ├── migrated_0186.failure.json │ │ │ ├── migrated_0186.js │ │ │ ├── migrated_0187.failure.json │ │ │ ├── migrated_0187.js │ │ │ ├── migrated_0188.failure.json │ │ │ ├── migrated_0188.js │ │ │ ├── migrated_0189.failure.json │ │ │ ├── migrated_0189.js │ │ │ ├── migrated_0190.failure.json │ │ │ ├── migrated_0190.js │ │ │ ├── migrated_0191.failure.json │ │ │ ├── migrated_0191.js │ │ │ ├── migrated_0192.failure.json │ │ │ ├── migrated_0192.js │ │ │ ├── migrated_0193.failure.json │ │ │ ├── migrated_0193.js │ │ │ ├── migrated_0194.failure.json │ │ │ ├── migrated_0194.js │ │ │ ├── migrated_0195.failure.json │ │ │ ├── migrated_0195.js │ │ │ ├── migrated_0196.failure.json │ │ │ ├── migrated_0196.js │ │ │ ├── migrated_0197.failure.json │ │ │ ├── migrated_0197.js │ │ │ ├── migrated_0198.failure.json │ │ │ ├── migrated_0198.js │ │ │ ├── migrated_0199.failure.json │ │ │ ├── migrated_0199.js │ │ │ ├── migrated_0200.failure.json │ │ │ ├── migrated_0200.js │ │ │ ├── migrated_0201.failure.json │ │ │ ├── migrated_0201.js │ │ │ ├── migrated_0202.failure.json │ │ │ ├── migrated_0202.js │ │ │ ├── migrated_0203.failure.json │ │ │ ├── migrated_0203.js │ │ │ ├── migrated_0204.failure.json │ │ │ ├── migrated_0204.js │ │ │ ├── migrated_0205.failure.json │ │ │ ├── migrated_0205.js │ │ │ ├── migrated_0206.failure.json │ │ │ ├── migrated_0206.js │ │ │ ├── migrated_0207.failure.json │ │ │ ├── migrated_0207.js │ │ │ ├── migrated_0208.failure.json │ │ │ ├── migrated_0208.js │ │ │ ├── migrated_0209.failure.json │ │ │ ├── migrated_0209.js │ │ │ ├── migrated_0210.failure.json │ │ │ ├── migrated_0210.js │ │ │ ├── migrated_0211.failure.json │ │ │ ├── migrated_0211.js │ │ │ ├── migrated_0212.failure.json │ │ │ ├── migrated_0212.js │ │ │ ├── migrated_0213.failure.json │ │ │ ├── migrated_0213.js │ │ │ ├── migrated_0214.failure.json │ │ │ ├── migrated_0214.js │ │ │ ├── migrated_0215.failure.json │ │ │ ├── migrated_0215.js │ │ │ ├── migrated_0216.failure.json │ │ │ ├── migrated_0216.js │ │ │ ├── migrated_0217.failure.json │ │ │ ├── migrated_0217.js │ │ │ ├── migrated_0218.failure.json │ │ │ ├── migrated_0218.js │ │ │ ├── migrated_0219.failure.json │ │ │ ├── migrated_0219.js │ │ │ ├── migrated_0220.failure.json │ │ │ ├── migrated_0220.js │ │ │ ├── migrated_0221.failure.json │ │ │ ├── migrated_0221.js │ │ │ ├── migrated_0222.failure.json │ │ │ ├── migrated_0222.js │ │ │ ├── migrated_0223.failure.json │ │ │ ├── migrated_0223.js │ │ │ ├── migrated_0224.failure.json │ │ │ ├── migrated_0224.js │ │ │ ├── migrated_0225.failure.json │ │ │ ├── migrated_0225.js │ │ │ ├── migrated_0226.failure.json │ │ │ ├── migrated_0226.js │ │ │ ├── migrated_0227.failure.json │ │ │ ├── migrated_0227.js │ │ │ ├── migrated_0228.failure.json │ │ │ ├── migrated_0228.js │ │ │ ├── migrated_0229.failure.json │ │ │ ├── migrated_0229.js │ │ │ ├── migrated_0230.failure.json │ │ │ ├── migrated_0230.js │ │ │ ├── migrated_0231.failure.json │ │ │ ├── migrated_0231.js │ │ │ ├── migrated_0232.failure.json │ │ │ ├── migrated_0232.js │ │ │ ├── migrated_0233.failure.json │ │ │ ├── migrated_0233.js │ │ │ ├── migrated_0234.failure.json │ │ │ ├── migrated_0234.js │ │ │ ├── migrated_0235.failure.json │ │ │ ├── migrated_0235.js │ │ │ ├── migrated_0236.failure.json │ │ │ ├── migrated_0236.js │ │ │ ├── migrated_0239.failure.json │ │ │ ├── migrated_0239.js │ │ │ ├── migrated_0240.failure.json │ │ │ ├── migrated_0240.js │ │ │ ├── migrated_0241.failure.json │ │ │ ├── migrated_0241.js │ │ │ ├── migrated_0242.failure.json │ │ │ ├── migrated_0242.js │ │ │ ├── migrated_0243.failure.json │ │ │ ├── migrated_0243.js │ │ │ ├── migrated_0244.failure.json │ │ │ ├── migrated_0244.js │ │ │ ├── migrated_0245.failure.json │ │ │ ├── migrated_0245.js │ │ │ ├── migrated_0246.failure.json │ │ │ ├── migrated_0246.js │ │ │ ├── migrated_0247.failure.json │ │ │ ├── migrated_0247.js │ │ │ ├── migrated_0248.failure.json │ │ │ ├── migrated_0248.js │ │ │ ├── migrated_0249.failure.json │ │ │ ├── migrated_0249.js │ │ │ ├── migrated_0250.failure.json │ │ │ ├── migrated_0250.js │ │ │ ├── migrated_0252.failure.json │ │ │ ├── migrated_0252.js │ │ │ ├── migrated_0254.failure.json │ │ │ ├── migrated_0254.js │ │ │ ├── migrated_0255.failure.json │ │ │ ├── migrated_0255.js │ │ │ ├── migrated_0256.failure.json │ │ │ ├── migrated_0256.js │ │ │ ├── migrated_0257.failure.json │ │ │ ├── migrated_0257.js │ │ │ ├── migrated_0258.failure.json │ │ │ ├── migrated_0258.js │ │ │ ├── migrated_0260.failure.json │ │ │ ├── migrated_0260.js │ │ │ ├── migrated_0261.failure.json │ │ │ ├── migrated_0261.js │ │ │ ├── migrated_0262.failure.json │ │ │ ├── migrated_0262.js │ │ │ ├── migrated_0263.failure.json │ │ │ ├── migrated_0263.js │ │ │ ├── migrated_0264.failure.json │ │ │ ├── migrated_0264.js │ │ │ ├── migrated_0265.failure.json │ │ │ ├── migrated_0265.js │ │ │ ├── migrated_0266.failure.json │ │ │ ├── migrated_0266.js │ │ │ ├── migrated_0267.failure.json │ │ │ ├── migrated_0267.js │ │ │ ├── migrated_0268.failure.json │ │ │ ├── migrated_0268.js │ │ │ ├── migrated_0269.failure.json │ │ │ ├── migrated_0269.js │ │ │ ├── migrated_0270.failure.json │ │ │ ├── migrated_0270.js │ │ │ ├── migrated_0271.failure.json │ │ │ ├── migrated_0271.js │ │ │ ├── migrated_0272.failure.json │ │ │ ├── migrated_0272.js │ │ │ ├── migrated_0273.failure.json │ │ │ ├── migrated_0273.js │ │ │ ├── migrated_0274.failure.json │ │ │ ├── migrated_0274.js │ │ │ ├── migrated_0275.failure.json │ │ │ ├── migrated_0275.js │ │ │ ├── migrated_0276.failure.json │ │ │ ├── migrated_0276.js │ │ │ ├── migrated_0277.failure.json │ │ │ ├── migrated_0277.js │ │ │ ├── migrated_0278.failure.json │ │ │ ├── migrated_0278.js │ │ │ ├── strict_assignment_implements.failure.json │ │ │ ├── strict_assignment_implements.js │ │ │ ├── strict_assignment_interface.failure.json │ │ │ ├── strict_assignment_interface.js │ │ │ ├── strict_assignment_let.failure.json │ │ │ ├── strict_assignment_let.js │ │ │ ├── strict_assignment_package.failure.json │ │ │ ├── strict_assignment_package.js │ │ │ ├── strict_assignment_private.failure.json │ │ │ ├── strict_assignment_private.js │ │ │ ├── strict_assignment_protected.failure.json │ │ │ ├── strict_assignment_protected.js │ │ │ ├── strict_assignment_public.failure.json │ │ │ ├── strict_assignment_public.js │ │ │ ├── strict_assignment_static.failure.json │ │ │ ├── strict_assignment_static.js │ │ │ ├── strict_assignment_yield.failure.json │ │ │ └── strict_assignment_yield.js │ │ ├── statement/ │ │ │ ├── block/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── break/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── semicolon_newline.js │ │ │ │ └── semicolon_newline.tree.json │ │ │ ├── continue/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ └── migrated_0004.tree.json │ │ │ ├── debugger/ │ │ │ │ ├── migrated_0000.js │ │ │ │ └── migrated_0000.tree.json │ │ │ ├── empty/ │ │ │ │ ├── migrated_0000.js │ │ │ │ └── migrated_0000.tree.json │ │ │ ├── expression/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.source.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.source.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.source.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.source.js │ │ │ │ └── migrated_0005.tree.json │ │ │ ├── if/ │ │ │ │ ├── else-declaration-following-classic-for.js │ │ │ │ ├── else-declaration-following-classic-for.tree.json │ │ │ │ ├── invalid-function-declaration1.failure.json │ │ │ │ ├── invalid-function-declaration1.js │ │ │ │ ├── invalid-function-declaration2.failure.json │ │ │ │ ├── invalid-function-declaration2.js │ │ │ │ ├── invalid-function-declaration3.failure.json │ │ │ │ ├── invalid-function-declaration3.js │ │ │ │ ├── invalid-function-declaration4.failure.json │ │ │ │ ├── invalid-function-declaration4.js │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ └── migrated_0006.tree.json │ │ │ ├── iteration/ │ │ │ │ ├── const_forin.js │ │ │ │ ├── const_forin.tree.json │ │ │ │ ├── for-in-let.js │ │ │ │ ├── for-in-let.tree.json │ │ │ │ ├── for-let-let.js │ │ │ │ ├── for-let-let.tree.json │ │ │ │ ├── for-statement-with-seq.js │ │ │ │ ├── for-statement-with-seq.tree.json │ │ │ │ ├── invalid-assign-for-in.failure.json │ │ │ │ ├── invalid-assign-for-in.js │ │ │ │ ├── invalid-strict-for-in-let.failure.json │ │ │ │ ├── invalid-strict-for-in-let.js │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── migrated_0007.js │ │ │ │ ├── migrated_0007.tree.json │ │ │ │ ├── migrated_0008.js │ │ │ │ ├── migrated_0008.tree.json │ │ │ │ ├── migrated_0009.js │ │ │ │ ├── migrated_0009.tree.json │ │ │ │ ├── migrated_0010.js │ │ │ │ ├── migrated_0010.tree.json │ │ │ │ ├── migrated_0011.js │ │ │ │ ├── migrated_0011.tree.json │ │ │ │ ├── migrated_0012.js │ │ │ │ ├── migrated_0012.tree.json │ │ │ │ ├── migrated_0013.js │ │ │ │ ├── migrated_0013.tree.json │ │ │ │ ├── migrated_0014.js │ │ │ │ ├── migrated_0014.tree.json │ │ │ │ ├── migrated_0015.js │ │ │ │ ├── migrated_0015.tree.json │ │ │ │ ├── migrated_0016.js │ │ │ │ ├── migrated_0016.tree.json │ │ │ │ ├── migrated_0017.js │ │ │ │ ├── migrated_0017.tree.json │ │ │ │ ├── migrated_0018.js │ │ │ │ ├── migrated_0018.tree.json │ │ │ │ ├── migrated_0019.js │ │ │ │ ├── migrated_0019.tree.json │ │ │ │ ├── migrated_0020.js │ │ │ │ ├── migrated_0020.tree.json │ │ │ │ ├── migrated_0021.js │ │ │ │ ├── migrated_0021.tree.json │ │ │ │ ├── migrated_0022.js │ │ │ │ ├── migrated_0022.tree.json │ │ │ │ ├── migrated_0023.js │ │ │ │ ├── migrated_0023.tree.json │ │ │ │ ├── migrated_0024.js │ │ │ │ ├── migrated_0024.tree.json │ │ │ │ ├── migrated_0025.js │ │ │ │ ├── migrated_0025.tree.json │ │ │ │ ├── migrated_0026.js │ │ │ │ ├── migrated_0026.tree.json │ │ │ │ ├── pattern-in-for-in.js │ │ │ │ ├── pattern-in-for-in.tree.json │ │ │ │ ├── unterminated-do-while.js │ │ │ │ └── unterminated-do-while.tree.json │ │ │ ├── labelled/ │ │ │ │ ├── function-declaration.js │ │ │ │ ├── function-declaration.tree.json │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── return/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── multiline_string.js │ │ │ │ ├── multiline_string.tree.json │ │ │ │ ├── multiline_template.js │ │ │ │ └── multiline_template.tree.json │ │ │ ├── switch/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── throw/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ └── migrated_0002.tree.json │ │ │ ├── try/ │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── strict_simple_catch.js │ │ │ │ └── strict_simple_catch.tree.json │ │ │ ├── variable/ │ │ │ │ ├── complex-pattern-requires-init.failure.json │ │ │ │ ├── complex-pattern-requires-init.js │ │ │ │ ├── invalid_trailing_comma_1.failure.json │ │ │ │ ├── invalid_trailing_comma_1.js │ │ │ │ ├── invalid_trailing_comma_2.failure.json │ │ │ │ ├── invalid_trailing_comma_2.js │ │ │ │ ├── invalid_trailing_comma_3.failure.json │ │ │ │ ├── invalid_trailing_comma_3.js │ │ │ │ ├── invalid_trailing_comma_4.failure.json │ │ │ │ ├── invalid_trailing_comma_4.js │ │ │ │ ├── invalid_trailing_comma_5.failure.json │ │ │ │ ├── invalid_trailing_comma_5.js │ │ │ │ ├── invalid_trailing_comma_6.failure.json │ │ │ │ ├── invalid_trailing_comma_6.js │ │ │ │ ├── migrated_0000.js │ │ │ │ ├── migrated_0000.tree.json │ │ │ │ ├── migrated_0001.js │ │ │ │ ├── migrated_0001.tree.json │ │ │ │ ├── migrated_0002.js │ │ │ │ ├── migrated_0002.tree.json │ │ │ │ ├── migrated_0003.js │ │ │ │ ├── migrated_0003.tree.json │ │ │ │ ├── migrated_0004.js │ │ │ │ ├── migrated_0004.tree.json │ │ │ │ ├── migrated_0005.js │ │ │ │ ├── migrated_0005.tree.json │ │ │ │ ├── migrated_0006.js │ │ │ │ ├── migrated_0006.tree.json │ │ │ │ ├── var_let.js │ │ │ │ └── var_let.tree.json │ │ │ ├── while/ │ │ │ │ ├── invalid-decl-async-fun.failure.json │ │ │ │ └── invalid-decl-async-fun.js │ │ │ └── with/ │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tree.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0001.tree.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0002.tree.json │ │ │ ├── unterminated-with.js │ │ │ └── unterminated-with.tree.json │ │ ├── tokenize/ │ │ │ ├── after_if.js │ │ │ ├── after_if.tokens.json │ │ │ ├── empty.js │ │ │ ├── empty.tokens.json │ │ │ ├── invalid_number.failure.json │ │ │ ├── invalid_number.js │ │ │ ├── leading_comment.js │ │ │ ├── leading_comment.tokens.json │ │ │ ├── line_comment.js │ │ │ ├── line_comment.tokens.json │ │ │ ├── line_terminators.js │ │ │ ├── line_terminators.tokens.json │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tokens.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0001.tokens.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0002.tokens.json │ │ │ ├── migrated_0003.js │ │ │ ├── migrated_0003.tokens.json │ │ │ ├── migrated_0004.js │ │ │ ├── migrated_0004.tokens.json │ │ │ ├── migrated_0005.js │ │ │ ├── migrated_0005.tokens.json │ │ │ ├── migrated_0006.js │ │ │ ├── migrated_0006.tokens.json │ │ │ ├── migrated_0007.js │ │ │ ├── migrated_0007.tokens.json │ │ │ ├── migrated_0008.js │ │ │ ├── migrated_0008.tokens.json │ │ │ ├── migrated_0009.js │ │ │ ├── migrated_0009.tokens.json │ │ │ ├── migrated_0010.js │ │ │ ├── migrated_0010.tokens.json │ │ │ ├── migrated_0011.js │ │ │ ├── migrated_0011.tokens.json │ │ │ ├── migrated_0012.js │ │ │ ├── migrated_0012.tokens.json │ │ │ ├── migrated_0013.js │ │ │ ├── migrated_0013.tokens.json │ │ │ ├── migrated_0014.js │ │ │ ├── migrated_0014.tokens.json │ │ │ ├── migrated_0015.js │ │ │ ├── migrated_0015.tokens.json │ │ │ ├── migrated_0016.js │ │ │ ├── migrated_0016.tokens.json │ │ │ ├── single_slash.js │ │ │ ├── single_slash.tokens.json │ │ │ ├── trailing_comment.js │ │ │ └── trailing_comment.tokens.json │ │ ├── tolerant-parse/ │ │ │ ├── for-in-missing-parenthesis.js │ │ │ ├── for-in-missing-parenthesis.tree.json │ │ │ ├── for-missing-parenthesis.js │ │ │ ├── for-missing-parenthesis.tree.json │ │ │ ├── for-of-missing-parenthesis.js │ │ │ ├── for-of-missing-parenthesis.tree.json │ │ │ ├── if-missing-parenthesis.js │ │ │ ├── if-missing-parenthesis.tree.json │ │ │ ├── let_eval.js │ │ │ ├── let_eval.tree.json │ │ │ ├── migrated_0000.js │ │ │ ├── migrated_0000.tree.json │ │ │ ├── migrated_0001.js │ │ │ ├── migrated_0001.tree.json │ │ │ ├── migrated_0002.js │ │ │ ├── migrated_0002.tree.json │ │ │ ├── migrated_0003.js │ │ │ ├── migrated_0003.tree.json │ │ │ ├── migrated_0004.js │ │ │ ├── migrated_0004.tree.json │ │ │ ├── migrated_0005.js │ │ │ ├── migrated_0005.tree.json │ │ │ ├── migrated_0006.js │ │ │ ├── migrated_0006.tree.json │ │ │ ├── migrated_0007.js │ │ │ ├── migrated_0007.tree.json │ │ │ ├── migrated_0008.js │ │ │ ├── migrated_0008.tree.json │ │ │ ├── migrated_0009.js │ │ │ ├── migrated_0009.tree.json │ │ │ ├── migrated_0010.js │ │ │ ├── migrated_0010.tree.json │ │ │ ├── migrated_0011.js │ │ │ ├── migrated_0011.tree.json │ │ │ ├── migrated_0012.js │ │ │ ├── migrated_0012.tree.json │ │ │ ├── migrated_0013.js │ │ │ ├── migrated_0013.tree.json │ │ │ ├── migrated_0014.js │ │ │ ├── migrated_0014.tree.json │ │ │ ├── migrated_0015.js │ │ │ ├── migrated_0015.tree.json │ │ │ ├── migrated_0016.js │ │ │ ├── migrated_0016.tree.json │ │ │ ├── migrated_0017.js │ │ │ ├── migrated_0017.tree.json │ │ │ ├── migrated_0018.js │ │ │ ├── migrated_0018.tree.json │ │ │ ├── migrated_0019.js │ │ │ ├── migrated_0019.tree.json │ │ │ ├── migrated_0020.js │ │ │ ├── migrated_0020.tree.json │ │ │ ├── migrated_0021.js │ │ │ ├── migrated_0021.tree.json │ │ │ ├── migrated_0022.js │ │ │ ├── migrated_0022.tree.json │ │ │ ├── migrated_0023.js │ │ │ ├── migrated_0023.tree.json │ │ │ ├── migrated_0024.js │ │ │ ├── migrated_0024.tree.json │ │ │ ├── migrated_0025.js │ │ │ ├── migrated_0025.tree.json │ │ │ ├── migrated_0026.js │ │ │ ├── migrated_0026.tree.json │ │ │ ├── migrated_0027.js │ │ │ ├── migrated_0027.tree.json │ │ │ ├── migrated_0028.js │ │ │ ├── migrated_0028.tree.json │ │ │ ├── migrated_0029.js │ │ │ ├── migrated_0029.tree.json │ │ │ ├── migrated_0030.js │ │ │ ├── migrated_0030.tree.json │ │ │ ├── migrated_0031.js │ │ │ ├── migrated_0031.tree.json │ │ │ ├── migrated_0032.js │ │ │ ├── migrated_0032.tree.json │ │ │ ├── migrated_0033.js │ │ │ ├── migrated_0033.tree.json │ │ │ ├── migrated_0034.js │ │ │ ├── migrated_0034.tree.json │ │ │ ├── migrated_0035.failure.json │ │ │ ├── migrated_0035.js │ │ │ ├── migrated_0036.js │ │ │ ├── migrated_0036.tree.json │ │ │ ├── migrated_0037.js │ │ │ ├── migrated_0037.tree.json │ │ │ ├── migrated_0038.failure.json │ │ │ ├── migrated_0038.js │ │ │ ├── migrated_0039.js │ │ │ ├── migrated_0039.tree.json │ │ │ ├── migrated_0040.js │ │ │ ├── migrated_0040.tree.json │ │ │ ├── migrated_0041.js │ │ │ ├── migrated_0041.tree.json │ │ │ ├── migrated_0042.js │ │ │ ├── migrated_0042.tree.json │ │ │ ├── migrated_0044.js │ │ │ ├── migrated_0044.tree.json │ │ │ ├── migrated_0045.js │ │ │ ├── migrated_0045.tree.json │ │ │ ├── migrated_0046.js │ │ │ ├── migrated_0046.tree.json │ │ │ ├── migrated_0047.js │ │ │ ├── migrated_0047.tree.json │ │ │ ├── migrated_0048.js │ │ │ ├── migrated_0048.tree.json │ │ │ ├── migrated_0049.js │ │ │ ├── migrated_0049.tree.json │ │ │ ├── migrated_0050.source.js │ │ │ ├── migrated_0050.tree.json │ │ │ ├── migrated_0051.js │ │ │ ├── migrated_0051.tree.json │ │ │ ├── migrated_0052.js │ │ │ ├── migrated_0052.tree.json │ │ │ ├── string_literal_escape_eight.js │ │ │ ├── string_literal_escape_eight.tree.json │ │ │ ├── while-missing-parenthesis.js │ │ │ └── while-missing-parenthesis.tree.json │ │ └── whitespace/ │ │ ├── migrated_0000.source.js │ │ ├── migrated_0000.tree.json │ │ ├── migrated_0001.source.js │ │ └── migrated_0001.tree.json │ ├── grammar-tests.js │ ├── hostile-environment-tests.js │ ├── line-ending-sample.js │ ├── profile.js │ ├── regression-tests.js │ ├── test-262-whitelist.txt │ ├── test-262.js │ ├── tsfmt.json │ ├── unit-tests.js │ ├── utils/ │ │ ├── create-testcases.js │ │ ├── error-to-object.js │ │ └── evaluate-testcase.js │ └── verify-line-ending.js ├── tools/ │ ├── fixupbundle.js │ ├── generate-fixtures.js │ ├── generate-identifier-regex.js │ └── generate-xhtml-entities.js └── webpack.config.js
SYMBOL INDEX (1326 symbols across 369 files)
FILE: bin/esparse.js
function showUsage (line 54) | function showUsage() {
function adjustRegexLiteral (line 111) | function adjustRegexLiteral(key, value) {
function run (line 118) | function run(content) {
FILE: bin/esvalidate.js
function showUsage (line 81) | function showUsage() {
function run (line 134) | function run(fname, content) {
FILE: eslint/index.js
constant MAX (line 8) | const MAX = 24;
method create (line 13) | create(context) {
FILE: src/assert.ts
function assert (line 6) | function assert(condition: boolean, message: string): void {
FILE: src/character.ts
method fromCodePoint (line 13) | fromCodePoint(cp: number): string {
method isWhiteSpace (line 21) | isWhiteSpace(cp: number): boolean {
method isLineTerminator (line 28) | isLineTerminator(cp: number): boolean {
method isIdentifierStart (line 34) | isIdentifierStart(cp: number): boolean {
method isIdentifierPart (line 42) | isIdentifierPart(cp: number): boolean {
method isDecimalDigit (line 53) | isDecimalDigit(cp: number): boolean {
method isDecimalDigitChar (line 57) | isDecimalDigitChar(ch: string): ch is '0' | '1' | '2' | '3' | '4' | '5' ...
method isHexDigit (line 61) | isHexDigit(cp: number): boolean {
method isOctalDigit (line 67) | isOctalDigit(cp: number): boolean {
FILE: src/comment-handler.ts
type Comment (line 4) | interface Comment {
type Entry (line 11) | interface Entry {
type NodeInfo (line 16) | interface NodeInfo {
class CommentHandler (line 21) | class CommentHandler {
method constructor (line 28) | constructor() {
method insertInnerComments (line 36) | insertInnerComments(node, metadata) {
method findTrailingComments (line 55) | findTrailingComments(metadata) {
method findLeadingComments (line 80) | findLeadingComments(metadata) {
method visitNode (line 119) | visitNode(node, metadata) {
method visitComment (line 140) | visitComment(node, metadata) {
method visit (line 172) | visit(node, metadata) {
FILE: src/error-handler.ts
class Error (line 1) | class Error {
class ErrorHandler (line 11) | class ErrorHandler {
method constructor (line 15) | constructor() {
method recordError (line 20) | recordError(error: Error): void {
method tolerate (line 24) | tolerate(error): void {
method constructError (line 32) | constructError(msg: string, column: number): Error {
method createError (line 47) | createError(index: number, line: number, col: number, description: str...
method throwError (line 56) | throwError(index: number, line: number, col: number, description: stri...
method tolerateError (line 60) | tolerateError(index: number, line: number, col: number, description: s...
FILE: src/esprima.ts
function parse (line 30) | function parse(code: string, options, delegate) {
function parseModule (line 82) | function parseModule(code: string, options, delegate) {
function parseScript (line 88) | function parseScript(code: string, options, delegate) {
function tokenize (line 94) | function tokenize(code: string, options, delegate) {
FILE: src/jsx-nodes.ts
type JSXAttributeName (line 4) | type JSXAttributeName = JSXIdentifier | JSXNamespacedName;
type JSXAttributeValue (line 5) | type JSXAttributeValue = Node.Literal | JSXElement | JSXSpreadAttribute ...
type JSXChild (line 6) | type JSXChild = JSXElement | JSXExpressionContainer | JSXText;
type JSXElementAttribute (line 7) | type JSXElementAttribute = JSXAttribute | JSXSpreadAttribute;
type JSXElementName (line 8) | type JSXElementName = JSXIdentifier | JSXNamespacedName | JSXMemberExpre...
class JSXClosingElement (line 10) | class JSXClosingElement {
method constructor (line 13) | constructor(name: JSXElementName) {
class JSXClosingFragment (line 19) | class JSXClosingFragment {
method constructor (line 21) | constructor() {
class JSXElement (line 26) | class JSXElement {
method constructor (line 31) | constructor(
class JSXEmptyExpression (line 43) | class JSXEmptyExpression {
method constructor (line 45) | constructor() {
class JSXExpressionContainer (line 50) | class JSXExpressionContainer {
method constructor (line 53) | constructor(expression: Node.Expression | JSXEmptyExpression) {
class JSXIdentifier (line 59) | class JSXIdentifier {
method constructor (line 62) | constructor(name: string) {
class JSXMemberExpression (line 68) | class JSXMemberExpression {
method constructor (line 72) | constructor(object: JSXMemberExpression | JSXIdentifier, property: JSX...
class JSXAttribute (line 79) | class JSXAttribute {
method constructor (line 83) | constructor(name: JSXAttributeName, value: JSXAttributeValue | null) {
class JSXNamespacedName (line 90) | class JSXNamespacedName {
method constructor (line 94) | constructor(namespace: JSXIdentifier, name: JSXIdentifier) {
class JSXOpeningElement (line 101) | class JSXOpeningElement {
method constructor (line 106) | constructor(name: JSXElementName, selfClosing: boolean, attributes: JS...
class JSXOpeningFragment (line 114) | class JSXOpeningFragment {
method constructor (line 117) | constructor(selfClosing: boolean) {
class JSXSpreadAttribute (line 123) | class JSXSpreadAttribute {
method constructor (line 126) | constructor(argument: Node.Expression) {
class JSXText (line 132) | class JSXText {
method constructor (line 136) | constructor(value: string, raw: string) {
FILE: src/jsx-parser.ts
type MetaJSXElement (line 9) | interface MetaJSXElement {
type JSXToken (line 16) | const enum JSXToken {
type RawJSXToken (line 21) | interface RawJSXToken {
function getQualifiedElementName (line 34) | function getQualifiedElementName(elementName: JSXNode.JSXElementName): s...
class JSXParser (line 60) | class JSXParser extends Parser {
method constructor (line 62) | constructor(code: string, options, delegate) {
method parsePrimaryExpression (line 66) | parsePrimaryExpression(): Node.Expression | JSXNode.JSXElement {
method startJSX (line 70) | startJSX() {
method finishJSX (line 77) | finishJSX() {
method reenterJSX (line 82) | reenterJSX() {
method createJSXNode (line 92) | createJSXNode(): Marker {
method createJSXChildNode (line 101) | createJSXChildNode(): Marker {
method scanXHTMLEntity (line 109) | scanXHTMLEntity(quote: string): string {
method lexJSX (line 164) | lexJSX(): RawJSXToken {
method nextJSXToken (line 265) | nextJSXToken(): RawJSXToken {
method nextJSXText (line 283) | nextJSXText(): RawJSXToken {
method peekJSXToken (line 327) | peekJSXToken(): RawJSXToken {
method expectJSX (line 339) | expectJSX(value) {
method matchJSX (line 348) | matchJSX(value) {
method parseJSXIdentifier (line 353) | parseJSXIdentifier(): JSXNode.JSXIdentifier {
method parseJSXElementName (line 362) | parseJSXElementName(): JSXNode.JSXElementName {
method parseJSXAttributeName (line 383) | parseJSXAttributeName(): JSXNode.JSXAttributeName {
method parseJSXStringLiteralAttribute (line 400) | parseJSXStringLiteralAttribute(): Node.Literal {
method parseJSXExpressionAttribute (line 410) | parseJSXExpressionAttribute(): JSXNode.JSXExpressionContainer {
method parseJSXAttributeValue (line 426) | parseJSXAttributeValue(): JSXNode.JSXAttributeValue {
method parseJSXNameValueAttribute (line 431) | parseJSXNameValueAttribute(): JSXNode.JSXAttribute {
method parseJSXSpreadAttribute (line 442) | parseJSXSpreadAttribute(): JSXNode.JSXSpreadAttribute {
method parseJSXAttributes (line 454) | parseJSXAttributes(): JSXNode.JSXElementAttribute[] {
method parseJSXOpeningElement (line 466) | parseJSXOpeningElement(): JSXNode.JSXOpeningElement | JSXNode.JSXOpeni...
method parseJSXBoundaryElement (line 486) | parseJSXBoundaryElement(): JSXNode.JSXOpeningElement | JSXNode.JSXClos...
method parseJSXEmptyExpression (line 512) | parseJSXEmptyExpression(): JSXNode.JSXEmptyExpression {
method parseJSXExpressionContainer (line 521) | parseJSXExpressionContainer(): JSXNode.JSXExpressionContainer {
method parseJSXChildren (line 538) | parseJSXChildren(): JSXNode.JSXChild[] {
method parseComplexJSXElement (line 560) | parseComplexJSXElement(el: MetaJSXElement): MetaJSXElement {
method parseJSXElement (line 606) | parseJSXElement(): JSXNode.JSXElement {
method parseJSXRoot (line 622) | parseJSXRoot(): JSXNode.JSXElement {
method isStartOfExpression (line 635) | isStartOfExpression(): boolean {
FILE: src/nodes.ts
type ArgumentListElement (line 3) | type ArgumentListElement = Expression | SpreadElement;
type ArrayExpressionElement (line 4) | type ArrayExpressionElement = Expression | SpreadElement | null;
type ArrayPatternElement (line 5) | type ArrayPatternElement = AssignmentPattern | BindingIdentifier | Bindi...
type BindingPattern (line 6) | type BindingPattern = ArrayPattern | ObjectPattern;
type BindingIdentifier (line 7) | type BindingIdentifier = Identifier;
type ChainElement (line 8) | type ChainElement = CallExpression | ComputedMemberExpression | StaticMe...
type Declaration (line 9) | type Declaration = AsyncFunctionDeclaration | ClassDeclaration | ExportD...
type ExportableDefaultDeclaration (line 10) | type ExportableDefaultDeclaration = BindingIdentifier | BindingPattern |...
type ExportableNamedDeclaration (line 11) | type ExportableNamedDeclaration = AsyncFunctionDeclaration | ClassDeclar...
type ExportDeclaration (line 12) | type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration...
type Expression (line 13) | type Expression = ArrayExpression | ArrowFunctionExpression | Assignment...
type FunctionParameter (line 18) | type FunctionParameter = AssignmentPattern | BindingIdentifier | Binding...
type ImportDeclarationSpecifier (line 19) | type ImportDeclarationSpecifier = ImportDefaultSpecifier | ImportNamespa...
type ObjectExpressionProperty (line 20) | type ObjectExpressionProperty = Property | SpreadElement;
type ObjectPatternProperty (line 21) | type ObjectPatternProperty = Property | RestElement;
type Statement (line 22) | type Statement = AsyncFunctionDeclaration | BreakStatement | ContinueSta...
type PropertyKey (line 26) | type PropertyKey = Identifier | Literal;
type PropertyValue (line 27) | type PropertyValue = AssignmentPattern | AsyncFunctionExpression | Bindi...
type StatementListItem (line 28) | type StatementListItem = Declaration | Statement;
class ArrayExpression (line 30) | class ArrayExpression {
method constructor (line 33) | constructor(elements: ArrayExpressionElement[]) {
class ArrayPattern (line 39) | class ArrayPattern {
method constructor (line 42) | constructor(elements: ArrayPatternElement[]) {
class ArrowFunctionExpression (line 48) | class ArrowFunctionExpression {
method constructor (line 56) | constructor(params: FunctionParameter[], body: BlockStatement | Expres...
class AssignmentExpression (line 67) | class AssignmentExpression {
method constructor (line 72) | constructor(operator: string, left: Expression, right: Expression) {
class AssignmentPattern (line 80) | class AssignmentPattern {
method constructor (line 84) | constructor(left: BindingIdentifier | BindingPattern, right: Expressio...
class AsyncArrowFunctionExpression (line 91) | class AsyncArrowFunctionExpression {
method constructor (line 99) | constructor(params: FunctionParameter[], body: BlockStatement | Expres...
class AsyncFunctionDeclaration (line 110) | class AsyncFunctionDeclaration {
method constructor (line 118) | constructor(id: Identifier | null, params: FunctionParameter[], body: ...
class AsyncFunctionExpression (line 129) | class AsyncFunctionExpression {
method constructor (line 137) | constructor(id: Identifier | null, params: FunctionParameter[], body: ...
class AwaitExpression (line 148) | class AwaitExpression {
method constructor (line 151) | constructor(argument: Expression) {
class BinaryExpression (line 157) | class BinaryExpression {
method constructor (line 162) | constructor(operator: string, left: Expression, right: Expression) {
class BlockStatement (line 171) | class BlockStatement {
method constructor (line 174) | constructor(body) {
class BreakStatement (line 180) | class BreakStatement {
method constructor (line 183) | constructor(label: Identifier | null) {
class CallExpression (line 189) | class CallExpression {
method constructor (line 194) | constructor(callee: Expression | Import, args: ArgumentListElement[], ...
class CatchClause (line 202) | class CatchClause {
method constructor (line 206) | constructor(param: BindingIdentifier | BindingPattern | null, body: Bl...
class ChainExpression (line 213) | class ChainExpression {
method constructor (line 216) | constructor(expression: ChainElement) {
class ClassBody (line 222) | class ClassBody {
method constructor (line 225) | constructor(body: Property[]) {
class ClassDeclaration (line 231) | class ClassDeclaration {
method constructor (line 236) | constructor(id: Identifier | null, superClass: Identifier | null, body...
class ClassExpression (line 244) | class ClassExpression {
method constructor (line 249) | constructor(id: Identifier | null, superClass: Identifier | null, body...
class ComputedMemberExpression (line 257) | class ComputedMemberExpression {
method constructor (line 263) | constructor(object: Expression, property: Expression, optional: boolea...
class ConditionalExpression (line 272) | class ConditionalExpression {
method constructor (line 277) | constructor(test: Expression, consequent: Expression, alternate: Expre...
class ContinueStatement (line 285) | class ContinueStatement {
method constructor (line 288) | constructor(label: Identifier | null) {
class DebuggerStatement (line 294) | class DebuggerStatement {
method constructor (line 296) | constructor() {
class Directive (line 301) | class Directive {
method constructor (line 305) | constructor(expression: Expression, directive: string) {
class DoWhileStatement (line 312) | class DoWhileStatement {
method constructor (line 316) | constructor(body: Statement, test: Expression) {
class EmptyStatement (line 323) | class EmptyStatement {
method constructor (line 325) | constructor() {
class ExportAllDeclaration (line 330) | class ExportAllDeclaration {
method constructor (line 333) | constructor(source: Literal) {
class ExportDefaultDeclaration (line 339) | class ExportDefaultDeclaration {
method constructor (line 342) | constructor(declaration: ExportableDefaultDeclaration) {
class ExportNamedDeclaration (line 348) | class ExportNamedDeclaration {
method constructor (line 353) | constructor(declaration: ExportableNamedDeclaration | null, specifiers...
class ExportSpecifier (line 361) | class ExportSpecifier {
method constructor (line 365) | constructor(local: Identifier, exported: Identifier) {
class ExpressionStatement (line 372) | class ExpressionStatement {
method constructor (line 375) | constructor(expression: Expression) {
class ForInStatement (line 381) | class ForInStatement {
method constructor (line 387) | constructor(left: Expression, right: Expression, body: Statement) {
class ForOfStatement (line 396) | class ForOfStatement {
method constructor (line 402) | constructor(left: Expression, right: Expression, body: Statement, _awa...
class ForStatement (line 411) | class ForStatement {
method constructor (line 417) | constructor(init: Expression | null, test: Expression | null, update: ...
class FunctionDeclaration (line 426) | class FunctionDeclaration {
method constructor (line 434) | constructor(id: Identifier | null, params: FunctionParameter[], body: ...
class FunctionExpression (line 445) | class FunctionExpression {
method constructor (line 453) | constructor(id: Identifier | null, params: FunctionParameter[], body: ...
class Identifier (line 464) | class Identifier {
method constructor (line 467) | constructor(name) {
class IfStatement (line 473) | class IfStatement {
method constructor (line 478) | constructor(test: Expression, consequent: Statement, alternate: Statem...
class Import (line 486) | class Import {
method constructor (line 488) | constructor() {
class ImportDeclaration (line 493) | class ImportDeclaration {
method constructor (line 497) | constructor(specifiers, source) {
class ImportDefaultSpecifier (line 504) | class ImportDefaultSpecifier {
method constructor (line 507) | constructor(local: Identifier) {
class ImportNamespaceSpecifier (line 513) | class ImportNamespaceSpecifier {
method constructor (line 516) | constructor(local: Identifier) {
class ImportSpecifier (line 522) | class ImportSpecifier {
method constructor (line 526) | constructor(local: Identifier, imported: Identifier) {
class LabeledStatement (line 533) | class LabeledStatement {
method constructor (line 537) | constructor(label: Identifier, body: Statement) {
class Literal (line 544) | class Literal {
method constructor (line 548) | constructor(value: boolean | number | string | null, raw: string) {
class MetaProperty (line 555) | class MetaProperty {
method constructor (line 559) | constructor(meta: Identifier, property: Identifier) {
class MethodDefinition (line 566) | class MethodDefinition {
method constructor (line 573) | constructor(key: Expression | null, computed: boolean, value: AsyncFun...
class Module (line 583) | class Module {
method constructor (line 587) | constructor(body: StatementListItem[]) {
class NewExpression (line 594) | class NewExpression {
method constructor (line 598) | constructor(callee: Expression, args: ArgumentListElement[]) {
class ObjectExpression (line 605) | class ObjectExpression {
method constructor (line 608) | constructor(properties: ObjectExpressionProperty[]) {
class ObjectPattern (line 614) | class ObjectPattern {
method constructor (line 617) | constructor(properties: ObjectPatternProperty[]) {
class Property (line 623) | class Property {
method constructor (line 631) | constructor(kind: string, key: PropertyKey, computed: boolean, value: ...
class RegexLiteral (line 642) | class RegexLiteral {
method constructor (line 647) | constructor(value: RegExp, raw: string, pattern: string, flags: string) {
class RestElement (line 655) | class RestElement {
method constructor (line 658) | constructor(argument: BindingIdentifier | BindingPattern) {
class ReturnStatement (line 664) | class ReturnStatement {
method constructor (line 667) | constructor(argument: Expression | null) {
class Script (line 673) | class Script {
method constructor (line 677) | constructor(body: StatementListItem[]) {
class SequenceExpression (line 684) | class SequenceExpression {
method constructor (line 687) | constructor(expressions: Expression[]) {
class SpreadElement (line 693) | class SpreadElement {
method constructor (line 696) | constructor(argument: Expression) {
class StaticMemberExpression (line 702) | class StaticMemberExpression {
method constructor (line 708) | constructor(object: Expression, property: Expression, optional: boolea...
class Super (line 717) | class Super {
method constructor (line 719) | constructor() {
class SwitchCase (line 724) | class SwitchCase {
method constructor (line 728) | constructor(test: Expression, consequent: Statement[]) {
class SwitchStatement (line 735) | class SwitchStatement {
method constructor (line 739) | constructor(discriminant: Expression, cases: SwitchCase[]) {
class TaggedTemplateExpression (line 746) | class TaggedTemplateExpression {
method constructor (line 750) | constructor(tag: Expression, quasi: TemplateLiteral) {
type TemplateElementValue (line 757) | interface TemplateElementValue {
class TemplateElement (line 762) | class TemplateElement {
method constructor (line 766) | constructor(value: TemplateElementValue, tail: boolean) {
class TemplateLiteral (line 773) | class TemplateLiteral {
method constructor (line 777) | constructor(quasis: TemplateElement[], expressions: Expression[]) {
class ThisExpression (line 784) | class ThisExpression {
method constructor (line 786) | constructor() {
class ThrowStatement (line 791) | class ThrowStatement {
method constructor (line 794) | constructor(argument: Expression) {
class TryStatement (line 800) | class TryStatement {
method constructor (line 805) | constructor(block: BlockStatement, handler: CatchClause | null, finali...
class UnaryExpression (line 813) | class UnaryExpression {
method constructor (line 818) | constructor(operator, argument) {
class UpdateExpression (line 826) | class UpdateExpression {
method constructor (line 831) | constructor(operator, argument, prefix) {
class VariableDeclaration (line 839) | class VariableDeclaration {
method constructor (line 843) | constructor(declarations: VariableDeclarator[], kind: string) {
class VariableDeclarator (line 850) | class VariableDeclarator {
method constructor (line 854) | constructor(id: BindingIdentifier | BindingPattern, init: Expression |...
class WhileStatement (line 861) | class WhileStatement {
method constructor (line 865) | constructor(test: Expression, body: Statement) {
class WithStatement (line 872) | class WithStatement {
method constructor (line 876) | constructor(object: Expression, body: Statement) {
class YieldExpression (line 883) | class YieldExpression {
method constructor (line 887) | constructor(argument: Expression | null, delegate: boolean) {
FILE: src/parser.ts
type Config (line 9) | interface Config {
type Context (line 18) | interface Context {
type Marker (line 35) | interface Marker {
type ArrowParameterPlaceHolderNode (line 43) | interface ArrowParameterPlaceHolderNode {
type DeclarationOptions (line 49) | interface DeclarationOptions {
type TokenEntry (line 53) | interface TokenEntry {
type ParseTemplateLiteralOptions (line 64) | interface ParseTemplateLiteralOptions {
class Parser (line 70) | class Parser {
method constructor (line 85) | constructor(code: string, options: any = {}, delegate) {
method throwError (line 181) | throwError(messageFormat: string, ...values): void {
method tolerateError (line 195) | tolerateError(messageFormat, ...values) {
method unexpectedTokenError (line 210) | unexpectedTokenError(token?: any, message?: string): Error {
method throwUnexpectedToken (line 253) | throwUnexpectedToken(token?, message?): never {
method tolerateUnexpectedToken (line 257) | tolerateUnexpectedToken(token?, message?) {
method tolerateInvalidLoopStatement (line 261) | tolerateInvalidLoopStatement() {
method collectComments (line 267) | collectComments() {
method getTokenRaw (line 305) | getTokenRaw(token): string {
method convertToken (line 309) | convertToken(token: RawToken): TokenEntry {
method nextToken (line 338) | nextToken(): RawToken {
method nextRegexToken (line 370) | nextRegexToken(): RawToken {
method createNode (line 389) | createNode(): Marker {
method startNode (line 397) | startNode(token, lastLineStart = 0): Marker {
method finalize (line 411) | finalize(marker: Marker, node) {
method expect (line 454) | expect(value) {
method expectCommaSeparator (line 463) | expectCommaSeparator() {
method expectKeyword (line 482) | expectKeyword(keyword) {
method match (line 491) | match(value) {
method matchKeyword (line 497) | matchKeyword(keyword) {
method matchContextualKeyword (line 504) | matchContextualKeyword(keyword) {
method matchAssign (line 510) | matchAssign() {
method isolateCoverGrammar (line 562) | isolateCoverGrammar(parseFunction) {
method inheritCoverGrammar (line 583) | inheritCoverGrammar(parseFunction) {
method consumeSemicolon (line 601) | consumeSemicolon() {
method parsePrimaryExpression (line 616) | parsePrimaryExpression(): Node.Expression {
method parseSpreadElement (line 725) | parseSpreadElement(): Node.SpreadElement {
method parseArrayInitializer (line 732) | parseArrayInitializer(): Node.ArrayExpression {
method parsePropertyMethod (line 763) | parsePropertyMethod(params): Node.BlockStatement {
method parsePropertyMethodFunction (line 783) | parsePropertyMethodFunction(isGenerator: boolean): Node.FunctionExpres...
method parsePropertyMethodAsyncFunction (line 795) | parsePropertyMethodAsyncFunction(isGenerator: boolean): Node.FunctionE...
method parseObjectPropertyKey (line 811) | parseObjectPropertyKey(): Node.PropertyKey {
method isPropertyKey (line 849) | isPropertyKey(key, value) {
method parseObjectProperty (line 854) | parseObjectProperty(hasProto): Node.Property {
method parseObjectInitializer (line 947) | parseObjectInitializer(): Node.ObjectExpression {
method throwTemplateLiteralEarlyErrors (line 965) | throwTemplateLiteralEarlyErrors(token: RawToken): never {
method parseTemplateHead (line 980) | parseTemplateHead(options: ParseTemplateLiteralOptions): Node.Template...
method parseTemplateElement (line 994) | parseTemplateElement(options: ParseTemplateLiteralOptions): Node.Templ...
method parseTemplateLiteral (line 1010) | parseTemplateLiteral(options: ParseTemplateLiteralOptions): Node.Templ...
method reinterpretExpressionAsPattern (line 1029) | reinterpretExpressionAsPattern(expr) {
method parseGroupExpression (line 1066) | parseGroupExpression(): ArrowParameterPlaceHolderNode | Node.Expression {
method parseArguments (line 1193) | parseArguments(): Node.ArgumentListElement[] {
method isIdentifierName (line 1215) | isIdentifierName(token): boolean {
method parseIdentifierName (line 1222) | parseIdentifierName(): Node.Identifier {
method parseNewExpression (line 1231) | parseNewExpression(): Node.MetaProperty | Node.NewExpression {
method parseAsyncArgument (line 1259) | parseAsyncArgument() {
method parseAsyncArguments (line 1265) | parseAsyncArguments(): Node.ArgumentListElement[] {
method matchImportCall (line 1287) | matchImportCall(): boolean {
method parseImportCall (line 1300) | parseImportCall(): Node.Import {
method matchImportMeta (line 1306) | matchImportMeta(): boolean {
method parseImportMeta (line 1330) | parseImportMeta(): Node.MetaProperty {
method parseLeftHandSideExpressionAllowCall (line 1339) | parseLeftHandSideExpressionAllowCall(): Node.Expression {
method parseSuper (line 1432) | parseSuper(): Node.Super {
method parseLeftHandSideExpression (line 1443) | parseLeftHandSideExpression(): Node.Expression {
method parseUpdateExpression (line 1503) | parseUpdateExpression(): Node.Expression {
method parseAwaitExpression (line 1545) | parseAwaitExpression(): Node.AwaitExpression {
method parseUnaryExpression (line 1552) | parseUnaryExpression(): Node.Expression {
method parseExponentiationExpression (line 1575) | parseExponentiationExpression(): Node.Expression {
method binaryPrecedence (line 1600) | binaryPrecedence(token): number {
method parseBinaryExpression (line 1613) | parseBinaryExpression(): Node.Expression {
method parseConditionalExpression (line 1695) | parseConditionalExpression(): Node.Expression {
method checkPatternParam (line 1720) | checkPatternParam(options, param) {
method reinterpretAsCoverFormalsList (line 1750) | reinterpretAsCoverFormalsList(expr) {
method parseAssignmentExpression (line 1811) | parseAssignmentExpression(): Node.Expression {
method parseExpression (line 1921) | parseExpression(): Node.Expression | Node.SequenceExpression {
method parseStatementListItem (line 1944) | parseStatementListItem(): Node.StatementListItem {
method parseBlock (line 1991) | parseBlock(): Node.BlockStatement {
method parseLexicalBinding (line 2009) | parseLexicalBinding(kind: string, options): Node.VariableDeclarator {
method parseBindingList (line 2038) | parseBindingList(kind: string, options): Node.VariableDeclarator[] {
method isLexicalDeclaration (line 2049) | isLexicalDeclaration(): boolean {
method parseLexicalDeclaration (line 2062) | parseLexicalDeclaration(options): Node.VariableDeclaration {
method parseBindingRestElement (line 2075) | parseBindingRestElement(params, kind?: string): Node.RestElement {
method parseArrayPattern (line 2084) | parseArrayPattern(params, kind?: string): Node.ArrayPattern {
method parsePropertyPattern (line 2111) | parsePropertyPattern(params, kind?: string): Node.Property {
method parseRestProperty (line 2149) | parseRestProperty(params): Node.RestElement {
method parseObjectPattern (line 2162) | parseObjectPattern(params, kind?: string): Node.ObjectPattern {
method parsePattern (line 2178) | parsePattern(params, kind?: string): Node.BindingIdentifier | Node.Bin...
method parsePatternWithDefault (line 2196) | parsePatternWithDefault(params, kind?: string): Node.AssignmentPattern...
method parseVariableIdentifier (line 2214) | parseVariableIdentifier(kind?: string): Node.Identifier {
method parseVariableDeclaration (line 2239) | parseVariableDeclaration(options: DeclarationOptions): Node.VariableDe...
method parseVariableDeclarationList (line 2262) | parseVariableDeclarationList(options): Node.VariableDeclarator[] {
method parseVariableStatement (line 2275) | parseVariableStatement(): Node.VariableDeclaration {
method parseEmptyStatement (line 2286) | parseEmptyStatement(): Node.EmptyStatement {
method parseExpressionStatement (line 2294) | parseExpressionStatement(): Node.ExpressionStatement {
method parseIfClause (line 2303) | parseIfClause(): Node.Statement {
method parseIfStatement (line 2310) | parseIfStatement(): Node.IfStatement {
method parseDoWhileStatement (line 2336) | parseDoWhileStatement(): Node.DoWhileStatement {
method parseWhileStatement (line 2365) | parseWhileStatement(): Node.WhileStatement {
method parseForStatement (line 2391) | parseForStatement(): Node.ForStatement | Node.ForInStatement | Node.Fo...
method parseContinueStatement (line 2561) | parseContinueStatement(): Node.ContinueStatement {
method parseBreakStatement (line 2586) | parseBreakStatement(): Node.BreakStatement {
method parseReturnStatement (line 2611) | parseReturnStatement(): Node.ReturnStatement {
method parseWithStatement (line 2632) | parseWithStatement(): Node.WithStatement {
method parseSwitchCase (line 2657) | parseSwitchCase(): Node.SwitchCase {
method parseSwitchStatement (line 2681) | parseSwitchStatement(): Node.SwitchStatement {
method parseLabelledStatement (line 2717) | parseLabelledStatement(): Node.LabeledStatement | Node.ExpressionState...
method parseThrowStatement (line 2761) | parseThrowStatement(): Node.ThrowStatement {
method parseCatchClause (line 2777) | parseCatchClause(): Node.CatchClause {
method parseFinallyClause (line 2813) | parseFinallyClause(): Node.BlockStatement {
method parseTryStatement (line 2818) | parseTryStatement(): Node.TryStatement {
method parseDebuggerStatement (line 2835) | parseDebuggerStatement(): Node.DebuggerStatement {
method parseStatement (line 2844) | parseStatement(): Node.Statement {
method parseFunctionSourceElements (line 2932) | parseFunctionSourceElements(): Node.BlockStatement {
method validateParam (line 2965) | validateParam(options, param, name) {
method parseRestElement (line 2997) | parseRestElement(params): Node.RestElement {
method parseFormalParameter (line 3012) | parseFormalParameter(options) {
method parseFormalParameters (line 3022) | parseFormalParameters(firstRestricted?) {
method matchAsyncFunction (line 3061) | matchAsyncFunction(): boolean {
method parseFunctionDeclaration (line 3075) | parseFunctionDeclaration(identifierIsOptional?: boolean): Node.AsyncFu...
method parseFunctionExpression (line 3149) | parseFunctionExpression(): Node.AsyncFunctionExpression | Node.Functio...
method parseDirective (line 3221) | parseDirective(): Node.Directive | Node.ExpressionStatement {
method parseDirectivePrologues (line 3232) | parseDirectivePrologues(): Node.Statement[] {
method qualifiedPropertyName (line 3269) | qualifiedPropertyName(token): boolean {
method parseGetterMethod (line 3286) | parseGetterMethod(): Node.FunctionExpression {
method parseSetterMethod (line 3302) | parseSetterMethod(): Node.FunctionExpression {
method parseGeneratorMethod (line 3320) | parseGeneratorMethod(): Node.FunctionExpression {
method isStartOfExpression (line 3337) | isStartOfExpression(): boolean {
method parseYieldExpression (line 3364) | parseYieldExpression(): Node.YieldExpression {
method parseClassElement (line 3388) | parseClassElement(hasConstructor): Node.Property {
method parseClassElementList (line 3494) | parseClassElementList(): Node.Property[] {
method parseClassBody (line 3511) | parseClassBody(): Node.ClassBody {
method parseClassDeclaration (line 3518) | parseClassDeclaration(identifierIsOptional?: boolean): Node.ClassDecla...
method parseClassExpression (line 3537) | parseClassExpression(): Node.ClassExpression {
method parseModule (line 3558) | parseModule(): Node.Module {
method parseScript (line 3570) | parseScript(): Node.Script {
method parseModuleSpecifier (line 3581) | parseModuleSpecifier(): Node.Literal {
method parseImportSpecifier (line 3594) | parseImportSpecifier(): Node.ImportSpecifier {
method parseNamedImports (line 3621) | parseNamedImports(): Node.ImportSpecifier[] {
method parseImportDefaultSpecifier (line 3636) | parseImportDefaultSpecifier(): Node.ImportDefaultSpecifier {
method parseImportNamespaceSpecifier (line 3643) | parseImportNamespaceSpecifier(): Node.ImportNamespaceSpecifier {
method parseImportDeclaration (line 3656) | parseImportDeclaration(): Node.ImportDeclaration {
method parseExportSpecifier (line 3709) | parseExportSpecifier(): Node.ExportSpecifier {
method parseExportDeclaration (line 3722) | parseExportDeclaration(): Node.ExportDeclaration {
FILE: src/scanner.ts
function hexValue (line 7) | function hexValue(ch: string): number {
function octalValue (line 11) | function octalValue(ch: string): number {
type Position (line 15) | interface Position {
type SourceLocation (line 20) | interface SourceLocation {
type Comment (line 26) | interface Comment {
type NotEscapeSequenceHead (line 34) | type NotEscapeSequenceHead = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '...
type RawToken (line 36) | interface RawToken {
type ScannerState (line 53) | interface ScannerState {
class Scanner (line 60) | class Scanner {
method constructor (line 74) | constructor(code: string, handler: ErrorHandler) {
method saveState (line 87) | public saveState(): ScannerState {
method restoreState (line 96) | public restoreState(state: ScannerState): void {
method eof (line 103) | public eof(): boolean {
method throwUnexpectedToken (line 107) | public throwUnexpectedToken(message = Messages.UnexpectedTokenIllegal)...
method tolerateUnexpectedToken (line 112) | private tolerateUnexpectedToken(message = Messages.UnexpectedTokenIlle...
method skipSingleLineComment (line 119) | private skipSingleLineComment(offset: number): Comment[] {
method skipMultiLineComment (line 178) | private skipMultiLineComment(): Comment[] {
method scanComments (line 247) | public scanComments() {
method isFutureReservedWord (line 317) | public isFutureReservedWord(id: string): boolean {
method isStrictModeReservedWord (line 329) | public isStrictModeReservedWord(id: string): boolean {
method isRestrictedWord (line 346) | public isRestrictedWord(id: string): boolean {
method isKeyword (line 352) | private isKeyword(id: string): boolean {
method codePointAt (line 380) | private codePointAt(i: number): number {
method scanHexEscape (line 394) | private scanHexEscape(prefix: string): string | null {
method tryToScanUnicodeCodePointEscape (line 408) | private tryToScanUnicodeCodePointEscape(): string | null {
method scanUnicodeCodePointEscape (line 432) | private scanUnicodeCodePointEscape(): string {
method getIdentifier (line 440) | private getIdentifier(): string {
method getComplexIdentifier (line 463) | private getComplexIdentifier(): string {
method octalToDecimal (line 519) | private octalToDecimal(ch: string) {
method scanIdentifier (line 543) | private scanIdentifier(): RawToken {
method scanPunctuator (line 583) | private scanPunctuator(): RawToken {
method scanHexLiteral (line 688) | private scanHexLiteral(start: number): RawToken {
method scanBinaryLiteral (line 716) | private scanBinaryLiteral(start: number): RawToken {
method scanOctalLiteral (line 751) | private scanOctalLiteral(prefix: string, start: number): RawToken {
method isImplicitOctalLiteral (line 789) | private isImplicitOctalLiteral(): boolean {
method scanNumericLiteral (line 805) | private scanNumericLiteral(): RawToken {
method scanStringLiteral (line 886) | private scanStringLiteral(): RawToken {
method scanTemplate (line 992) | private scanTemplate(): RawToken {
method testRegExp (line 1129) | private testRegExp(pattern: string, flags: string): RegExp | null {
method scanRegExpBody (line 1182) | private scanRegExpBody(): string {
method scanRegExpFlags (line 1224) | private scanRegExpFlags(): string {
method scanRegExp (line 1264) | public scanRegExp(): RawToken {
method lex (line 1284) | public lex(): RawToken {
FILE: src/token.ts
type Token (line 1) | const enum Token {
FILE: src/tokenizer.ts
type ReaderEntry (line 5) | type ReaderEntry = string | null;
type BufferEntry (line 7) | interface BufferEntry {
class Reader (line 18) | class Reader {
method constructor (line 23) | constructor() {
method beforeFunctionExpression (line 29) | beforeFunctionExpression(t: string): boolean {
method isRegexStart (line 43) | isRegexStart() {
method push (line 79) | push(token): void {
type Config (line 94) | interface Config {
class Tokenizer (line 101) | class Tokenizer {
method constructor (line 109) | constructor(code: string, config: Config) {
method errors (line 122) | errors() {
method getNextToken (line 126) | getNextToken() {
FILE: test/3rdparty/angular-1.2.5.js
function minErr (line 36) | function minErr(module) {
function isArrayLike (line 248) | function isArrayLike(obj) {
function forEach (line 290) | function forEach(obj, iterator, context) {
function sortedKeys (line 315) | function sortedKeys(obj) {
function forEachSorted (line 325) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 339) | function reverseParams(iteratorFn) {
function nextUid (line 351) | function nextUid() {
function setHashKey (line 379) | function setHashKey(obj, h) {
function extend (line 401) | function extend(dst) {
function int (line 415) | function int(str) {
function inherit (line 420) | function inherit(parent, extra) {
function noop (line 439) | function noop() {}
function identity (line 458) | function identity($) {return $;}
function valueFn (line 462) | function valueFn(value) {return function() {return value;};}
function isUndefined (line 475) | function isUndefined(value){return typeof value === 'undefined';}
function isDefined (line 489) | function isDefined(value){return typeof value !== 'undefined';}
function isObject (line 504) | function isObject(value){return value != null && typeof value === 'objec...
function isString (line 518) | function isString(value){return typeof value === 'string';}
function isNumber (line 532) | function isNumber(value){return typeof value === 'number';}
function isDate (line 546) | function isDate(value){
function isArray (line 562) | function isArray(value) {
function isFunction (line 578) | function isFunction(value){return typeof value === 'function';}
function isRegExp (line 588) | function isRegExp(value) {
function isWindow (line 600) | function isWindow(obj) {
function isScope (line 605) | function isScope(obj) {
function isFile (line 610) | function isFile(obj) {
function isBoolean (line 615) | function isBoolean(value) {
function isElement (line 646) | function isElement(node) {
function makeMap (line 656) | function makeMap(str){
function map (line 677) | function map(obj, iterator, context) {
function size (line 698) | function size(obj, ownPropsOnly) {
function includes (line 713) | function includes(array, obj) {
function indexOf (line 717) | function indexOf(array, obj) {
function arrayRemove (line 726) | function arrayRemove(array, value) {
function isLeafNode (line 733) | function isLeafNode (node) {
function copy (line 801) | function copy(source, destination){
function shallowCopy (line 845) | function shallowCopy(src, dst) {
function equals (line 888) | function equals(o1, o2) {
function csp (line 929) | function csp() {
function concat (line 936) | function concat(array1, array2, index) {
function sliceArgs (line 940) | function sliceArgs(args, startIndex) {
function bind (line 963) | function bind(self, fn) {
function toJsonReplacer (line 984) | function toJsonReplacer(key, value) {
function toJson (line 1014) | function toJson(obj, pretty) {
function fromJson (line 1031) | function fromJson(json) {
function toBoolean (line 1038) | function toBoolean(value) {
function startingTag (line 1051) | function startingTag(element) {
function tryDecodeURIComponent (line 1083) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1096) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1117) | function toKeyValue(obj) {
function encodeUriSegment (line 1145) | function encodeUriSegment(val) {
function encodeUriQuery (line 1164) | function encodeUriQuery(val, pctEncodeSpaces) {
function angularInit (line 1218) | function angularInit(element, bootstrap) {
function bootstrap (line 1280) | function bootstrap(element, modules) {
function snake_case (line 1322) | function snake_case(name, separator){
function bindJQuery (line 1329) | function bindJQuery() {
function assertArg (line 1356) | function assertArg(arg, name, reason) {
function assertArgFn (line 1363) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 1378) | function assertNotHasOwnProperty(name, context) {
function getter (line 1392) | function getter(obj, path, bindFnToScope) {
function getBlockElements (line 1416) | function getBlockElements(nodes) {
function setupModuleLoader (line 1443) | function setupModuleLoader(window) {
function publishExternalAPI (line 1840) | function publishExternalAPI(angular){
function jqNextId (line 2064) | function jqNextId() { return ++jqId; }
function camelCase (line 2076) | function camelCase(name) {
function jqLitePatchJQueryRemove (line 2092) | function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getter...
function JQLite (line 2128) | function JQLite(element) {
function jqLiteClone (line 2153) | function jqLiteClone(element) {
function jqLiteDealoc (line 2157) | function jqLiteDealoc(element){
function jqLiteOff (line 2164) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 2189) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 2208) | function jqLiteExpandoStore(element, key, value) {
function jqLiteData (line 2223) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 2249) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 2255) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 2267) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 2283) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 2294) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 2298) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 2317) | function jqLiteEmpty(element) {
function trigger (line 2333) | function trigger() {
function getBooleanAttrName (line 2380) | function getBooleanAttrName(element, name) {
function getText (line 2487) | function getText(element, value) {
function createEventHandler (line 2572) | function createEventHandler(element, events) {
function hashKey (line 2854) | function hashKey(obj) {
function HashMap (line 2875) | function HashMap(array){
function annotate (line 2972) | function annotate(fn) {
function createInjector (line 3502) | function createInjector(modulesToLoad) {
function $AnchorScrollProvider (line 3754) | function $AnchorScrollProvider() {
function Browser (line 4033) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 4393) | function $BrowserProvider(){
function $CacheFactoryProvider (line 4438) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 4639) | function $TemplateCacheProvider() {
function $CompileProvider (line 5139) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function directiveNormalize (line 6563) | function directiveNormalize(name) {
function nodesetLinkingFn (line 6610) | function nodesetLinkingFn(
function directiveLinkingFn (line 6617) | function directiveLinkingFn(
function tokenDifference (line 6625) | function tokenDifference(str1, str2) {
function $ControllerProvider (line 6651) | function $ControllerProvider() {
function $DocumentProvider (line 6740) | function $DocumentProvider(){
function $ExceptionHandlerProvider (line 6778) | function $ExceptionHandlerProvider() {
function parseHeaders (line 6792) | function parseHeaders(headers) {
function headersGetter (line 6827) | function headersGetter(headers) {
function transformData (line 6852) | function transformData(data, headers, fns) {
function isSuccess (line 6864) | function isSuccess(status) {
function $HttpProvider (line 6869) | function $HttpProvider() {
function $HttpBackendProvider (line 7849) | function $HttpBackendProvider() {
function createHttpBackend (line 7855) | function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawD...
function $InterpolateProvider (line 8021) | function $InterpolateProvider() {
function $IntervalProvider (line 8223) | function $IntervalProvider() {
function $LocaleProvider (line 8321) | function $LocaleProvider(){
function encodePath (line 8394) | function encodePath(path) {
function parseAbsoluteUrl (line 8405) | function parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {
function parseAppUrl (line 8414) | function parseAppUrl(relativeUrl, locationObj, appBase) {
function beginsWith (line 8439) | function beginsWith(begin, whole) {
function stripHash (line 8446) | function stripHash(url) {
function stripFile (line 8452) | function stripFile(url) {
function serverBase (line 8457) | function serverBase(url) {
function LocationHtml5Url (line 8470) | function LocationHtml5Url(appBase, basePrefix) {
function LocationHashbangUrl (line 8538) | function LocationHashbangUrl(appBase, hashPrefix) {
function LocationHashbangInHtml5Url (line 8634) | function LocationHashbangInHtml5Url(appBase, hashPrefix) {
function locationGetter (line 8857) | function locationGetter(property) {
function locationGetterSetter (line 8864) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 8912) | function $LocationProvider(){
function $LogProvider (line 9123) | function $LogProvider(){
function ensureSafeMemberName (line 9274) | function ensureSafeMemberName(name, fullExpression) {
function ensureSafeObject (line 9283) | function ensureSafeObject(obj, fullExpression) {
function setter (line 10083) | function setter(obj, path, setValue, fullExp, options) {
function cspSafeGetterFn (line 10121) | function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {
function getterFn (line 10217) | function getterFn(path, options, fullExp) {
function $ParseProvider (line 10340) | function $ParseProvider() {
function $QProvider (line 10643) | function $QProvider() {
function qFactory (line 10661) | function qFactory(nextTick, exceptionHandler) {
function $RootScopeProvider (line 11057) | function $RootScopeProvider(){
function $$SanitizeUriProvider (line 12056) | function $$SanitizeUriProvider() {
function escapeForRegexp (line 12142) | function escapeForRegexp(s) {
function adjustMatcher (line 12148) | function adjustMatcher(matcher) {
function adjustMatchers (line 12176) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 12252) | function $SceDelegateProvider() {
function $SceProvider (line 12786) | function $SceProvider() {
function $SnifferProvider (line 13218) | function $SnifferProvider() {
function $TimeoutProvider (line 13294) | function $TimeoutProvider() {
function urlResolve (line 13529) | function urlResolve(url, base) {
function urlIsSameOrigin (line 13563) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 13609) | function $WindowProvider(){
function $FilterProvider (line 13689) | function $FilterProvider($provide) {
function filterFilter (line 13846) | function filterFilter() {
function currencyFilter (line 13996) | function currencyFilter($locale) {
function numberFilter (line 14055) | function numberFilter($locale) {
function formatNumber (line 14064) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 14138) | function padNumber(num, digits, trim) {
function dateGetter (line 14152) | function dateGetter(name, size, offset, trim) {
function dateStrGetter (line 14163) | function dateStrGetter(name, shortForm) {
function timeZoneGetter (line 14172) | function timeZoneGetter(date) {
function ampmGetter (line 14182) | function ampmGetter(date, formats) {
function dateFilter (line 14298) | function dateFilter($locale) {
function jsonFilter (line 14401) | function jsonFilter() {
function limitToFilter (line 14489) | function limitToFilter(){
function orderByFilter (line 14613) | function orderByFilter($parse){
function ngDirective (line 14664) | function ngDirective(directive) {
function FormController (line 15132) | function FormController(element, attrs) {
function textInputType (line 15855) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function numberInputType (line 16001) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 16063) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 16080) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 16097) | function radioInputType(scope, element, attr, ctrl) {
function checkboxInputType (line 16119) | function checkboxInputType(scope, element, attr, ctrl) {
function toggleValidCss (line 16478) | function toggleValidCss(isValid, validationErrorKey) {
function getStringValue (line 17100) | function getStringValue() { return (parsed(scope) || '').toString(); }
function classDirective (line 17108) | function classDirective(name, selector) {
function getBlockStart (line 19064) | function getBlockStart(block) {
function getBlockEnd (line 19068) | function getBlockEnd(block) {
function setupAsSingle (line 19967) | function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
function setupAsMultiple (line 19992) | function setupAsMultiple(scope, selectElement, ctrl) {
function setupAsOptions (line 20023) | function setupAsOptions(scope, selectElement, ctrl) {
FILE: test/3rdparty/benchmark.js
function ctor (line 257) | function ctor() { this.x = 1; }
function Benchmark (line 404) | function Benchmark(name, fn, options) {
function Deferred (line 445) | function Deferred(clone) {
function Event (line 461) | function Event(type) {
function Suite (line 507) | function Suite(name, options) {
function concat (line 556) | function concat() {
function insert (line 587) | function insert(start, deleteCount, elements) {
function reverse (line 638) | function reverse() {
function shift (line 671) | function shift() {
function slice (line 684) | function slice(start, end) {
function splice (line 714) | function splice(start, deleteCount) {
function toInteger (line 738) | function toInteger(value) {
function unshift (line 749) | function unshift() {
function bind (line 765) | function bind(fn, thisArg) {
function createFunction (line 777) | function createFunction() {
function delay (line 802) | function delay(bench, fn) {
function destroyElement (line 812) | function destroyElement(element) {
function forProps (line 827) | function forProps() {
function getFirstArgument (line 943) | function getFirstArgument(fn) {
function getMean (line 955) | function getMean(sample) {
function getSource (line 969) | function getSource(fn, altSource) {
function isArguments (line 993) | function isArguments() {
function isClassOf (line 1015) | function isClassOf(value, name) {
function isHostType (line 1029) | function isHostType(object, property) {
function isPlainObject (line 1044) | function isPlainObject(value) {
function isStringable (line 1084) | function isStringable(value) {
function methodize (line 1096) | function methodize(fn) {
function noop (line 1109) | function noop() {
function req (line 1120) | function req(id) {
function runScript (line 1133) | function runScript(code) {
function setOptions (line 1165) | function setOptions(bench, options) {
function resolve (line 1188) | function resolve() {
function deepClone (line 1225) | function deepClone(value) {
function each (line 1400) | function each(object, callback, thisArg) {
function extend (line 1446) | function extend(destination, source) {
function filter (line 1485) | function filter(array, callback, thisArg) {
function forEach (line 1518) | function forEach(array, callback, thisArg) {
function forOwn (line 1545) | function forOwn(object, callback, thisArg) {
function formatNumber (line 1557) | function formatNumber(number) {
function hasKey (line 1572) | function hasKey() {
function indexOf (line 1608) | function indexOf(array, value, fromIndex) {
function interpolate (line 1630) | function interpolate(string, object) {
function invoke (line 1677) | function invoke(benches, name) {
function join (line 1831) | function join(object, separator1, separator2) {
function map (line 1853) | function map(array, callback, thisArg) {
function pluck (line 1869) | function pluck(array, property) {
function reduce (line 1885) | function reduce(array, callback, accumulator) {
function abortSuite (line 1902) | function abortSuite() {
function add (line 1962) | function add(name, fn, options) {
function cloneSuite (line 1981) | function cloneSuite(options) {
function filterSuite (line 2004) | function filterSuite(callback) {
function resetSuite (line 2019) | function resetSuite() {
function runSuite (line 2056) | function runSuite(options) {
function emit (line 2095) | function emit(type) {
function listeners (line 2125) | function listeners(type) {
function off (line 2158) | function off(type, listener) {
function on (line 2197) | function on(type, listener) {
function abort (line 2218) | function abort() {
function clone (line 2257) | function clone(options) {
function compare (line 2280) | function compare(other) {
function reset (line 2334) | function reset() {
function toStringBench (line 2405) | function toStringBench() {
function clock (line 2433) | function clock() {
function compute (line 2735) | function compute(bench, options) {
function cycle (line 2889) | function cycle(clone, options) {
function run (line 3000) | function run(options) {
FILE: test/3rdparty/jquery-1.9.1.js
function isArraylike (line 951) | function isArraylike( obj ) {
function createOptions (line 974) | function createOptions( options ) {
function internalData (line 1551) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
function internalRemoveData (line 1645) | function internalRemoveData( elem, name, pvt ) {
function dataAttr (line 1841) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 1873) | function isEmptyDataObject( obj ) {
function returnTrue (line 2702) | function returnTrue() {
function returnFalse (line 2706) | function returnFalse() {
function isNative (line 3841) | function isNative( fn ) {
function createCache (line 3851) | function createCache() {
function markFunction (line 3869) | function markFunction( fn ) {
function assert (line 3878) | function assert( fn ) {
function Sizzle (line 3891) | function Sizzle( selector, context, results, seed ) {
function siblingCheck (line 4449) | function siblingCheck( a, b ) {
function createInputPseudo (line 4471) | function createInputPseudo( type ) {
function createButtonPseudo (line 4479) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 4487) | function createPositionalPseudo( fn ) {
function tokenize (line 5014) | function tokenize( selector, parseOnly ) {
function toSelector (line 5081) | function toSelector( tokens ) {
function addCombinator (line 5091) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 5141) | function elementMatcher( matchers ) {
function condense (line 5155) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 5176) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 5269) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 5321) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function multipleContexts (line 5449) | function multipleContexts( selector, contexts, results ) {
function select (line 5458) | function select( selector, context, results, seed ) {
function setFilters (line 5527) | function setFilters() {}
function sibling (line 5680) | function sibling( cur, dir ) {
function winnow (line 5788) | function winnow( elements, qualifier, keep ) {
function createSafeFragment (line 5821) | function createSafeFragment( document ) {
function findOrAppend (line 6202) | function findOrAppend( elem, tag ) {
function disableScript (line 6207) | function disableScript( elem ) {
function restoreScript (line 6212) | function restoreScript( elem ) {
function setGlobalEval (line 6223) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 6231) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 6259) | function fixCloneNodeIssues( src, dest ) {
function getAll (line 6352) | function getAll( context, tag ) {
function fixDefaultChecked (line 6375) | function fixDefaultChecked( elem ) {
function vendorPropName (line 6640) | function vendorPropName( style, name ) {
function isHidden (line 6662) | function isHidden( elem, el ) {
function showHide (line 6669) | function showHide( elements, show ) {
function setPositiveNumber (line 7016) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 7024) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 7063) | function getWidthOrHeight( elem, name, extra ) {
function css_defaultDisplay (line 7107) | function css_defaultDisplay( nodeName ) {
function actualDisplay (line 7139) | function actualDisplay( name, doc ) {
function buildParams (line 7368) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 7466) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 7498) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 7525) | function ajaxExtend( target, src ) {
function done (line 7991) | function done( status, nativeStatusText, responses, headers ) {
function ajaxHandleResponses (line 8117) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8178) | function ajaxConvert( s, response ) {
function createStandardXHR (line 8439) | function createStandardXHR() {
function createActiveXHR (line 8445) | function createActiveXHR() {
function createFxNow (line 8684) | function createFxNow() {
function createTweens (line 8691) | function createTweens( animation, props ) {
function Animation (line 8706) | function Animation( elem, properties, options ) {
function propFilter (line 8810) | function propFilter( props, specialEasing ) {
function defaultPrefilter (line 8877) | function defaultPrefilter( elem, props, opts ) {
function Tween (line 9004) | function Tween( elem, options, prop, end, easing ) {
function genFx (line 9230) | function genFx( type, includeWidth ) {
function getWindow (line 9526) | function getWindow( elem ) {
FILE: test/3rdparty/jquery.mobile-1.4.2.js
function focusable (line 319) | function focusable( element, isTabIndexNotNaN ) {
function visible (line 340) | function visible( element ) {
function reduce (line 382) | function reduce( elem, size, border, margin ) {
function handlerProxy (line 1214) | function handlerProxy() {
function handlerProxy (line 1250) | function handlerProxy() {
function get_fragment (line 1623) | function get_fragment( url ) {
function poll (line 1797) | function poll() {
function propExists (line 1968) | function propExists( prop ) {
function inlineSVG (line 1989) | function inlineSVG() {
function transform3dTest (line 2009) | function transform3dTest() {
function baseTagTest (line 2038) | function baseTagTest() {
function cssPointerEventsTest (line 2062) | function cssPointerEventsTest() {
function boundingRect (line 2081) | function boundingRect() {
function fixedPosition (line 2101) | function fixedPosition() {
function getNativeEvent (line 3298) | function getNativeEvent( event ) {
function createVirtualEvent (line 3306) | function createVirtualEvent( event, eventType ) {
function getVirtualBindingFlags (line 3356) | function getVirtualBindingFlags( element ) {
function getClosestElementWithVirtualBinding (line 3375) | function getClosestElementWithVirtualBinding( element, eventType ) {
function enableTouchBindings (line 3389) | function enableTouchBindings() {
function disableTouchBindings (line 3393) | function disableTouchBindings() {
function enableMouseBindings (line 3397) | function enableMouseBindings() {
function disableMouseBindings (line 3407) | function disableMouseBindings() {
function startResetTimer (line 3413) | function startResetTimer() {
function clearResetTimer (line 3421) | function clearResetTimer() {
function triggerVirtualEvent (line 3428) | function triggerVirtualEvent( eventType, event, flags ) {
function mouseEventCallback (line 3442) | function mouseEventCallback( event ) {
function handleTouchStart (line 3462) | function handleTouchStart( event ) {
function handleScroll (line 3492) | function handleScroll( event ) {
function handleTouchMove (line 3505) | function handleTouchMove( event ) {
function handleTouchEnd (line 3527) | function handleTouchEnd( event ) {
function hasVirtualBindings (line 3563) | function hasVirtualBindings( ele ) {
function dummyMouseHandler (line 3577) | function dummyMouseHandler() {}
function getSpecialEventObject (line 3579) | function getSpecialEventObject( eventType ) {
function triggerCustomEvent (line 3783) | function triggerCustomEvent( obj, eventType, event, bubble ) {
function trigger (line 3805) | function trigger( event, state ) {
function clearTapTimer (line 3850) | function clearTapTimer() {
function clearTapHandlers (line 3854) | function clearTapHandlers() {
function clickHandler (line 3862) | function clickHandler( event ) {
function handler (line 4219) | function handler() {
function findClosestLink (line 5676) | function findClosestLink( ele ) {
function defaultAutodividersSelector (line 7559) | function defaultAutodividersSelector( elt ) {
function getPopup (line 8949) | function getPopup() {
function fitSegmentInsideSegment (line 10130) | function fitSegmentInsideSegment( windowSize, segmentSize, offset, desir...
function getWindowCoordinates (line 10144) | function getWindowCoordinates( theWindow ) {
function optionsToClasses (line 11645) | function optionsToClasses( options, existingClasses ) {
function classNameToOptions (line 11702) | function classNameToOptions( classes ) {
function camelCase2Hyphenated (line 11770) | function camelCase2Hyphenated( c ) {
function getArrow (line 12548) | function getArrow() {
function getNextTabId (line 14014) | function getNextTabId() {
function isLocal (line 14018) | function isLocal( anchor ) {
function constrain (line 14234) | function constrain() {
function complete (line 14580) | function complete() {
function show (line 14585) | function show() {
function checkTilt (line 14860) | function checkTilt( e ) {
function hideRenderingClass (line 14893) | function hideRenderingClass() {
FILE: test/3rdparty/mootools-1.4.5.js
function parser (line 1922) | function parser(
function styleNumber (line 4925) | function styleNumber(element, style){
function borderBox (line 4929) | function borderBox(element){
function topBorder (line 4933) | function topBorder(element){
function leftBorder (line 4937) | function leftBorder(element){
function isBody (line 4941) | function isBody(element){
function getCompatElement (line 4945) | function getCompatElement(element){
FILE: test/3rdparty/yui-3.12.0.js
function YArray (line 2148) | function YArray(thing, startIndex, force) {
function Queue (line 2432) | function Queue() {
function F (line 2802) | function F() {}
function onError (line 4770) | function onError() {
function onLoad (line 4774) | function onLoad() {
function workingNative (line 5292) | function workingNative( k, v ) {
function scan (line 5442) | function scan(language) {
function workingNative (line 10401) | function workingNative( k, v ) {
FILE: test/api-tests.js
function collect (line 670) | function collect(node) {
function collect (line 681) | function collect(node) {
function walk (line 698) | function walk(node) {
function LineAttacher (line 801) | function LineAttacher() {
FILE: test/benchmark-parser.js
function slug (line 39) | function slug(name) {
function kb (line 43) | function kb(bytes) {
function runParserTests (line 47) | function runParserTests(tests) {
FILE: test/benchmark-tokenizer.js
function slug (line 39) | function slug(name) {
function kb (line 43) | function kb(bytes) {
function runTokenizerTests (line 47) | function runTokenizerTests(tests) {
FILE: test/check-version.js
function readFile (line 29) | function readFile(filename) {
function findCanonicalVersion (line 34) | function findCanonicalVersion() {
function ensureVersion (line 48) | function ensureVersion(manifestFile, expectedVersion) {
function checkVersion (line 67) | function checkVersion() {
FILE: test/downstream.js
function execute (line 30) | function execute(cmd) {
function copy_file (line 34) | function copy_file(source, target) {
function workaroundRecastTest (line 38) | function workaroundRecastTest() {
function workaroundIstanbulTest (line 56) | function workaroundIstanbulTest() {
function test_project (line 69) | function test_project(project, repo) {
function test_downstream (line 105) | function test_downstream(projects) {
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-array-destructuring.js
function f (line 1) | function f([]){ "use strict"; }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-default-value.js
function f (line 1) | function f(a = 1){ "use strict"; }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-object-destructuring.js
function f (line 1) | function f({x, y}) { "use strict"; }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-rest.js
function f (line 1) | function f(...x) { "use strict"; }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-method-array-destructuring.js
class X (line 1) | class X { f([]) { "use strict" } }
method f (line 1) | f([]) { "use strict" }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-method-default-value.js
class X (line 1) | class X { f(a=1) { "use strict" } }
method f (line 1) | f(a=1) { "use strict" }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-method-object-destructuring.js
class X (line 1) | class X { f({a}) { "use strict" } }
method f (line 1) | f({a}) { "use strict" }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-method-rest.js
class X (line 1) | class X { f(...a) { "use strict" } }
method f (line 1) | f(...a) { "use strict" }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-setter-array-destructuring.js
method f (line 1) | set f([a]) { "use strict" }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-setter-default-value.js
method f (line 1) | set f(a = 1) { "use strict" }
FILE: test/fixtures/ES2016/strict-directive/invalid-strict-setter-object-destructuring.js
method f (line 1) | set f({a}) { "use strict" }
FILE: test/fixtures/ES6/arrow-function/object-binding-pattern/invalid-method-in-pattern.js
method a (line 1) | get a(){}
FILE: test/fixtures/ES6/binding-pattern/array-pattern/dupe-param.js
function a (line 2) | function a([a,a]){ }
function a (line 3) | function a([a,...a]){ }
function a (line 4) | function a([{a},...a]){ }
FILE: test/fixtures/ES6/binding-pattern/array-pattern/empty-pattern-fn.js
function a (line 1) | function a([]) {}
FILE: test/fixtures/ES6/binding-pattern/array-pattern/with-default-fn.js
function a (line 1) | function a([a=0]) {}
FILE: test/fixtures/ES6/binding-pattern/object-pattern/empty-fn.js
function a (line 1) | function a({}) {}
FILE: test/fixtures/ES6/class/invalid-labelled-class-declaration.js
class B (line 1) | class B {}
FILE: test/fixtures/ES6/class/invalid-setter-method-rest.js
class X (line 1) | class X { set f(...y) {} }
method f (line 1) | set f(...y) {}
FILE: test/fixtures/ES6/class/migrated_0000.js
class A (line 1) | class A {}
FILE: test/fixtures/ES6/class/migrated_0001.js
class A (line 1) | class A extends 0 {}
FILE: test/fixtures/ES6/class/migrated_0002.js
class A (line 1) | class A {;}
FILE: test/fixtures/ES6/class/migrated_0003.js
class A (line 1) | class A {;;}
FILE: test/fixtures/ES6/class/migrated_0004.js
class A (line 1) | class A {a(){}}
method a (line 1) | a(){}
FILE: test/fixtures/ES6/class/migrated_0005.js
class A (line 1) | class A {a(){}b(){}}
method a (line 1) | a(){}
method b (line 1) | b(){}
FILE: test/fixtures/ES6/class/migrated_0006.js
class A (line 1) | class A {a(){};b(){}}
method a (line 1) | a(){}
method b (line 1) | b(){}
FILE: test/fixtures/ES6/class/migrated_0007.js
class A (line 1) | class A {a(){};b(){};}
method a (line 1) | a(){}
method b (line 1) | b(){}
FILE: test/fixtures/ES6/class/migrated_0008.js
class A (line 1) | class A {;a(){};b(){};}
method a (line 1) | a(){}
method b (line 1) | b(){}
FILE: test/fixtures/ES6/class/migrated_0009.js
class A (line 1) | class A {static(){};}
method static (line 1) | static(){}
FILE: test/fixtures/ES6/class/migrated_0010.js
class A (line 1) | class A {get a(){} set b(c){};}
method a (line 1) | get a(){}
method b (line 1) | set b(c){}
FILE: test/fixtures/ES6/class/migrated_0011.js
class A (line 1) | class A {static a(){} static get a(){} static set a(b){} }
method a (line 1) | static a(){}
method a (line 1) | static get a(){}
method a (line 1) | static set a(b){}
FILE: test/fixtures/ES6/class/migrated_0012.js
class A (line 1) | class A {static a(){};}
method a (line 1) | static a(){}
FILE: test/fixtures/ES6/class/migrated_0013.js
class A (line 1) | class A {static [a](){};}
method [a] (line 1) | static [a](){}
FILE: test/fixtures/ES6/class/migrated_0014.js
class A (line 1) | class A {static[a](){}; static[b](){}}
method [a] (line 1) | static[a](){}
method [b] (line 1) | static[b](){}
FILE: test/fixtures/ES6/class/migrated_0015.js
class A (line 1) | class A {static static(){};}
method static (line 1) | static static(){}
FILE: test/fixtures/ES6/class/migrated_0017.js
class A (line 1) | class A {prototype(){}}
method prototype (line 1) | prototype(){}
FILE: test/fixtures/ES6/class/migrated_0018.js
class A (line 1) | class A {constructor(){}}
method constructor (line 1) | constructor(){}
FILE: test/fixtures/ES6/class/migrated_0019.js
class A (line 1) | class A {"constructor"(){} ["constructor"](){}}
method "constructor" (line 1) | "constructor"(){}
method ["constructor"] (line 1) | ["constructor"](){}
FILE: test/fixtures/ES6/class/migrated_0020.js
class A (line 1) | class A {static constructor(){} static constructor(){}}
method constructor (line 1) | static constructor(){}
method constructor (line 1) | static constructor(){}
FILE: test/fixtures/ES6/class/migrated_0021.js
class A (line 1) | class A {static ["prototype"](){}}
method ["prototype"] (line 1) | static ["prototype"](){}
FILE: test/fixtures/ES6/class/migrated_0026.js
class A (line 1) | class A {a(eval){}}
method a (line 1) | a(eval){}
FILE: test/fixtures/ES6/default-parameter-value/migrated_0001.js
function f (line 1) | function f(a = 1) {}
FILE: test/fixtures/ES6/destructuring-assignment/object-pattern/invalid-pattern-with-method.js
method a (line 1) | get a(){}
FILE: test/fixtures/ES6/export-declaration/export-default-named-class.js
class foo (line 1) | class foo {}
FILE: test/fixtures/ES6/export-declaration/export-default-named-function.js
function foo (line 1) | function foo() {}
FILE: test/fixtures/ES6/export-declaration/export-function-declaration.js
function foo (line 1) | function foo () {}
FILE: test/fixtures/ES6/export-declaration/export-function.js
function foo (line 1) | function foo () {}
FILE: test/fixtures/ES6/for-of/invalid-decl-cls.js
class C (line 1) | class C {}
FILE: test/fixtures/ES6/generator/generator-method-with-computed-name.js
method [yield iter] (line 2) | *[yield iter]() {}
FILE: test/fixtures/ES6/generator/generator-method-with-invalid-computed-name.js
method [yield iter] (line 1) | *[yield iter]() {}
FILE: test/fixtures/ES6/generator/generator-method-with-params.js
method foo (line 1) | *foo(x, y, z) {}
FILE: test/fixtures/ES6/generator/generator-method-with-yield-delegate.js
method foo (line 1) | *foo() { yield* 3; }
FILE: test/fixtures/ES6/generator/generator-method-with-yield-expression.js
method foo (line 1) | *foo() { yield 3; }
FILE: test/fixtures/ES6/generator/generator-method-with-yield-line-terminator.js
method foo (line 1) | *foo() {
FILE: test/fixtures/ES6/generator/generator-method-with-yield.js
method foo (line 1) | *foo() { yield; }
FILE: test/fixtures/ES6/generator/generator-method.js
method foo (line 1) | *foo() {}
FILE: test/fixtures/ES6/generator/malformed-generator-method-2.js
class Foo (line 1) | class Foo { * }
FILE: test/fixtures/ES6/generator/static-generator-method-with-computed-name.js
class Foo (line 1) | class Foo { static *[foo]() {} }
method [foo] (line 1) | static *[foo]() {}
FILE: test/fixtures/ES6/generator/static-generator-method.js
class Foo (line 1) | class Foo { static *foo() {} }
method foo (line 1) | static *foo() {}
FILE: test/fixtures/ES6/identifier/invalid_function_await.module.js
function await (line 1) | function await() {}
FILE: test/fixtures/ES6/meta-property/assign-new-target.js
function f (line 1) | function f() {
FILE: test/fixtures/ES6/meta-property/new-new-target.js
function f (line 1) | function f() {
FILE: test/fixtures/ES6/meta-property/new-target-declaration.js
function f (line 1) | function f() {
FILE: test/fixtures/ES6/meta-property/new-target-invoke.js
function f (line 1) | function f() {
FILE: test/fixtures/ES6/meta-property/new-target-precedence.js
function f (line 1) | function f() {
FILE: test/fixtures/ES6/method-definition/migrated_0000.js
method method (line 1) | method() { }
FILE: test/fixtures/ES6/method-definition/migrated_0001.js
method method (line 1) | method(test) { }
FILE: test/fixtures/ES6/method-definition/migrated_0002.js
method 'method' (line 1) | 'method'() { }
FILE: test/fixtures/ES6/method-definition/migrated_0003.js
method get (line 1) | get() { }
FILE: test/fixtures/ES6/method-definition/migrated_0004.js
method set (line 1) | set() { }
FILE: test/fixtures/ES6/object-initialiser/invalid-proto-getter-literal-identifier.js
method __proto (line 1) | get __proto(){}
FILE: test/fixtures/ES6/object-initialiser/invalid-proto-setter-literal-identifier.js
method __proto__ (line 1) | set __proto__(x){}
FILE: test/fixtures/ES6/object-initialiser/proto-identifier-getter-setter.js
method __proto__ (line 1) | get __proto__(){}
method __proto__ (line 1) | set __proto__(x){}
FILE: test/fixtures/ES6/object-initialiser/proto-identifier-getter.js
method __proto__ (line 1) | get __proto__(){}
FILE: test/fixtures/ES6/object-initialiser/proto-identifier-method.js
method __proto__ (line 1) | __proto__(){}
FILE: test/fixtures/ES6/object-initialiser/proto-identifier-setter.js
method __proto__ (line 1) | set __proto__(x){}
FILE: test/fixtures/ES6/object-initialiser/proto-literal-getter-setter.js
method __proto__ (line 1) | get __proto__(){}
method __proto__ (line 1) | set __proto__(x){}
FILE: test/fixtures/ES6/object-initialiser/proto-literal-getter.js
method __proto__ (line 1) | get __proto__(){}
FILE: test/fixtures/ES6/object-initialiser/proto-literal-method.js
method __proto__ (line 1) | __proto__(){}
FILE: test/fixtures/ES6/object-initialiser/proto-literal-setter.js
method __proto__ (line 1) | set __proto__(x){}
FILE: test/fixtures/ES6/octal-integer-literal/migrated_0002.js
function test (line 1) | function test() {'use strict'; 0o0; }
FILE: test/fixtures/ES6/octal-integer-literal/migrated_0006.js
function test (line 1) | function test() {'use strict'; 0O0; }
FILE: test/fixtures/ES6/program/module/invalid-export-in-function.module.js
function x (line 1) | function x() {
FILE: test/fixtures/ES6/program/module/invalid-import-in-function.module.js
function x (line 1) | function x() {
FILE: test/fixtures/ES6/rest-parameter/function-declaration.js
function f (line 1) | function f(a, ...b) {}
FILE: test/fixtures/ES6/rest-parameter/invalid-setter-rest.js
method f (line 1) | set f(...y) {}
FILE: test/fixtures/ES6/rest-parameter/object-shorthand-method.js
method method (line 1) | method(...test) { }
FILE: test/fixtures/ES6/rest-parameter/rest-parameter-array.js
function f (line 1) | function f(...[a]) {}
FILE: test/fixtures/ES6/rest-parameter/rest-parameter-object.js
function f (line 1) | function f(...{a}) {}
FILE: test/fixtures/ES6/super-property/arrow_super.js
class A (line 1) | class A extends B {
method constructor (line 2) | constructor() {
FILE: test/fixtures/ES6/super-property/constructor_super.js
class A (line 1) | class A extends B {
method constructor (line 2) | constructor() {
FILE: test/fixtures/ES6/super-property/invalid_super_access.js
class A (line 1) | class A extends B {
method constructor (line 2) | constructor() {
FILE: test/fixtures/ES6/super-property/invalid_super_id.js
class A (line 1) | class A {
method foo (line 2) | foo() { new super + 3 }
FILE: test/fixtures/ES6/super-property/new_super.js
class A (line 1) | class A extends B {
method foo (line 2) | foo() {
FILE: test/fixtures/ES6/super-property/super_computed.js
class A (line 1) | class A extends B {
method X (line 2) | X() {
FILE: test/fixtures/ES6/super-property/super_member.js
class A (line 1) | class A extends B {
method X (line 2) | X() {
FILE: test/fixtures/ES6/yield/invalid-yield-generator-function-declaration.js
function yield (line 1) | function yield() {}
FILE: test/fixtures/ES6/yield/invalid-yield-object-methods.js
method b (line 1) | b(){yield}
FILE: test/fixtures/ES6/yield/invalid-yield-object-property-getter.js
method b (line 1) | get b(){yield}
FILE: test/fixtures/ES6/yield/invalid-yield-object-property-setter.js
method b (line 1) | set b(c){yield}
FILE: test/fixtures/ES6/yield/invalid-yield-strict-formal-parameter.js
function f (line 1) | function f(yield) {}
FILE: test/fixtures/ES6/yield/invalid-yield-strict-function-declaration.js
function yield (line 1) | function yield(){ "use strict"; }
FILE: test/fixtures/ES6/yield/invalid-yield-strict-identifier.js
function f (line 1) | function f() { yield }
FILE: test/fixtures/ES6/yield/invalid-yield-strict-rest-parameter.js
function f (line 1) | function f(...yield) {}
FILE: test/fixtures/ES6/yield/yield-arg-super.js
class A (line 1) | class A { *b() { yield super.c(); } }
method b (line 1) | *b() { yield super.c(); }
FILE: test/fixtures/ES6/yield/yield-function-declaration-formal-parameter.js
function f (line 1) | function f(yield) {}
FILE: test/fixtures/ES6/yield/yield-function-declaration.js
function yield (line 1) | function yield(){}
FILE: test/fixtures/ES6/yield/yield-generator-method.js
method yield (line 1) | *yield() {}
FILE: test/fixtures/ES6/yield/yield-method.js
method yield (line 1) | yield() {}
FILE: test/fixtures/ES6/yield/yield-parameter-object-pattern.js
function f (line 1) | function f({yield: y}){}
FILE: test/fixtures/ES6/yield/yield-rest-parameter.js
function f (line 1) | function f(...yield) {}
FILE: test/fixtures/ES6/yield/yield-strict-method.js
method yield (line 1) | yield() {}
FILE: test/fixtures/ES6/yield/yield-super-property.js
class A (line 1) | class A extends B { X() { super.yield } }
method X (line 1) | X() { super.yield }
FILE: test/fixtures/comment/migrated_0035.js
function f (line 1) | function f() { /* infinite */ while (true) { } /* bar */ var each; }
FILE: test/fixtures/comment/migrated_0046.js
function x (line 1) | function x(){ /*Jupiter*/ return; /*Saturn*/}
FILE: test/fixtures/comment/migrated_0052.js
function a (line 1) | function a() {}
FILE: test/fixtures/comment/migrated_0053.js
function a (line 1) | function a() {function o() {}}
FILE: test/fixtures/comment/migrated_0054.js
function a (line 1) | function a() {/**/function o() {}}
FILE: test/fixtures/declaration/function/dupe-param.js
function a (line 1) | function a(x, x) {'use strict';}
FILE: test/fixtures/declaration/function/invalid-strict-labelled-function-declaration.js
function f (line 1) | function f(){}
FILE: test/fixtures/declaration/function/migrated_0000.js
function hello (line 1) | function hello() { sayHi(); }
FILE: test/fixtures/declaration/function/migrated_0001.js
function eval (line 1) | function eval() { }
FILE: test/fixtures/declaration/function/migrated_0002.js
function arguments (line 1) | function arguments() { }
FILE: test/fixtures/declaration/function/migrated_0003.js
function test (line 1) | function test(t, t) { }
FILE: test/fixtures/declaration/function/migrated_0005.js
function eval (line 1) | function eval() { function inner() { "use strict" } }
FILE: test/fixtures/declaration/function/migrated_0006.js
function hello (line 1) | function hello(a) { sayHi(); }
FILE: test/fixtures/declaration/function/migrated_0007.js
function hello (line 1) | function hello(a, b) { sayHi(); }
FILE: test/fixtures/declaration/function/migrated_0013.js
function universe (line 1) | function universe(__proto__) { }
FILE: test/fixtures/declaration/function/migrated_0014.js
function test (line 1) | function test() { "use strict" + 42; }
FILE: test/fixtures/es2017/async/functions/async-function-declaration-await.js
function f (line 1) | async function f(a) { await a }
FILE: test/fixtures/es2017/async/functions/async-function-declaration.js
function f (line 1) | async function f() {}
FILE: test/fixtures/es2017/async/functions/async-if-await.js
function f (line 1) | async function f(a) { await a }
FILE: test/fixtures/es2017/async/functions/async-if.js
function f (line 1) | async function f() {}
FILE: test/fixtures/es2017/async/functions/export-async-function-declaration-await.module.js
function f (line 1) | async function f(a) { await a }
FILE: test/fixtures/es2017/async/functions/export-async-function-declaration.module.js
function f (line 1) | async function f() {}
FILE: test/fixtures/es2017/async/functions/export-default-async-named-function-declaration-await.module.js
function f (line 1) | async function f(a) { await a }
FILE: test/fixtures/es2017/async/functions/export-default-async-named-function-declaration.module.js
function f (line 1) | async function f() {}
FILE: test/fixtures/es2017/async/functions/inner-function-async.js
function inner (line 1) | async function inner() { await x }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-declaration1.js
function f (line 1) | async function f() { let await; }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-declaration3.js
class X (line 1) | class X { async function f() { let await } }
method function (line 1) | async function f() { let await }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-declaration4.js
method f (line 1) | async f() { let await }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-function-name1.js
function f (line 1) | async function f() { async function await() {} }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-function-name2.js
function await (line 1) | async function await() {}
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-identifier1.js
function f (line 1) | async function f() { g(await) }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-method.js
class X (line 1) | class X { async await(){} }
method await (line 1) | async await(){}
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-no-argument1.js
function f (line 1) | async function f() { await }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-object-expression1.js
function f (line 1) | async function f() { return {g: await} }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-outside-async.js
function f (line 1) | function f(x) { await x }
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-parameter1.js
function f (line 1) | async function f(await) {}
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-parameter3.js
class X (line 1) | class X { async f(await) {} }
method f (line 1) | async f(await) {}
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-parameter4.js
class x (line 1) | class x { static async f(await) {} }
method f (line 1) | static async f(await) {}
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-parameter5.js
method f (line 1) | async f(await){}
FILE: test/fixtures/es2017/async/invalid-await/invalid-await-property.js
method await (line 1) | async await(){}
FILE: test/fixtures/es2017/async/methods/async-class-generator.js
class X (line 1) | class X { async *g() {} }
method g (line 1) | async *g() {}
FILE: test/fixtures/es2017/async/methods/async-generator.js
method g (line 1) | async *g() {}
FILE: test/fixtures/es2017/async/methods/async-method-await.js
method f (line 1) | async f(a) { await a }
FILE: test/fixtures/es2017/async/methods/async-method-computed.js
method ["xyz"] (line 1) | async ["xyz"]() {}
FILE: test/fixtures/es2017/async/methods/async-method-literal.js
method "xyz" (line 1) | async "xyz"() {}
FILE: test/fixtures/es2017/async/methods/async-method-number.js
method 3 (line 1) | async 3() {}
FILE: test/fixtures/es2017/async/methods/async-method.js
method f (line 1) | async f() {}
FILE: test/fixtures/es2017/async/methods/class-async-get.js
class X (line 1) | class X { async get(){} }
method get (line 1) | async get(){}
FILE: test/fixtures/es2017/async/methods/class-async-method-await.js
class X (line 1) | class X { async f(a) { await a } }
method f (line 1) | async f(a) { await a }
FILE: test/fixtures/es2017/async/methods/class-async-method-computed.js
class X (line 1) | class X { async ["f"](){} }
method ["f"] (line 1) | async ["f"](){}
FILE: test/fixtures/es2017/async/methods/class-async-method-literal.js
class X (line 1) | class X { async "f"(){} }
method "f" (line 1) | async "f"(){}
FILE: test/fixtures/es2017/async/methods/class-async-method-number.js
class X (line 1) | class X { async 3(){} }
method 3 (line 1) | async 3(){}
FILE: test/fixtures/es2017/async/methods/class-async-method.js
class X (line 1) | class X { async f(){} }
method f (line 1) | async f(){}
FILE: test/fixtures/es2017/async/methods/class-async-set.js
class X (line 1) | class X { async set(v){} }
method set (line 1) | async set(v){}
FILE: test/fixtures/es2017/async/methods/class-static-async-get.js
class X (line 1) | class X { static async get() {} }
method get (line 1) | static async get() {}
FILE: test/fixtures/es2017/async/methods/class-static-async-method-await.js
class X (line 1) | class X { static async f(a) { await a } }
method f (line 1) | static async f(a) { await a }
FILE: test/fixtures/es2017/async/methods/class-static-async-method.js
class X (line 1) | class X { static async f(){} }
method f (line 1) | static async f(){}
FILE: test/fixtures/es2017/async/methods/class-static-async-set.js
class X (line 1) | class X { static async set(v){} }
method set (line 1) | static async set(v){}
FILE: test/fixtures/es2017/async/methods/invalid-async-class-constructor.js
class X (line 1) | class X { async constructor(){} }
method constructor (line 1) | async constructor(){}
FILE: test/fixtures/es2017/async/methods/invalid-async-function-declaration-duplicate-params.js
method g (line 1) | async *g(x = 1, x) { }
FILE: test/fixtures/es2017/async/methods/invalid-async-getter.js
method g (line 1) | async get g() {}
FILE: test/fixtures/es2017/async/methods/invalid-async-line-terminator-method.js
class X (line 1) | class X { async
method f (line 2) | f(){}
FILE: test/fixtures/es2017/async/methods/invalid-async-line-terminator-property.js
method f (line 1) | async
FILE: test/fixtures/es2017/async/methods/invalid-async-line-terminator-static-method.js
class X (line 1) | class X { static async
method f (line 2) | f(){}
FILE: test/fixtures/es2017/async/methods/invalid-async-setter.js
method s (line 1) | async set s(i) {}
FILE: test/fixtures/es2017/async/methods/invalid-async-static.js
class X (line 1) | class X { async static f() {} }
method static (line 1) | async static f() {}
FILE: test/fixtures/es2017/async/methods/static-async-class-generator.js
class X (line 1) | class X { static async *g(){} }
method g (line 1) | static async *g(){}
FILE: test/fixtures/es2017/async/regular-identifier/await-function-name.js
function await (line 1) | async function await() {}
FILE: test/fixtures/es2017/async/regular-identifier/await-method-name.js
class X (line 1) | class X { async await(){} }
method await (line 1) | async await(){}
FILE: test/fixtures/es2017/async/regular-identifier/await-static-name.js
class X (line 1) | class X { static async await(){} }
method await (line 1) | static async await(){}
FILE: test/fixtures/es2017/async/regular-identifier/expr-async.js
function f (line 2) | function f(){}
FILE: test/fixtures/es2017/async/regular-identifier/generator-name-async.js
class A (line 1) | class A { *async() {} }
method async (line 1) | *async() {}
FILE: test/fixtures/es2017/async/regular-identifier/label-async.js
function f (line 1) | function f() {}
FILE: test/fixtures/es2017/async/regular-identifier/line-terminator-async.js
function f (line 2) | function f() {}
FILE: test/fixtures/es2017/async/regular-identifier/method-name-async.js
class X (line 1) | class X { async() {} }
method async (line 1) | async() {}
FILE: test/fixtures/es2017/async/regular-identifier/static-generator-name-async.js
class X (line 1) | class X { static *async() {} }
method async (line 1) | static *async() {}
FILE: test/fixtures/es2017/async/regular-identifier/static-name-async.js
class X (line 1) | class X { static async() {} }
method async (line 1) | static async() {}
FILE: test/fixtures/es2017/trailing-commas/invalid-empty-constructor.js
class A (line 1) | class A { constructor(,) {} }
method constructor (line 1) | constructor(,) {}
FILE: test/fixtures/es2017/trailing-commas/invalid-empty-method.js
class A (line 1) | class A { f(,){} }
method f (line 1) | f(,){}
FILE: test/fixtures/es2017/trailing-commas/invalid-empty-parameters.js
function f (line 1) | function f(,){}
FILE: test/fixtures/es2017/trailing-commas/invalid-rest.js
function f (line 1) | function f(...a,) {}
FILE: test/fixtures/es2017/trailing-commas/invalid-trailing-comma-getter.js
class A (line 1) | class A { get x(,) { return 42 } }
method x (line 1) | get x(,) { return 42 }
FILE: test/fixtures/es2017/trailing-commas/trailing-comma-constructor.js
class X (line 1) | class X { constructor(a,) {} }
method constructor (line 1) | constructor(a,) {}
FILE: test/fixtures/es2017/trailing-commas/trailing-comma-export-function.js
function f (line 1) | function f(a,b,){}
FILE: test/fixtures/es2017/trailing-commas/trailing-comma-function-declaration.js
function f (line 1) | function f(a,b,){}
FILE: test/fixtures/es2017/trailing-commas/trailing-comma-method.js
class P (line 1) | class P { f(a,b,) { } }
method f (line 1) | f(a,b,) { }
FILE: test/fixtures/es2018/dynamic-import/await-import.js
function f (line 1) | async function f(x) { await import(x) }
FILE: test/fixtures/es2018/dynamic-import/loader-using-import.js
function load (line 1) | function load(f) { return import('lib/' + f) }
FILE: test/fixtures/es2018/for-await-of/for-await-of.js
function f (line 1) | async function f() { for await (p of q); }
FILE: test/fixtures/es2018/for-await-of/invalid-for-await-of-not-async-context.js
function f (line 1) | function f() { for await (p of q); }
FILE: test/fixtures/es2018/rest-property/function-extension.js
function f (line 1) | function f({ x, y, ...z }) {}
FILE: test/fixtures/es2018/spread-property/object-initializer-getter.js
method z (line 1) | get z() {}
FILE: test/fixtures/es2018/spread-property/spread-getter.js
method z (line 1) | get z() {}
FILE: test/fixtures/expression/primary/object/invalid-getter.js
method y (line 1) | get y(z) {}
FILE: test/fixtures/expression/primary/object/invalid-setter1.js
method y (line 1) | set y() {}
FILE: test/fixtures/expression/primary/object/invalid-setter2.js
method y (line 1) | set y(a, b) {}
FILE: test/fixtures/expression/primary/object/migrated_0009.js
method width (line 1) | get width() { return m_width }
FILE: test/fixtures/expression/primary/object/migrated_0010.js
method undef (line 1) | get undef() {}
FILE: test/fixtures/expression/primary/object/migrated_0011.js
method if (line 1) | get if() {}
FILE: test/fixtures/expression/primary/object/migrated_0012.js
method true (line 1) | get true() {}
FILE: test/fixtures/expression/primary/object/migrated_0013.js
method false (line 1) | get false() {}
FILE: test/fixtures/expression/primary/object/migrated_0014.js
method null (line 1) | get null() {}
FILE: test/fixtures/expression/primary/object/migrated_0015.js
method "undef" (line 1) | get "undef"() {}
FILE: test/fixtures/expression/primary/object/migrated_0016.js
method 10 (line 1) | get 10() {}
FILE: test/fixtures/expression/primary/object/migrated_0017.js
method width (line 1) | set width(w) { m_width = w }
FILE: test/fixtures/expression/primary/object/migrated_0018.js
method if (line 1) | set if(w) { m_if = w }
FILE: test/fixtures/expression/primary/object/migrated_0019.js
method true (line 1) | set true(w) { m_true = w }
FILE: test/fixtures/expression/primary/object/migrated_0020.js
method false (line 1) | set false(w) { m_false = w }
FILE: test/fixtures/expression/primary/object/migrated_0021.js
method null (line 1) | set null(w) { m_null = w }
FILE: test/fixtures/expression/primary/object/migrated_0022.js
method "null" (line 1) | set "null"(w) { m_null = w }
FILE: test/fixtures/expression/primary/object/migrated_0023.js
method 10 (line 1) | set 10(w) { m_null = w }
FILE: test/fixtures/expression/primary/object/migrated_0028.js
method width (line 1) | get width() { return m_width }
method width (line 1) | set width(width) { m_width = width; }
FILE: test/fixtures/expression/primary/object/migrated_0029.js
method i (line 1) | get i() { }
FILE: test/fixtures/expression/primary/object/migrated_0031.js
method i (line 1) | get i() {}
method i (line 1) | get i() {}
FILE: test/fixtures/expression/primary/object/migrated_0032.js
method i (line 1) | get i() {}
FILE: test/fixtures/expression/primary/object/migrated_0033.js
method i (line 1) | set i(x) {}
FILE: test/fixtures/expression/primary/object/migrated_0034.js
method [a] (line 1) | [a](){}
FILE: test/fixtures/expression/primary/object/migrated_0038.js
method x (line 1) | set x(a=0){}
FILE: test/fixtures/invalid-syntax/migrated_0074.js
method s (line 1) | set s(.) { }
FILE: test/fixtures/invalid-syntax/migrated_0104.js
function t (line 1) | function t(if) { }
FILE: test/fixtures/invalid-syntax/migrated_0105.js
function t (line 1) | function t(true) { }
FILE: test/fixtures/invalid-syntax/migrated_0106.js
function t (line 1) | function t(false) { }
FILE: test/fixtures/invalid-syntax/migrated_0107.js
function t (line 1) | function t(null) { }
FILE: test/fixtures/invalid-syntax/migrated_0185.js
function hello (line 1) | function hello() {'use strict'; var eval = 10; }
FILE: test/fixtures/invalid-syntax/migrated_0186.js
function hello (line 1) | function hello() {'use strict'; var arguments = 10; }
FILE: test/fixtures/invalid-syntax/migrated_0187.js
function hello (line 1) | function hello() {'use strict'; try { } catch (eval) { } }
FILE: test/fixtures/invalid-syntax/migrated_0188.js
function hello (line 1) | function hello() {'use strict'; try { } catch (arguments) { } }
FILE: test/fixtures/invalid-syntax/migrated_0189.js
function hello (line 1) | function hello() {'use strict'; eval = 10; }
FILE: test/fixtures/invalid-syntax/migrated_0190.js
function hello (line 1) | function hello() {'use strict'; arguments = 10; }
FILE: test/fixtures/invalid-syntax/migrated_0191.js
function hello (line 1) | function hello() {'use strict'; ++eval; }
FILE: test/fixtures/invalid-syntax/migrated_0192.js
function hello (line 1) | function hello() {'use strict'; --eval; }
FILE: test/fixtures/invalid-syntax/migrated_0193.js
function hello (line 1) | function hello() {'use strict'; ++arguments; }
FILE: test/fixtures/invalid-syntax/migrated_0194.js
function hello (line 1) | function hello() {'use strict'; --arguments; }
FILE: test/fixtures/invalid-syntax/migrated_0195.js
function hello (line 1) | function hello() {'use strict'; eval++; }
FILE: test/fixtures/invalid-syntax/migrated_0196.js
function hello (line 1) | function hello() {'use strict'; eval--; }
FILE: test/fixtures/invalid-syntax/migrated_0197.js
function hello (line 1) | function hello() {'use strict'; arguments++; }
FILE: test/fixtures/invalid-syntax/migrated_0198.js
function hello (line 1) | function hello() {'use strict'; arguments--; }
FILE: test/fixtures/invalid-syntax/migrated_0199.js
function hello (line 1) | function hello() {'use strict'; function eval() { } }
FILE: test/fixtures/invalid-syntax/migrated_0200.js
function hello (line 1) | function hello() {'use strict'; function arguments() { } }
FILE: test/fixtures/invalid-syntax/migrated_0201.js
function eval (line 1) | function eval() {'use strict'; }
FILE: test/fixtures/invalid-syntax/migrated_0202.js
function arguments (line 1) | function arguments() {'use strict'; }
FILE: test/fixtures/invalid-syntax/migrated_0203.js
function hello (line 1) | function hello() {'use strict'; (function eval() { }()) }
FILE: test/fixtures/invalid-syntax/migrated_0204.js
function hello (line 1) | function hello() {'use strict'; (function arguments() { }()) }
FILE: test/fixtures/invalid-syntax/migrated_0207.js
function hello (line 1) | function hello() {'use strict'; ({ s: function eval() { } }); }
FILE: test/fixtures/invalid-syntax/migrated_0209.js
function hello (line 1) | function hello() {'use strict'; ({ i: 10, set s(eval) { } }); }
FILE: test/fixtures/invalid-syntax/migrated_0210.js
function hello (line 1) | function hello() {'use strict'; ({ set s(eval) { } }); }
FILE: test/fixtures/invalid-syntax/migrated_0211.js
function hello (line 1) | function hello() {'use strict'; ({ s: function s(eval) { } }); }
FILE: test/fixtures/invalid-syntax/migrated_0212.js
function hello (line 1) | function hello(eval) {'use strict';}
FILE: test/fixtures/invalid-syntax/migrated_0213.js
function hello (line 1) | function hello(arguments) {'use strict';}
FILE: test/fixtures/invalid-syntax/migrated_0214.js
function hello (line 1) | function hello() { 'use strict'; function inner(eval) {} }
FILE: test/fixtures/invalid-syntax/migrated_0215.js
function hello (line 1) | function hello() { 'use strict'; function inner(arguments) {} }
FILE: test/fixtures/invalid-syntax/migrated_0217.js
function hello (line 1) | function hello() { 'use strict'; "\1"; }
FILE: test/fixtures/invalid-syntax/migrated_0218.js
function hello (line 1) | function hello() { 'use strict'; 021; }
FILE: test/fixtures/invalid-syntax/migrated_0219.js
function hello (line 1) | function hello() { 'use strict'; ({ "\1": 42 }); }
FILE: test/fixtures/invalid-syntax/migrated_0220.js
function hello (line 1) | function hello() { 'use strict'; ({ 021: 42 }); }
FILE: test/fixtures/invalid-syntax/migrated_0221.js
function hello (line 1) | function hello() { "octal directive\1"; "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0222.js
function hello (line 1) | function hello() { "octal directive\1"; "octal directive\2"; "use strict...
FILE: test/fixtures/invalid-syntax/migrated_0223.js
function hello (line 1) | function hello() { "use strict"; function inner() { "octal directive\1";...
FILE: test/fixtures/invalid-syntax/migrated_0224.js
function hello (line 1) | function hello() { "use strict"; var implements; }
FILE: test/fixtures/invalid-syntax/migrated_0225.js
function hello (line 1) | function hello() { "use strict"; var interface; }
FILE: test/fixtures/invalid-syntax/migrated_0226.js
function hello (line 1) | function hello() { "use strict"; var package; }
FILE: test/fixtures/invalid-syntax/migrated_0227.js
function hello (line 1) | function hello() { "use strict"; var private; }
FILE: test/fixtures/invalid-syntax/migrated_0228.js
function hello (line 1) | function hello() { "use strict"; var protected; }
FILE: test/fixtures/invalid-syntax/migrated_0229.js
function hello (line 1) | function hello() { "use strict"; var public; }
FILE: test/fixtures/invalid-syntax/migrated_0230.js
function hello (line 1) | function hello() { "use strict"; var static; }
FILE: test/fixtures/invalid-syntax/migrated_0231.js
function hello (line 1) | function hello() { "use strict"; var yield; }
FILE: test/fixtures/invalid-syntax/migrated_0232.js
function hello (line 1) | function hello() { "use strict"; var let; }
FILE: test/fixtures/invalid-syntax/migrated_0233.js
function hello (line 1) | function hello(static) { "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0234.js
function static (line 1) | function static() { "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0235.js
function eval (line 1) | function eval(a) { "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0236.js
function arguments (line 1) | function arguments(a) { "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0239.js
function static (line 1) | function static() { }
FILE: test/fixtures/invalid-syntax/migrated_0240.js
function a (line 1) | function a(t, t) { "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0241.js
function a (line 1) | function a(eval) { "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0242.js
function a (line 1) | function a(package) { "use strict"; }
FILE: test/fixtures/invalid-syntax/migrated_0243.js
function a (line 1) | function a() { "use strict"; function b(t, t) { }; }
FILE: test/fixtures/invalid-syntax/migrated_0245.js
function a (line 1) | function a() { "use strict"; (function b(t, t) { }); }
FILE: test/fixtures/invalid-syntax/migrated_0249.js
function t (line 1) | function t(__proto__, __proto__) { }
FILE: test/fixtures/invalid-syntax/migrated_0258.js
function f (line 1) | function f(a, ...b, c){}
FILE: test/fixtures/invalid-syntax/migrated_0260.js
function x (line 1) | function x(...a = 1){}
FILE: test/fixtures/invalid-syntax/migrated_0264.js
class A (line 1) | class A extends a + b {}
FILE: test/fixtures/invalid-syntax/migrated_0268.js
class A (line 1) | class A {a:0}
FILE: test/fixtures/invalid-syntax/migrated_0269.js
class A (line 1) | class A {a(){},b(){}}
method a (line 1) | a(){}
method b (line 1) | b(){}
FILE: test/fixtures/invalid-syntax/migrated_0270.js
class A (line 1) | class A {static prototype(){}}
method prototype (line 1) | static prototype(){}
FILE: test/fixtures/invalid-syntax/migrated_0271.js
class A (line 1) | class A {static "prototype"(){}}
method "prototype" (line 1) | static "prototype"(){}
FILE: test/fixtures/invalid-syntax/migrated_0272.js
class A (line 1) | class A {get constructor(){}}
method constructor (line 1) | get constructor(){}
FILE: test/fixtures/invalid-syntax/migrated_0273.js
class A (line 1) | class A {set constructor(m){}}
method constructor (line 1) | set constructor(m){}
FILE: test/fixtures/invalid-syntax/migrated_0274.js
class A (line 1) | class A {constructor(){} "constructor"(){}}
method constructor (line 1) | constructor(){}
method "constructor" (line 1) | "constructor"(){}
FILE: test/fixtures/invalid-syntax/migrated_0275.js
class A (line 1) | class A {a static(){}}
method static (line 1) | static(){}
FILE: test/fixtures/invalid-syntax/migrated_0276.js
class A (line 1) | class A {static static static(){}}
method static (line 1) | static static static(){}
FILE: test/fixtures/invalid-syntax/migrated_0277.js
class A (line 1) | class A {a(enum){}}
method a (line 1) | a(enum){}
FILE: test/fixtures/invalid-syntax/migrated_0278.js
class A (line 1) | class A {static [static](){};}
method [static] (line 1) | static [static](){}
FILE: test/fixtures/invalid-syntax/strict_assignment_implements.js
function hello (line 1) | function hello() { "use strict"; implements = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_interface.js
function hello (line 1) | function hello() { "use strict"; interface = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_let.js
function hello (line 1) | function hello() { "use strict"; let = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_package.js
function hello (line 1) | function hello() { "use strict"; package = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_private.js
function hello (line 1) | function hello() { "use strict"; private = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_protected.js
function hello (line 1) | function hello() { "use strict"; protected = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_public.js
function hello (line 1) | function hello() { "use strict"; public = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_static.js
function hello (line 1) | function hello() { "use strict"; static = 1; }
FILE: test/fixtures/invalid-syntax/strict_assignment_yield.js
function hello (line 1) | function hello() { "use strict"; yield = 1; }
FILE: test/fixtures/statement/if/invalid-function-declaration1.js
function f (line 1) | function f(){}
FILE: test/fixtures/statement/if/invalid-function-declaration2.js
function f (line 1) | function f(){}
FILE: test/fixtures/statement/if/invalid-function-declaration3.js
function f (line 1) | function f(){}
FILE: test/fixtures/statement/if/invalid-function-declaration4.js
function f (line 1) | function f(){}
function g (line 1) | function g(){}
FILE: test/fixtures/statement/if/migrated_0003.js
function a (line 1) | function a(){}
FILE: test/fixtures/statement/labelled/function-declaration.js
function b (line 1) | function b() {}
FILE: test/fixtures/statement/return/multiline_string.js
function a (line 1) | function a() {
FILE: test/fixtures/statement/return/multiline_template.js
function a (line 1) | function a() {
FILE: test/fixtures/statement/while/invalid-decl-async-fun.js
function f (line 1) | async function f() {}
FILE: test/fixtures/tokenize/migrated_0004.js
function f (line 1) | function f(){}
FILE: test/fixtures/tokenize/migrated_0008.js
function f (line 1) | function f(){}
FILE: test/fixtures/tolerant-parse/migrated_0027.js
function eval (line 1) | function eval() {}
FILE: test/fixtures/tolerant-parse/migrated_0028.js
function arguments (line 1) | function arguments() {}
FILE: test/fixtures/tolerant-parse/migrated_0029.js
function interface (line 1) | function interface() {}
FILE: test/fixtures/tolerant-parse/migrated_0033.js
function f (line 1) | function f(eval) {}
FILE: test/fixtures/tolerant-parse/migrated_0034.js
function f (line 1) | function f(arguments) {}
FILE: test/fixtures/tolerant-parse/migrated_0035.js
function f (line 1) | function f(foo, foo) {}
FILE: test/fixtures/tolerant-parse/migrated_0039.js
method f (line 1) | set f(eval) {}
FILE: test/fixtures/tolerant-parse/migrated_0040.js
function hello (line 1) | function hello() { "octal directive\1"; "use strict"; }
FILE: test/fixtures/tolerant-parse/migrated_0051.js
method x (line 1) | x(eval){"use strict";}
FILE: test/fixtures/tolerant-parse/migrated_0052.js
method x (line 1) | x(eval){"use strict"}
FILE: test/grammar-tests.js
function readEverythingJsProgram (line 27) | function readEverythingJsProgram(type) {
FILE: test/regression-tests.js
function sortedObject (line 42) | function sortedObject(o) {
function getBaselineSyntax (line 69) | function getBaselineSyntax(name) {
function createBaselineSyntax (line 79) | function createBaselineSyntax(name, syntax) {
function writeActualSyntax (line 84) | function writeActualSyntax(name, syntax) {
function getBaselineTokens (line 89) | function getBaselineTokens(name) {
function createBaselineTokens (line 99) | function createBaselineTokens(name, tokens) {
function writeActualTokens (line 104) | function writeActualTokens(name, tokens) {
FILE: test/test-262.js
function normalizePath (line 12) | function normalizePath(str) {
method transform (line 20) | transform(test, encoding, done) {
function report (line 66) | function report(summary) {
FILE: test/unit-tests.js
function generateTestCase (line 43) | function generateTestCase(testCase) {
FILE: test/utils/create-testcases.js
function addCase (line 40) | function addCase(key, kind, item) {
function addJsonFixture (line 48) | function addJsonFixture(value, filePath) {
function addJSFixture (line 70) | function addJSFixture(value, filePath) {
FILE: test/utils/evaluate-testcase.js
function NotMatchingError (line 37) | function NotMatchingError(expected, actual) {
function assertEquality (line 44) | function assertEquality(expected, actual) {
function sortedObject (line 50) | function sortedObject(o) {
function hasAttachedComment (line 84) | function hasAttachedComment(syntax) {
function testParse (line 99) | function testParse(code, syntax) {
function testTokenize (line 239) | function testTokenize(code, tokens) {
function testError (line 312) | function testError(testCase) {
FILE: tools/fixupbundle.js
function fixupbundle (line 28) | function fixupbundle(filename) {
FILE: tools/generate-fixtures.js
function renderFixturesFile (line 35) | function renderFixturesFile(ext, stringify) {
FILE: tools/generate-xhtml-entities.js
function get (line 5) | function get(uri, callback) {
function process (line 18) | function process(uri, callback) {
function collect (line 42) | function collect(callback) {
function generate (line 59) | function generate() {
Copy disabled (too large)
Download .json
Condensed preview — 3395 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (65,408K chars).
[
{
"path": ".editorconfig",
"chars": 147,
"preview": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 4\nend_of_line = lf\ninsert_final_newline = true\ntrim_"
},
{
"path": ".eslintrc.json",
"chars": 1254,
"preview": "{\n \"root\": true,\n \"env\": {\n \"es6\": true,\n \"node\": true\n },\n \"extends\": [\"eslint:recommended\"],"
},
{
"path": ".github/ISSUE_TEMPLATE.md",
"chars": 1141,
"preview": "<!--- Provide a summary in the title above. Be concise and specific! -->\n\n<!--\nIf you are here for reasons other than r"
},
{
"path": ".github/workflows/codestyle.yml",
"chars": 282,
"preview": "name: Code Style\n\non: [push, pull_request]\n\njobs:\n\n codestyle:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actio"
},
{
"path": ".github/workflows/downstream.yml",
"chars": 333,
"preview": "name: Downstream Checks\n\non: [push, pull_request]\n\njobs:\n downstream:\n runs-on: ubuntu-latest\n steps:\n - uses:"
},
{
"path": ".github/workflows/ecma262suite.yml",
"chars": 330,
"preview": "name: ECMA-262 Test Suite\n\non: [push, pull_request]\n\njobs:\n test262:\n runs-on: ubuntu-latest\n steps:\n - uses: "
},
{
"path": ".github/workflows/nightly.yml",
"chars": 1677,
"preview": "name: Publish nightly to npm\n\non:\n schedule:\n - cron: \"30 6 * * *\"\n\njobs:\n check_date:\n runs-on: ubuntu-latest\n "
},
{
"path": ".github/workflows/tests.yml",
"chars": 1527,
"preview": "name: Tests\n\non: [push, pull_request]\n\njobs:\n linux:\n runs-on: ubuntu-latest\n strategy:\n matrix:\n nod"
},
{
"path": ".gitignore",
"chars": 57,
"preview": "coverage\nnode_modules\ntest/dist\nsrc/*.js\ndist/esprima.js\n"
},
{
"path": ".npmignore",
"chars": 62,
"preview": ".git\n/node_modules/\n/assets/\n/coverage/\n/demo/\n/tools/\n/test/\n"
},
{
"path": "CONTRIBUTING.md",
"chars": 942,
"preview": "# Contribution Guide\n\nThis page describes how to contribute changes to Esprima.\n\nPlease do **not** create a pull request"
},
{
"path": "ChangeLog",
"chars": 9406,
"preview": "2017-06-10: Version 4.0.0\n\n * Support ES2017 async function and await expression (issue 1079)\n * Support ES201"
},
{
"path": "LICENSE.BSD",
"chars": 1303,
"preview": "Copyright JS Foundation and other contributors, https://js.foundation/\n\nRedistribution and use in source and binary form"
},
{
"path": "README.md",
"chars": 2431,
"preview": "[](https://www.npmjs.com/package/esprima)\n[\n\nEsprima tokenizer takes a string as an input and produces an array of toke"
},
{
"path": "docs/requirements.txt",
"chars": 37,
"preview": "sphinx-rtd-theme\nsphinx\nrecommonmark\n"
},
{
"path": "docs/syntactic-analysis.md",
"chars": 22995,
"preview": "# Chapter 2. Syntactic Analysis (Parsing)\n\nThe main use case of Esprima is to parse a JavaScript program. This is also k"
},
{
"path": "docs/syntax-tree-format.md",
"chars": 13948,
"preview": "# Appendix A. Syntax Tree Format\n\nEsprima syntax tree format is derived from the original version of [Mozilla Parser API"
},
{
"path": "eslint/index.js",
"chars": 1946,
"preview": "/**\n * @fileoverview Counts the cyclomatic complexity of each function of the script. See http://en.wikipedia.org/wiki/C"
},
{
"path": "eslint/package.json",
"chars": 90,
"preview": "{\n \"name\": \"eslint-plugin-esprima-internal\",\n \"version\": \"0.0.1\",\n \"main\": \"index.js\"\n}"
},
{
"path": "package.json",
"chars": 3616,
"preview": "{\n \"name\": \"esprima\",\n \"description\": \"ECMAScript parsing infrastructure for multipurpose analysis\",\n \"homepage\": \"ht"
},
{
"path": "src/assert.ts",
"chars": 455,
"preview": "// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. anot"
},
{
"path": "src/character.ts",
"chars": 18923,
"preview": "// See also tools/generate-unicode-regex.js.\nconst Regex = {\n // Unicode v12.1.0 NonAsciiIdentifierStart:\n NonAsci"
},
{
"path": "src/comment-handler.ts",
"chars": 5482,
"preview": "import { SourceLocation } from './scanner';\nimport { Syntax } from './syntax';\n\ninterface Comment {\n type: string;\n "
},
{
"path": "src/error-handler.ts",
"chars": 1855,
"preview": "declare class Error {\n public name: string;\n public message: string;\n public index: number;\n public lineNumb"
},
{
"path": "src/esprima.ts",
"chars": 4286,
"preview": "/*\n Copyright JS Foundation and other contributors, https://js.foundation/\n\n Redistribution and use in source and bina"
},
{
"path": "src/jsx-nodes.ts",
"chars": 4231,
"preview": "import { JSXSyntax } from './jsx-syntax';\nimport * as Node from './nodes';\n\nexport type JSXAttributeName = JSXIdentifier"
},
{
"path": "src/jsx-parser.ts",
"chars": 22083,
"preview": "import { Character } from './character';\nimport * as JSXNode from './jsx-nodes';\nimport { JSXSyntax } from './jsx-syntax"
},
{
"path": "src/jsx-syntax.ts",
"chars": 571,
"preview": "export const JSXSyntax = {\n JSXAttribute: 'JSXAttribute',\n JSXClosingElement: 'JSXClosingElement',\n JSXClosingF"
},
{
"path": "src/messages.ts",
"chars": 4640,
"preview": "// Error messages should be identical to V8.\nexport const Messages = {\n AsyncFunctionInSingleStatementContext: 'Async"
},
{
"path": "src/nodes.ts",
"chars": 27079,
"preview": "import { Syntax } from './syntax';\n\nexport type ArgumentListElement = Expression | SpreadElement;\nexport type ArrayExpre"
},
{
"path": "src/parser.ts",
"chars": 145587,
"preview": "import { assert } from './assert';\nimport { ErrorHandler } from './error-handler';\nimport { Messages } from './messages'"
},
{
"path": "src/scanner.ts",
"chars": 44597,
"preview": "import { assert } from './assert';\nimport { Character } from './character';\nimport { ErrorHandler } from './error-handle"
},
{
"path": "src/syntax.ts",
"chars": 2756,
"preview": "export const Syntax = {\n AssignmentExpression: 'AssignmentExpression',\n AssignmentPattern: 'AssignmentPattern',\n "
},
{
"path": "src/token.ts",
"chars": 656,
"preview": "export const enum Token {\n BooleanLiteral = 1,\n EOF,\n Identifier,\n Keyword,\n NullLiteral,\n NumericLite"
},
{
"path": "src/tokenizer.ts",
"chars": 6979,
"preview": "import { ErrorHandler } from './error-handler';\nimport { Comment, RawToken, Scanner, SourceLocation } from './scanner';\n"
},
{
"path": "src/tsconfig.json",
"chars": 413,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"target\": \"ES5\",\n\t\t\"module\": \"commonjs\",\n\t\t\"noImplicitAny\": false,\n\t\t\"strict\": true\n\t},\n\t\"file"
},
{
"path": "src/xhtml-entities.ts",
"chars": 5291,
"preview": "// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\nexport const XHTMLEntities = {\n quot: '\\u0022',\n amp: "
},
{
"path": "test/.gitattributes",
"chars": 63,
"preview": "fixtures/expression/binary/multiline_string_literal.js eol=crlf"
},
{
"path": "test/3rdparty/angular-1.2.5.js",
"chars": 718539,
"preview": "/**\n * @license AngularJS v1.2.5\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window"
},
{
"path": "test/3rdparty/backbone-1.1.0.js",
"chars": 60127,
"preview": "// Backbone.js 1.1.0\n\n// (c) 2010-2011 Jeremy Ashkenas, DocumentCloud Inc.\n// (c) 2011-2013 Jeremy Ashkenas,"
},
{
"path": "test/3rdparty/benchmark.js",
"chars": 113855,
"preview": "/*!\n * Benchmark.js v1.0.0 <http://benchmarkjs.com/>\n * Copyright 2010-2012 Mathias Bynens <http://mths.be/>\n * Based on"
},
{
"path": "test/3rdparty/jquery-1.9.1.js",
"chars": 268381,
"preview": "/*!\n * jQuery JavaScript Library v1.9.1\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Cop"
},
{
"path": "test/3rdparty/jquery.mobile-1.4.2.js",
"chars": 452802,
"preview": "/*!\n* jQuery Mobile 1.4.2\n* Git HEAD hash: 9d9a42a27d0c693e8b5569c3a10d771916af5045 <> Date: Fri Feb 28 2014 17:32:01 UT"
},
{
"path": "test/3rdparty/mootools-1.4.5.js",
"chars": 160495,
"preview": "/*\n---\nMooTools: the javascript framework\n\nweb build:\n - http://mootools.net/core/76bf47062d6c1983d66ce47ad66aa0e0\n\npack"
},
{
"path": "test/3rdparty/syntax/.gitignore",
"chars": 30,
"preview": "*.actual.json\n*.actual.tokens\n"
},
{
"path": "test/3rdparty/syntax/README",
"chars": 63,
"preview": "This directory holds the syntax tree of every tested library.\n\n"
},
{
"path": "test/3rdparty/syntax/angular-1.2.5.json",
"chars": 5661717,
"preview": "{\"range\":[104,718539],\"loc\":{\"start\":{\"line\":6,\"column\":0},\"end\":{\"line\":20369,\"column\":365}},\"type\":\"Program\",\"body\":[{"
},
{
"path": "test/3rdparty/syntax/angular-1.2.5.tokens",
"chars": 3174946,
"preview": "[{\"range\":[104,105],\"type\":\"Punctuator\",\"value\":\"(\"},{\"range\":[105,113],\"type\":\"Keyword\",\"value\":\"function\"},{\"range\":[1"
},
{
"path": "test/3rdparty/syntax/backbone-1.1.0.json",
"chars": 928060,
"preview": "{\"range\":[310,60126],\"loc\":{\"start\":{\"line\":9,\"column\":0},\"end\":{\"line\":1581,\"column\":14}},\"type\":\"Program\",\"body\":[{\"ra"
},
{
"path": "test/3rdparty/syntax/backbone-1.1.0.tokens",
"chars": 494407,
"preview": "[{\"range\":[310,311],\"type\":\"Punctuator\",\"value\":\"(\"},{\"range\":[311,319],\"type\":\"Keyword\",\"value\":\"function\"},{\"range\":[3"
},
{
"path": "test/3rdparty/syntax/jquery-1.9.1.json",
"chars": 5037773,
"preview": "{\"range\":[273,268380],\"loc\":{\"start\":{\"line\":14,\"column\":0},\"end\":{\"line\":9597,\"column\":13}},\"type\":\"Program\",\"body\":[{\""
},
{
"path": "test/3rdparty/syntax/jquery-1.9.1.tokens",
"chars": 2725260,
"preview": "[{\"range\":[273,274],\"type\":\"Punctuator\",\"value\":\"(\"},{\"range\":[274,282],\"type\":\"Keyword\",\"value\":\"function\"},{\"range\":[2"
},
{
"path": "test/3rdparty/syntax/jquery.mobile-1.4.2.json",
"chars": 8580411,
"preview": "{\"range\":[289,452801],\"loc\":{\"start\":{\"line\":13,\"column\":0},\"end\":{\"line\":15056,\"column\":4}},\"type\":\"Program\",\"body\":[{\""
},
{
"path": "test/3rdparty/syntax/jquery.mobile-1.4.2.tokens",
"chars": 4396818,
"preview": "[{\"range\":[289,290],\"type\":\"Punctuator\",\"value\":\"(\"},{\"range\":[290,298],\"type\":\"Keyword\",\"value\":\"function\"},{\"range\":[2"
},
{
"path": "test/3rdparty/syntax/mootools-1.4.5.json",
"chars": 4142764,
"preview": "{\"range\":[1291,160493],\"loc\":{\"start\":{\"line\":36,\"column\":0},\"end\":{\"line\":6446,\"column\":5}},\"type\":\"Program\",\"body\":[{\""
},
{
"path": "test/3rdparty/syntax/mootools-1.4.5.tokens",
"chars": 2255876,
"preview": "[{\"range\":[1291,1292],\"type\":\"Punctuator\",\"value\":\"(\"},{\"range\":[1292,1300],\"type\":\"Keyword\",\"value\":\"function\"},{\"range"
},
{
"path": "test/3rdparty/syntax/underscore-1.5.2.json",
"chars": 774217,
"preview": "{\"range\":[216,43565],\"loc\":{\"start\":{\"line\":6,\"column\":0},\"end\":{\"line\":1276,\"column\":14}},\"type\":\"Program\",\"body\":[{\"ra"
},
{
"path": "test/3rdparty/syntax/underscore-1.5.2.tokens",
"chars": 426369,
"preview": "[{\"range\":[216,217],\"type\":\"Punctuator\",\"value\":\"(\"},{\"range\":[217,225],\"type\":\"Keyword\",\"value\":\"function\"},{\"range\":[2"
},
{
"path": "test/3rdparty/syntax/yui-3.12.0.json",
"chars": 3901629,
"preview": "{\"range\":[402,338294],\"loc\":{\"start\":{\"line\":19,\"column\":0},\"end\":{\"line\":11542,\"column\":3}},\"type\":\"Program\",\"body\":[{\""
},
{
"path": "test/3rdparty/syntax/yui-3.12.0.tokens",
"chars": 2072759,
"preview": "[{\"range\":[402,404],\"type\":\"Keyword\",\"value\":\"if\"},{\"range\":[405,406],\"type\":\"Punctuator\",\"value\":\"(\"},{\"range\":[406,412"
},
{
"path": "test/3rdparty/underscore-1.5.2.js",
"chars": 43566,
"preview": "// Underscore.js 1.5.2\n// http://underscorejs.org\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Invest"
},
{
"path": "test/3rdparty/yui-3.12.0.js",
"chars": 338295,
"preview": "/*\nYUI 3.12.0 (build 8655935)\nCopyright 2013 Yahoo! Inc. All rights reserved.\nLicensed under the BSD License.\nhttp://yui"
},
{
"path": "test/api-tests.js",
"chars": 42369,
"preview": "/*\n Copyright JS Foundation and other contributors, https://js.foundation/\n\n Redistribution and use in source and bina"
},
{
"path": "test/benchmark-parser.js",
"chars": 3990,
"preview": "/*\n Copyright JS Foundation and other contributors, https://js.foundation/\n\n Redistribution and use in source and bina"
},
{
"path": "test/benchmark-tokenizer.js",
"chars": 4001,
"preview": "/*\n Copyright JS Foundation and other contributors, https://js.foundation/\n\n Redistribution and use in source and bina"
},
{
"path": "test/check-version.js",
"chars": 2831,
"preview": "#!/usr/bin/env node\n\n/*\n Copyright JS Foundation and other contributors, https://js.foundation/\n\n Redistribution and u"
},
{
"path": "test/downstream.js",
"chars": 4911,
"preview": "/*\n Copyright JS Foundation and other contributors, https://js.foundation/\n\n Redistribution and use in source and bina"
},
{
"path": "test/fixtures/ES2016/exponent/exp_assign.js",
"chars": 9,
"preview": "x **= y;\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_assign.tree.json",
"chars": 3946,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_bitnot.js",
"chars": 8,
"preview": "x ** ~y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_bitnot.tree.json",
"chars": 4618,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_delete.js",
"chars": 14,
"preview": "x ** delete y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_delete.tree.json",
"chars": 4643,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_minus.js",
"chars": 8,
"preview": "x ** -y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_minus.tree.json",
"chars": 4618,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_minusminus.js",
"chars": 9,
"preview": "x ** --y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_minusminus.tree.json",
"chars": 4621,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_not.js",
"chars": 8,
"preview": "x ** !y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_not.tree.json",
"chars": 4618,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_operator.js",
"chars": 7,
"preview": "x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_operator.tree.json",
"chars": 3534,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_plus.js",
"chars": 8,
"preview": "x ** +y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_plus.tree.json",
"chars": 4618,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_plusplus.js",
"chars": 9,
"preview": "x ** ++y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_plusplus.tree.json",
"chars": 4621,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_precedence.js",
"chars": 12,
"preview": "x * y ** -z\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_precedence.tree.json",
"chars": 6795,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_typeof.js",
"chars": 14,
"preview": "x ** typeof y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_typeof.tree.json",
"chars": 4643,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_void.js",
"chars": 12,
"preview": "x ** void y\n"
},
{
"path": "test/fixtures/ES2016/exponent/exp_void.tree.json",
"chars": 4637,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_bitnot_exp.failure.json",
"chars": 120,
"preview": "{\"index\":3,\"lineNumber\":1,\"column\":4,\"message\":\"Error: Line 1: Unexpected token **\",\"description\":\"Unexpected token **\"}"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_bitnot_exp.js",
"chars": 8,
"preview": "~x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_delete_exp.failure.json",
"chars": 121,
"preview": "{\"index\":9,\"lineNumber\":1,\"column\":10,\"message\":\"Error: Line 1: Unexpected token **\",\"description\":\"Unexpected token **\""
},
{
"path": "test/fixtures/ES2016/exponent/invalid_delete_exp.js",
"chars": 14,
"preview": "delete x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_minus_exp.failure.json",
"chars": 120,
"preview": "{\"index\":3,\"lineNumber\":1,\"column\":4,\"message\":\"Error: Line 1: Unexpected token **\",\"description\":\"Unexpected token **\"}"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_minus_exp.js",
"chars": 8,
"preview": "-x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_not_exp.failure.json",
"chars": 120,
"preview": "{\"index\":3,\"lineNumber\":1,\"column\":4,\"message\":\"Error: Line 1: Unexpected token **\",\"description\":\"Unexpected token **\"}"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_not_exp.js",
"chars": 8,
"preview": "!x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_plus_exp.failure.json",
"chars": 120,
"preview": "{\"index\":3,\"lineNumber\":1,\"column\":4,\"message\":\"Error: Line 1: Unexpected token **\",\"description\":\"Unexpected token **\"}"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_plus_exp.js",
"chars": 8,
"preview": "+x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_typeof_exp.failure.json",
"chars": 121,
"preview": "{\"index\":9,\"lineNumber\":1,\"column\":10,\"message\":\"Error: Line 1: Unexpected token **\",\"description\":\"Unexpected token **\""
},
{
"path": "test/fixtures/ES2016/exponent/invalid_typeof_exp.js",
"chars": 14,
"preview": "typeof x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_void_exp.failure.json",
"chars": 120,
"preview": "{\"index\":7,\"lineNumber\":1,\"column\":8,\"message\":\"Error: Line 1: Unexpected token **\",\"description\":\"Unexpected token **\"}"
},
{
"path": "test/fixtures/ES2016/exponent/invalid_void_exp.js",
"chars": 12,
"preview": "void x ** y\n"
},
{
"path": "test/fixtures/ES2016/exponent/update_exp.js",
"chars": 24,
"preview": "(++x ** y) - (--p ** q)\n"
},
{
"path": "test/fixtures/ES2016/exponent/update_exp.tree.json",
"chars": 11700,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/identifier/gujarati_zha.js",
"chars": 3,
"preview": "ૹ\n\n"
},
{
"path": "test/fixtures/ES2016/identifier/gujarati_zha.tree.json",
"chars": 1595,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-array-destructuring.js",
"chars": 25,
"preview": "([]) => { \"use strict\" }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-array-destructuring.tree.json",
"chars": 7636,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-default-value.js",
"chars": 26,
"preview": "(a=1) => { \"use strict\" }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-default-value.tree.json",
"chars": 9445,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-object-destructuring.js",
"chars": 26,
"preview": "({a}) => { \"use strict\" }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-object-destructuring.tree.json",
"chars": 10678,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-rest.js",
"chars": 27,
"preview": "(...x) => { \"use strict\" }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-arrow-expression-rest.tree.json",
"chars": 8308,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-array-destructuring.js",
"chars": 32,
"preview": "function f([]){ \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-array-destructuring.tree.json",
"chars": 8147,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-default-value.js",
"chars": 35,
"preview": "function f(a = 1){ \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-default-value.tree.json",
"chars": 9822,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-object-destructuring.js",
"chars": 37,
"preview": "function f({x, y}) { \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-object-destructuring.tree.json",
"chars": 14182,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-rest.js",
"chars": 35,
"preview": "function f(...x) { \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-declaration-rest.tree.json",
"chars": 8749,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-array-destructuring.js",
"chars": 32,
"preview": "(function([]){ \"use strict\"; })\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-array-destructuring.tree.json",
"chars": 8884,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-default-value.js",
"chars": 35,
"preview": "(function(a = 1){ \"use strict\"; })\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-default-value.tree.json",
"chars": 10703,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-object-destructuring.js",
"chars": 37,
"preview": "(function({x, y}) { \"use strict\"; })\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-object-destructuring.tree.json",
"chars": 15379,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-rest.js",
"chars": 35,
"preview": "(function(...x) { \"use strict\"; })\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-function-expression-rest.tree.json",
"chars": 9554,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-array-destructuring.js",
"chars": 33,
"preview": "function *g([]){ \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-array-destructuring.tree.json",
"chars": 8558,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-default-value.js",
"chars": 36,
"preview": "function *g(a = 1){ \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-default-value.tree.json",
"chars": 10233,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-object-destructuring.js",
"chars": 38,
"preview": "function *g({x, y}) { \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-object-destructuring.tree.json",
"chars": 14593,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-rest.js",
"chars": 36,
"preview": "function *g(...x) { \"use strict\"; }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-generator-rest.tree.json",
"chars": 9160,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"FunctionDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-array-destructuring.js",
"chars": 35,
"preview": "class X { f([]) { \"use strict\" } }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-array-destructuring.tree.json",
"chars": 12887,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ClassDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-default-value.js",
"chars": 36,
"preview": "class X { f(a=1) { \"use strict\" } }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-default-value.tree.json",
"chars": 15138,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ClassDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-object-destructuring.js",
"chars": 36,
"preview": "class X { f({a}) { \"use strict\" } }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-object-destructuring.tree.json",
"chars": 16639,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ClassDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-rest.js",
"chars": 37,
"preview": "class X { f(...a) { \"use strict\" } }\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-method-rest.tree.json",
"chars": 13761,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ClassDeclaration\",\n \"id\": {\n "
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-setter-array-destructuring.js",
"chars": 34,
"preview": "({ set f([a]) { \"use strict\" } })\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-setter-array-destructuring.tree.json",
"chars": 14249,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-setter-default-value.js",
"chars": 36,
"preview": "({ set f(a = 1) { \"use strict\" } })\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-setter-default-value.tree.json",
"chars": 15067,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-setter-object-destructuring.js",
"chars": 34,
"preview": "({ set f({a}) { \"use strict\" } })\n"
},
{
"path": "test/fixtures/ES2016/strict-directive/invalid-strict-setter-object-destructuring.tree.json",
"chars": 16570,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-01.js",
"chars": 14,
"preview": "([a]) => [0];\n"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-01.tree.json",
"chars": 8165,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"range\": [\n 0,\n 13\n "
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-02.js",
"chars": 12,
"preview": "([a,b])=>0;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-02.tree.json",
"chars": 8189,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"range\": [\n 0,\n 11\n "
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-03.js",
"chars": 15,
"preview": "([a,...b])=>0;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-03.tree.json",
"chars": 9412,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"range\": [\n 0,\n 14\n "
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-empty.js",
"chars": 9,
"preview": "([])=>0;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/array-binding-pattern-empty.tree.json",
"chars": 5403,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"range\": [\n 0,\n 8\n "
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/elision.js",
"chars": 10,
"preview": "([,,])=>0\n"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/elision.tree.json",
"chars": 5901,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"range\": [\n 0,\n 9\n "
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/invalid-dup-param.failure.json",
"chars": 188,
"preview": "{\"index\":14,\"lineNumber\":1,\"column\":15,\"message\":\"Error: Line 1: Duplicate parameter name not allowed in this context\",\""
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/invalid-dup-param.js",
"chars": 19,
"preview": "([a,[b],...b])=>0;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/invalid-elision-after-rest.failure.json",
"chars": 122,
"preview": "{\"index\":11,\"lineNumber\":1,\"column\":12,\"message\":\"Error: Line 1: Unexpected token =>\",\"description\":\"Unexpected token =>"
},
{
"path": "test/fixtures/ES6/arrow-function/array-binding-pattern/invalid-elision-after-rest.js",
"chars": 16,
"preview": "([a,...b,])=>0;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-rest-forgetting-comma.failure.json",
"chars": 122,
"preview": "{\"index\":3,\"lineNumber\":1,\"column\":4,\"message\":\"Error: Line 1: Unexpected token ...\",\"description\":\"Unexpected token ..."
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-rest-forgetting-comma.js",
"chars": 14,
"preview": "(a ...b) => 0\n"
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-with-multiple-arg-and-rest.js",
"chars": 17,
"preview": "(a,b,...c) => 0;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-with-multiple-arg-and-rest.tree.json",
"chars": 8959,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"range\": [\n 0,\n 16\n "
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-with-multiple-rest.failure.json",
"chars": 170,
"preview": "{\"index\":5,\"lineNumber\":1,\"column\":6,\"message\":\"Error: Line 1: Rest parameter must be last formal parameter\",\"descriptio"
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-with-multiple-rest.js",
"chars": 18,
"preview": "(...a, ...b) => 0\n"
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-with-only-rest.js",
"chars": 12,
"preview": "(...a) => 0\n"
},
{
"path": "test/fixtures/ES6/arrow-function/arrow-with-only-rest.tree.json",
"chars": 5677,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"range\": [\n 0,\n 11\n "
},
{
"path": "test/fixtures/ES6/arrow-function/concise-body-in.js",
"chars": 26,
"preview": "for (() => { x in y };;);\n"
},
{
"path": "test/fixtures/ES6/arrow-function/concise-body-in.tree.json",
"chars": 11309,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ForStatement\",\n \"init\": {\n "
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-duplicated-names-rest-parameter.failure.json",
"chars": 188,
"preview": "{\"index\":10,\"lineNumber\":1,\"column\":11,\"message\":\"Error: Line 1: Duplicate parameter name not allowed in this context\",\""
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-duplicated-names-rest-parameter.js",
"chars": 17,
"preview": "(a,...[a]) => 0;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-duplicated-params.failure.json",
"chars": 186,
"preview": "{\"index\":6,\"lineNumber\":1,\"column\":7,\"message\":\"Error: Line 1: Duplicate parameter name not allowed in this context\",\"de"
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-duplicated-params.js",
"chars": 13,
"preview": "(x, x) => y;\n"
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-line-terminator-arrow.failure.json",
"chars": 120,
"preview": "{\"index\":3,\"lineNumber\":2,\"column\":4,\"message\":\"Error: Line 2: Unexpected token =>\",\"description\":\"Unexpected token =>\"}"
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-line-terminator-arrow.js",
"chars": 9,
"preview": "()\n=> 42\n"
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-param-strict-mode.failure.json",
"chars": 208,
"preview": "{\"index\":22,\"lineNumber\":1,\"column\":23,\"message\":\"Error: Line 1: Parameter name eval or arguments is not allowed in stri"
},
{
"path": "test/fixtures/ES6/arrow-function/invalid-param-strict-mode.js",
"chars": 24,
"preview": "eval => {\"use strict\"};\n"
},
{
"path": "test/fixtures/ES6/arrow-function/migrated_0000.js",
"chars": 12,
"preview": "() => \"test\""
},
{
"path": "test/fixtures/ES6/arrow-function/migrated_0000.tree.json",
"chars": 3571,
"preview": "{\n \"type\": \"Program\",\n \"body\": [\n {\n \"type\": \"ExpressionStatement\",\n \"expression\": {\n"
},
{
"path": "test/fixtures/ES6/arrow-function/migrated_0001.js",
"chars": 11,
"preview": "e => \"test\""
}
]
// ... and 3195 more files (download for full content)
About this extraction
This page contains the full source code of the jquery/esprima GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3395 files (54.0 MB), approximately 14.4M tokens, and a symbol index with 1326 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.