[Pkg-javascript-commits] [node-esprima] 01/03: New upstream version 3.1.2+ds
Julien Puydt
julien.puydt at laposte.net
Wed Dec 7 16:12:03 UTC 2016
This is an automated email from the git hooks/post-receive script.
jpuydt-guest pushed a commit to branch master
in repository node-esprima.
commit 80448d4828b1348e9f4bd4a8a06c94868a6678cd
Author: Julien Puydt <julien.puydt at laposte.net>
Date: Wed Dec 7 17:07:10 2016 +0100
New upstream version 3.1.2+ds
---
ChangeLog | 7 +
LICENSE.BSD | 2 +-
bin/esparse.js | 2 +-
bin/esvalidate.js | 2 +-
package.json | 2 +-
src/esprima.ts | 4 +-
src/jsx-parser.ts | 111 +++++---
src/parser.ts | 21 +-
test/api-tests.js | 2 +-
test/benchmark-parser.js | 2 +-
test/benchmark-tokenizer.js | 2 +-
test/browser-tests.js | 2 +-
test/check-complexity.js | 2 +-
test/check-version.js | 2 +-
test/downstream.js | 2 +-
.../import-declaration/invalid-import-boolean.js | 1 +
.../invalid-import-boolean.module.json | 1 +
.../import-declaration/invalid-import-keyword.js | 1 +
.../invalid-import-keyword.module.json | 1 +
.../ES6/import-declaration/invalid-import-null.js | 1 +
.../invalid-import-null.module.json | 1 +
test/fixtures/JSX/attribute-empty-entity1.js | 1 +
...tree.json => attribute-empty-entity1.tree.json} | 177 ++++---------
test/fixtures/JSX/attribute-empty-entity2.js | 1 +
...tree.json => attribute-empty-entity2.tree.json} | 177 ++++---------
test/fixtures/JSX/attribute-expression.tree.json | 20 +-
.../fixtures/JSX/attribute-illegal-short-entity.js | 1 +
...on => attribute-illegal-short-entity.tree.json} | 173 ++++--------
test/fixtures/JSX/attribute-invalid-entity.js | 1 +
...ree.json => attribute-invalid-entity.tree.json} | 177 ++++---------
test/fixtures/JSX/attribute-non-hex-entity.js | 1 +
...ree.json => attribute-non-hex-entity.tree.json} | 177 ++++---------
test/fixtures/JSX/attribute-non-numeric-entity.js | 1 +
...json => attribute-non-numeric-entity.tree.json} | 177 ++++---------
test/fixtures/JSX/attribute-primary.tree.json | 20 +-
test/fixtures/JSX/attribute-spread.tree.json | 20 +-
test/fixtures/JSX/attribute-unterminated-entity.js | 1 +
...son => attribute-unterminated-entity.tree.json} | 173 ++++--------
test/fixtures/JSX/attribute-x-entity.js | 1 +
...mary.tree.json => attribute-x-entity.tree.json} | 177 ++++---------
.../JSX/container-object-expression.tree.json | 18 --
test/fixtures/JSX/container-series.tree.json | 56 +---
.../JSX/simple-expression-container.tree.json | 20 +-
test/fixtures/JSX/template-literal.js | 1 +
...ession.tree.json => template-literal.tree.json} | 293 +++++++++++----------
test/grammar-tests.js | 2 +-
test/hostile-environment-tests.js | 2 +-
test/profile.js | 2 +-
test/regression-tests.js | 2 +-
test/unit-tests.js | 2 +-
test/utils/create-testcases.js | 2 +-
test/utils/error-to-object.js | 2 +-
test/utils/evaluate-testcase.js | 2 +-
tools/fixupbundle.js | 2 +-
tools/generate-fixtures.js | 2 +-
55 files changed, 716 insertions(+), 1339 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 73848b1..bdfdd07 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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)
diff --git a/LICENSE.BSD b/LICENSE.BSD
index 17557ec..7a55160 100644
--- a/LICENSE.BSD
+++ b/LICENSE.BSD
@@ -1,4 +1,4 @@
-Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+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:
diff --git a/bin/esparse.js b/bin/esparse.js
index 42a8593..45d05fb 100755
--- a/bin/esparse.js
+++ b/bin/esparse.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/bin/esvalidate.js b/bin/esvalidate.js
index e1ce387..4faf760 100755
--- a/bin/esvalidate.js
+++ b/bin/esvalidate.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/package.json b/package.json
index eecca3d..ff1fa03 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,7 @@
"esparse": "./bin/esparse.js",
"esvalidate": "./bin/esvalidate.js"
},
- "version": "3.1.1",
+ "version": "3.1.2",
"files": [
"bin",
"dist/esprima.js"
diff --git a/src/esprima.ts b/src/esprima.ts
index e3f94a9..ff4538d 100644
--- a/src/esprima.ts
+++ b/src/esprima.ts
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
@@ -104,4 +104,4 @@ export function tokenize(code: string, options, delegate) {
export { Syntax } from './syntax';
// Sync with *.json manifests.
-export const version = '3.1.1';
+export const version = '3.1.2';
diff --git a/src/jsx-parser.ts b/src/jsx-parser.ts
index d317c50..c00cf6e 100644
--- a/src/jsx-parser.ts
+++ b/src/jsx-parser.ts
@@ -75,6 +75,16 @@ export class JSXParser extends Parser {
this.nextToken();
}
+ reenterJSX() {
+ this.startJSX();
+ this.expectJSX('}');
+
+ // Pop the closing '}' added from the lookahead.
+ if (this.config.tokens) {
+ this.tokens.pop();
+ }
+ }
+
createJSXNode(): MetaJSXNode {
this.collectComments();
return {
@@ -92,27 +102,54 @@ export class JSXParser extends Parser {
};
}
- scanXHTMLEntity() {
+ scanXHTMLEntity(quote: string) {
let result = '&';
- let str = '';
- while (!this.scanner.eof()) {
- const ch = this.scanner.source[this.scanner.index++];
- if (ch === ';') {
- if (str[0] === '#') {
- str = str.substr(1);
- const hex = (str[0] === 'x');
- const cp = hex ? parseInt('0' + str, 16) : parseInt(str, 10);
- result = String.fromCharCode(cp);
- } else if (XHTMLEntities[str]) {
- result = XHTMLEntities[str];
- } else {
- result += ch;
- }
+ 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;
}
- str += ch;
+ 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;
@@ -146,7 +183,7 @@ export class JSXParser extends Parser {
if (ch === quote) {
break;
} else if (ch === '&') {
- str += this.scanXHTMLEntity();
+ str += this.scanXHTMLEntity(quote);
} else {
str += ch;
}
@@ -179,6 +216,18 @@ export class JSXParser extends Parser {
};
}
+ // `
+ if (cp === 96) {
+ // Only placeholder, since it will be rescanned as a real assignment expression.
+ return {
+ type: Token.Template,
+ 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;
@@ -362,14 +411,14 @@ export class JSXParser extends Parser {
const node = this.createJSXNode();
this.expectJSX('{');
- let expression = null;
this.finishJSX();
+
if (this.match('}')) {
this.tolerateError('JSX attributes must only be assigned a non-empty expression');
}
- expression = this.parseAssignmentExpression();
- this.startJSX();
- this.expectJSX('}');
+
+ const expression = this.parseAssignmentExpression();
+ this.reenterJSX();
return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));
}
@@ -397,9 +446,8 @@ export class JSXParser extends Parser {
this.finishJSX();
const argument = this.parseAssignmentExpression();
- this.startJSX();
+ this.reenterJSX();
- this.expectJSX('}');
return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));
}
@@ -461,25 +509,20 @@ export class JSXParser extends Parser {
return this.finalize(node, new JSXNode.JSXEmptyExpression());
}
- parseJSXExpression(): Node.Expression | JSXNode.JSXEmptyExpression {
- let expression;
+ 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.startJSX();
+ this.reenterJSX();
}
- return expression;
- }
-
- parseJSXExpressionContainer(): JSXNode.JSXExpressionContainer {
- const node = this.createJSXNode();
- this.expectJSX('{');
- const expression = this.parseJSXExpression();
- this.expectJSX('}');
return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));
}
diff --git a/src/parser.ts b/src/parser.ts
index b7bb66e..3ccd575 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -3113,13 +3113,24 @@ export class Parser {
parseImportSpecifier(): Node.ImportSpecifier {
const node = this.createNode();
- let local;
- const imported = this.parseIdentifierName();
- if (this.matchContextualKeyword('as')) {
- this.nextToken();
- local = this.parseVariableIdentifier();
+ let imported: Node.Identifier;
+ let local: Node.Identifier;
+ if (this.lookahead.type === Token.Identifier) {
+ imported = this.parseVariableIdentifier();
+ local = imported;
+ if (this.matchContextualKeyword('as')) {
+ this.nextToken();
+ local = this.parseVariableIdentifier();
+ }
} else {
+ imported = this.parseIdentifierName();
local = imported;
+ if (this.matchContextualKeyword('as')) {
+ this.nextToken();
+ local = this.parseVariableIdentifier();
+ } else {
+ this.throwUnexpectedToken(this.nextToken());
+ }
}
return this.finalize(node, new Node.ImportSpecifier(local, imported));
diff --git a/test/api-tests.js b/test/api-tests.js
index 3c8060d..5e0a05e 100644
--- a/test/api-tests.js
+++ b/test/api-tests.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/benchmark-parser.js b/test/benchmark-parser.js
index 766e723..bb35c4b 100644
--- a/test/benchmark-parser.js
+++ b/test/benchmark-parser.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/benchmark-tokenizer.js b/test/benchmark-tokenizer.js
index 2bd5474..c53d2c8 100644
--- a/test/benchmark-tokenizer.js
+++ b/test/benchmark-tokenizer.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/browser-tests.js b/test/browser-tests.js
index 9201868..428890d 100644
--- a/test/browser-tests.js
+++ b/test/browser-tests.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/check-complexity.js b/test/check-complexity.js
index 69de73c..1f03e0d 100644
--- a/test/check-complexity.js
+++ b/test/check-complexity.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/check-version.js b/test/check-version.js
index 8a7e2e8..be0c071 100644
--- a/test/check-version.js
+++ b/test/check-version.js
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/downstream.js b/test/downstream.js
index 37429a4..e4e9d42 100644
--- a/test/downstream.js
+++ b/test/downstream.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/fixtures/ES6/import-declaration/invalid-import-boolean.js b/test/fixtures/ES6/import-declaration/invalid-import-boolean.js
new file mode 100644
index 0000000..2f14af5
--- /dev/null
+++ b/test/fixtures/ES6/import-declaration/invalid-import-boolean.js
@@ -0,0 +1 @@
+import { true } from "logic"
diff --git a/test/fixtures/ES6/import-declaration/invalid-import-boolean.module.json b/test/fixtures/ES6/import-declaration/invalid-import-boolean.module.json
new file mode 100644
index 0000000..11972c3
--- /dev/null
+++ b/test/fixtures/ES6/import-declaration/invalid-import-boolean.module.json
@@ -0,0 +1 @@
+{"index":14,"lineNumber":1,"column":15,"message":"Error: Line 1: Unexpected token }","description":"Unexpected token }"}
\ No newline at end of file
diff --git a/test/fixtures/ES6/import-declaration/invalid-import-keyword.js b/test/fixtures/ES6/import-declaration/invalid-import-keyword.js
new file mode 100644
index 0000000..752247c
--- /dev/null
+++ b/test/fixtures/ES6/import-declaration/invalid-import-keyword.js
@@ -0,0 +1 @@
+import { for } from "iteration"
diff --git a/test/fixtures/ES6/import-declaration/invalid-import-keyword.module.json b/test/fixtures/ES6/import-declaration/invalid-import-keyword.module.json
new file mode 100644
index 0000000..1b0c23e
--- /dev/null
+++ b/test/fixtures/ES6/import-declaration/invalid-import-keyword.module.json
@@ -0,0 +1 @@
+{"index":13,"lineNumber":1,"column":14,"message":"Error: Line 1: Unexpected token }","description":"Unexpected token }"}
\ No newline at end of file
diff --git a/test/fixtures/ES6/import-declaration/invalid-import-null.js b/test/fixtures/ES6/import-declaration/invalid-import-null.js
new file mode 100644
index 0000000..4eb1d74
--- /dev/null
+++ b/test/fixtures/ES6/import-declaration/invalid-import-null.js
@@ -0,0 +1 @@
+import { null } from "null"
diff --git a/test/fixtures/ES6/import-declaration/invalid-import-null.module.json b/test/fixtures/ES6/import-declaration/invalid-import-null.module.json
new file mode 100644
index 0000000..11972c3
--- /dev/null
+++ b/test/fixtures/ES6/import-declaration/invalid-import-null.module.json
@@ -0,0 +1 @@
+{"index":14,"lineNumber":1,"column":15,"message":"Error: Line 1: Unexpected token }","description":"Unexpected token }"}
\ No newline at end of file
diff --git a/test/fixtures/JSX/attribute-empty-entity1.js b/test/fixtures/JSX/attribute-empty-entity1.js
new file mode 100644
index 0000000..9b39110
--- /dev/null
+++ b/test/fixtures/JSX/attribute-empty-entity1.js
@@ -0,0 +1 @@
+<x y="&#x;" />
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-empty-entity1.tree.json
similarity index 64%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-empty-entity1.tree.json
index bae7860..7141b09 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-empty-entity1.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "x",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "y",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "&#x;",
+ "raw": "\"&#x;\"",
"range": [
- 11,
- 16
+ 5,
+ 11
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 11
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 11
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 11
}
}
}
],
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
},
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "x",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "y",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,89 +204,35 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 10
- },
- "end": {
- "line": 1,
- "column": 11
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "{",
- "range": [
- 11,
- 12
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 11
- },
- "end": {
- "line": 1,
- "column": 12
- }
- }
- },
- {
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
+ "column": 4
},
"end": {
"line": 1,
- "column": 16
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "String",
+ "value": "\"&#x;\"",
"range": [
- 15,
- 16
+ 5,
+ 11
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 11
}
}
},
@@ -311,17 +240,17 @@
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 12,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 12
},
"end": {
"line": 1,
- "column": 17
+ "column": 13
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 13,
+ 14
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 13
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
}
diff --git a/test/fixtures/JSX/attribute-empty-entity2.js b/test/fixtures/JSX/attribute-empty-entity2.js
new file mode 100644
index 0000000..a2d8d01
--- /dev/null
+++ b/test/fixtures/JSX/attribute-empty-entity2.js
@@ -0,0 +1 @@
+<x y="&#;" />
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-empty-entity2.tree.json
similarity index 65%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-empty-entity2.tree.json
index bae7860..077a91f 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-empty-entity2.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "x",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "y",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "&#;",
+ "raw": "\"&#;\"",
"range": [
- 11,
- 16
+ 5,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 10
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 10
}
}
}
],
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
},
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "x",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "y",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,89 +204,35 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 10
- },
- "end": {
- "line": 1,
- "column": 11
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "{",
- "range": [
- 11,
- 12
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 11
- },
- "end": {
- "line": 1,
- "column": 12
- }
- }
- },
- {
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
+ "column": 4
},
"end": {
"line": 1,
- "column": 16
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "String",
+ "value": "\"&#;\"",
"range": [
- 15,
- 16
+ 5,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 10
}
}
},
@@ -311,17 +240,17 @@
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 11,
+ 12
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 11
},
"end": {
"line": 1,
- "column": 17
+ "column": 12
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 12,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 12
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
}
diff --git a/test/fixtures/JSX/attribute-expression.tree.json b/test/fixtures/JSX/attribute-expression.tree.json
index c133973..f23aaf9 100644
--- a/test/fixtures/JSX/attribute-expression.tree.json
+++ b/test/fixtures/JSX/attribute-expression.tree.json
@@ -324,24 +324,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 13,
- 14
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 13
- },
- "end": {
- "line": 1,
- "column": 14
- }
- }
- },
- {
- "type": "Punctuator",
"value": ">",
"range": [
14,
@@ -431,4 +413,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/test/fixtures/JSX/attribute-illegal-short-entity.js b/test/fixtures/JSX/attribute-illegal-short-entity.js
new file mode 100644
index 0000000..ebb0a80
--- /dev/null
+++ b/test/fixtures/JSX/attribute-illegal-short-entity.js
@@ -0,0 +1 @@
+<a b="xyz&;" />
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-illegal-short-entity.tree.json
similarity index 64%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-illegal-short-entity.tree.json
index bae7860..352a911 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-illegal-short-entity.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "xyz&;",
+ "raw": "\"xyz&;\"",
"range": [
- 11,
- 16
+ 5,
+ 12
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 12
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 12
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 12
}
}
}
],
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
},
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,31 +204,31 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 10
+ "column": 4
},
"end": {
"line": 1,
- "column": 11
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "{",
+ "type": "String",
+ "value": "\"xyz&;\"",
"range": [
- 11,
+ 5,
12
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
@@ -254,74 +237,20 @@
}
},
{
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
- },
- "end": {
- "line": 1,
- "column": 16
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
- },
- "end": {
- "line": 1,
- "column": 16
- }
- }
- },
- {
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 13,
+ 14
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 13
},
"end": {
"line": 1,
- "column": 17
+ "column": 14
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 14,
+ 15
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 14
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
}
diff --git a/test/fixtures/JSX/attribute-invalid-entity.js b/test/fixtures/JSX/attribute-invalid-entity.js
new file mode 100644
index 0000000..823425f
--- /dev/null
+++ b/test/fixtures/JSX/attribute-invalid-entity.js
@@ -0,0 +1 @@
+<a b="x&y" />
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-invalid-entity.tree.json
similarity index 65%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-invalid-entity.tree.json
index bae7860..97d4994 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-invalid-entity.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "x&y",
+ "raw": "\"x&y\"",
"range": [
- 11,
- 16
+ 5,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 10
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 10
}
}
}
],
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
},
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 13
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,89 +204,35 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 10
- },
- "end": {
- "line": 1,
- "column": 11
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "{",
- "range": [
- 11,
- 12
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 11
- },
- "end": {
- "line": 1,
- "column": 12
- }
- }
- },
- {
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
+ "column": 4
},
"end": {
"line": 1,
- "column": 16
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "String",
+ "value": "\"x&y\"",
"range": [
- 15,
- 16
+ 5,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 10
}
}
},
@@ -311,17 +240,17 @@
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 11,
+ 12
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 11
},
"end": {
"line": 1,
- "column": 17
+ "column": 12
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 12,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 12
},
"end": {
"line": 1,
- "column": 18
+ "column": 13
}
}
}
diff --git a/test/fixtures/JSX/attribute-non-hex-entity.js b/test/fixtures/JSX/attribute-non-hex-entity.js
new file mode 100644
index 0000000..3ce3d23
--- /dev/null
+++ b/test/fixtures/JSX/attribute-non-hex-entity.js
@@ -0,0 +1 @@
+<p q="Just my 
Z;2 ¢" />
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-non-hex-entity.tree.json
similarity index 62%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-non-hex-entity.tree.json
index bae7860..59536e4 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-non-hex-entity.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "p",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "q",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "Just my 
Z;2 ¢",
+ "raw": "\"Just my 
Z;2 ¢\"",
"range": [
- 11,
- 16
+ 5,
+ 29
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 29
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 29
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 29
}
}
}
],
"range": [
0,
- 18
+ 32
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 32
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 32
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 32
}
}
},
"range": [
0,
- 18
+ 32
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 32
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 32
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 32
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "p",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "q",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,89 +204,35 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 10
- },
- "end": {
- "line": 1,
- "column": 11
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "{",
- "range": [
- 11,
- 12
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 11
- },
- "end": {
- "line": 1,
- "column": 12
- }
- }
- },
- {
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
+ "column": 4
},
"end": {
"line": 1,
- "column": 16
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "String",
+ "value": "\"Just my 
Z;2 ¢\"",
"range": [
- 15,
- 16
+ 5,
+ 29
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 29
}
}
},
@@ -311,17 +240,17 @@
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 30,
+ 31
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 30
},
"end": {
"line": 1,
- "column": 17
+ "column": 31
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 31,
+ 32
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 31
},
"end": {
"line": 1,
- "column": 18
+ "column": 32
}
}
}
diff --git a/test/fixtures/JSX/attribute-non-numeric-entity.js b/test/fixtures/JSX/attribute-non-numeric-entity.js
new file mode 100644
index 0000000..2d96cc7
--- /dev/null
+++ b/test/fixtures/JSX/attribute-non-numeric-entity.js
@@ -0,0 +1 @@
+<x y="{abc {" />
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-non-numeric-entity.tree.json
similarity index 62%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-non-numeric-entity.tree.json
index bae7860..f8e1c67 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-non-numeric-entity.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "x",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "y",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "{abc {",
+ "raw": "\"{abc {\"",
"range": [
- 11,
- 16
+ 5,
+ 22
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 22
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 22
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 22
}
}
}
],
"range": [
0,
- 18
+ 25
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 25
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 25
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 25
}
}
},
"range": [
0,
- 18
+ 25
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 25
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 25
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 25
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "x",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "y",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,89 +204,35 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 10
- },
- "end": {
- "line": 1,
- "column": 11
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "{",
- "range": [
- 11,
- 12
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 11
- },
- "end": {
- "line": 1,
- "column": 12
- }
- }
- },
- {
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
+ "column": 4
},
"end": {
"line": 1,
- "column": 16
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "String",
+ "value": "\"{abc {\"",
"range": [
- 15,
- 16
+ 5,
+ 22
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 22
}
}
},
@@ -311,17 +240,17 @@
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 23,
+ 24
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 23
},
"end": {
"line": 1,
- "column": 17
+ "column": 24
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 24,
+ 25
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 24
},
"end": {
"line": 1,
- "column": 18
+ "column": 25
}
}
}
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-primary.tree.json
index bae7860..dd7815c 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-primary.tree.json
@@ -291,24 +291,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
- },
- "end": {
- "line": 1,
- "column": 16
- }
- }
- },
- {
- "type": "Punctuator",
"value": "/",
"range": [
16,
@@ -344,4 +326,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/test/fixtures/JSX/attribute-spread.tree.json b/test/fixtures/JSX/attribute-spread.tree.json
index 4240a1a..86fd05e 100644
--- a/test/fixtures/JSX/attribute-spread.tree.json
+++ b/test/fixtures/JSX/attribute-spread.tree.json
@@ -271,24 +271,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 16,
- 17
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 16
- },
- "end": {
- "line": 1,
- "column": 17
- }
- }
- },
- {
- "type": "Punctuator",
"value": ">",
"range": [
17,
@@ -378,4 +360,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/test/fixtures/JSX/attribute-unterminated-entity.js b/test/fixtures/JSX/attribute-unterminated-entity.js
new file mode 100644
index 0000000..9f3332a
--- /dev/null
+++ b/test/fixtures/JSX/attribute-unterminated-entity.js
@@ -0,0 +1 @@
+<a b="{"/>
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-unterminated-entity.tree.json
similarity index 63%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-unterminated-entity.tree.json
index bae7860..2b18dc6 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-unterminated-entity.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "{",
+ "raw": "\"{\"",
"range": [
- 11,
- 16
+ 5,
+ 12
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 12
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 12
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 12
}
}
}
],
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
},
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 14
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,31 +204,31 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 10
+ "column": 4
},
"end": {
"line": 1,
- "column": 11
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "{",
+ "type": "String",
+ "value": "\"{\"",
"range": [
- 11,
+ 5,
12
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
@@ -254,74 +237,20 @@
}
},
{
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
- },
- "end": {
- "line": 1,
- "column": 16
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
- },
- "end": {
- "line": 1,
- "column": 16
- }
- }
- },
- {
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 12,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 12
},
"end": {
"line": 1,
- "column": 17
+ "column": 13
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 13,
+ 14
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 13
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
}
diff --git a/test/fixtures/JSX/attribute-x-entity.js b/test/fixtures/JSX/attribute-x-entity.js
new file mode 100644
index 0000000..cd2c2f9
--- /dev/null
+++ b/test/fixtures/JSX/attribute-x-entity.js
@@ -0,0 +1 @@
+<a b="A"/>
diff --git a/test/fixtures/JSX/attribute-primary.tree.json b/test/fixtures/JSX/attribute-x-entity.tree.json
similarity index 63%
copy from test/fixtures/JSX/attribute-primary.tree.json
copy to test/fixtures/JSX/attribute-x-entity.tree.json
index bae7860..f3500f7 100644
--- a/test/fixtures/JSX/attribute-primary.tree.json
+++ b/test/fixtures/JSX/attribute-x-entity.tree.json
@@ -9,10 +9,10 @@
"type": "JSXOpeningElement",
"name": {
"type": "JSXIdentifier",
- "name": "img",
+ "name": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -21,7 +21,7 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
@@ -31,77 +31,60 @@
"type": "JSXAttribute",
"name": {
"type": "JSXIdentifier",
- "name": "width",
+ "name": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
"value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Literal",
- "value": 320,
- "raw": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
+ "type": "Literal",
+ "value": "A",
+ "raw": "\"A\"",
"range": [
- 11,
- 16
+ 5,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 11
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 13
}
}
},
"range": [
- 5,
- 16
+ 3,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 16
+ "column": 13
}
}
}
],
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -110,7 +93,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
},
@@ -118,7 +101,7 @@
"closingElement": null,
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -127,13 +110,13 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
},
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -142,7 +125,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
}
@@ -150,7 +133,7 @@
"sourceType": "script",
"range": [
0,
- 18
+ 15
],
"loc": {
"start": {
@@ -159,7 +142,7 @@
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
},
"tokens": [
@@ -183,10 +166,10 @@
},
{
"type": "JSXIdentifier",
- "value": "img",
+ "value": "a",
"range": [
1,
- 4
+ 2
],
"loc": {
"start": {
@@ -195,25 +178,25 @@
},
"end": {
"line": 1,
- "column": 4
+ "column": 2
}
}
},
{
"type": "JSXIdentifier",
- "value": "width",
+ "value": "b",
"range": [
- 5,
- 10
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 5
+ "column": 3
},
"end": {
"line": 1,
- "column": 10
+ "column": 4
}
}
},
@@ -221,89 +204,35 @@
"type": "Punctuator",
"value": "=",
"range": [
- 10,
- 11
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 10
- },
- "end": {
- "line": 1,
- "column": 11
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "{",
- "range": [
- 11,
- 12
+ 4,
+ 5
],
"loc": {
"start": {
"line": 1,
- "column": 11
- },
- "end": {
- "line": 1,
- "column": 12
- }
- }
- },
- {
- "type": "Numeric",
- "value": "320",
- "range": [
- 12,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 12
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
- "value": "}",
- "range": [
- 15,
- 16
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 15
+ "column": 4
},
"end": {
"line": 1,
- "column": 16
+ "column": 5
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "String",
+ "value": "\"A\"",
"range": [
- 15,
- 16
+ 5,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 5
},
"end": {
"line": 1,
- "column": 16
+ "column": 13
}
}
},
@@ -311,17 +240,17 @@
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 13,
+ 14
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 13
},
"end": {
"line": 1,
- "column": 17
+ "column": 14
}
}
},
@@ -329,17 +258,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 17,
- 18
+ 14,
+ 15
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 14
},
"end": {
"line": 1,
- "column": 18
+ "column": 15
}
}
}
diff --git a/test/fixtures/JSX/container-object-expression.tree.json b/test/fixtures/JSX/container-object-expression.tree.json
index bc3ef6c..3483944 100644
--- a/test/fixtures/JSX/container-object-expression.tree.json
+++ b/test/fixtures/JSX/container-object-expression.tree.json
@@ -365,24 +365,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 19,
- 20
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 19
- },
- "end": {
- "line": 1,
- "column": 20
- }
- }
- },
- {
- "type": "Punctuator",
"value": "<",
"range": [
20,
diff --git a/test/fixtures/JSX/container-series.tree.json b/test/fixtures/JSX/container-series.tree.json
index 8f6f29c..7b4dadd 100644
--- a/test/fixtures/JSX/container-series.tree.json
+++ b/test/fixtures/JSX/container-series.tree.json
@@ -341,24 +341,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 8,
- 9
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 8
- },
- "end": {
- "line": 1,
- "column": 9
- }
- }
- },
- {
- "type": "Punctuator",
"value": "{",
"range": [
9,
@@ -413,24 +395,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 11,
- 12
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 11
- },
- "end": {
- "line": 1,
- "column": 12
- }
- }
- },
- {
- "type": "Punctuator",
"value": "{",
"range": [
12,
@@ -485,24 +449,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 14,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 14
- },
- "end": {
- "line": 1,
- "column": 15
- }
- }
- },
- {
- "type": "Punctuator",
"value": "<",
"range": [
15,
@@ -574,4 +520,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/test/fixtures/JSX/simple-expression-container.tree.json b/test/fixtures/JSX/simple-expression-container.tree.json
index d29518f..7e7b0db 100644
--- a/test/fixtures/JSX/simple-expression-container.tree.json
+++ b/test/fixtures/JSX/simple-expression-container.tree.json
@@ -271,24 +271,6 @@
},
{
"type": "Punctuator",
- "value": "}",
- "range": [
- 16,
- 17
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 16
- },
- "end": {
- "line": 1,
- "column": 17
- }
- }
- },
- {
- "type": "Punctuator",
"value": "<",
"range": [
17,
@@ -360,4 +342,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/test/fixtures/JSX/template-literal.js b/test/fixtures/JSX/template-literal.js
new file mode 100644
index 0000000..cecd21e
--- /dev/null
+++ b/test/fixtures/JSX/template-literal.js
@@ -0,0 +1 @@
+<a>{`${1}`}</a>
diff --git a/test/fixtures/JSX/attribute-expression.tree.json b/test/fixtures/JSX/template-literal.tree.json
similarity index 66%
copy from test/fixtures/JSX/attribute-expression.tree.json
copy to test/fixtures/JSX/template-literal.tree.json
index c133973..17f04d4 100644
--- a/test/fixtures/JSX/attribute-expression.tree.json
+++ b/test/fixtures/JSX/template-literal.tree.json
@@ -26,132 +26,163 @@
}
},
"selfClosing": false,
- "attributes": [
- {
- "type": "JSXAttribute",
- "name": {
- "type": "JSXIdentifier",
- "name": "href",
- "range": [
- 3,
- 7
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 3
+ "attributes": [],
+ "range": [
+ 0,
+ 3
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 3
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "JSXExpressionContainer",
+ "expression": {
+ "type": "TemplateLiteral",
+ "quasis": [
+ {
+ "type": "TemplateElement",
+ "value": {
+ "raw": "",
+ "cooked": ""
},
- "end": {
- "line": 1,
- "column": 7
- }
- }
- },
- "value": {
- "type": "JSXExpressionContainer",
- "expression": {
- "type": "Identifier",
- "name": "link",
+ "tail": false,
"range": [
- 9,
- 13
+ 4,
+ 7
],
"loc": {
"start": {
"line": 1,
- "column": 9
+ "column": 4
},
"end": {
"line": 1,
- "column": 13
+ "column": 7
}
}
},
- "range": [
- 8,
- 14
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 8
+ {
+ "type": "TemplateElement",
+ "value": {
+ "raw": "",
+ "cooked": ""
},
- "end": {
- "line": 1,
- "column": 14
+ "tail": true,
+ "range": [
+ 8,
+ 10
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 10
+ }
}
}
- },
+ ],
+ "expressions": [
+ {
+ "type": "Literal",
+ "value": 1,
+ "raw": "1",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ }
+ ],
"range": [
- 3,
- 14
+ 4,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 3
+ "column": 4
},
"end": {
"line": 1,
- "column": 14
+ "column": 10
}
}
- }
- ],
- "range": [
- 0,
- 15
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 0
},
- "end": {
- "line": 1,
- "column": 15
+ "range": [
+ 3,
+ 11
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 3
+ },
+ "end": {
+ "line": 1,
+ "column": 11
+ }
}
}
- },
- "children": [],
+ ],
"closingElement": {
"type": "JSXClosingElement",
"name": {
"type": "JSXIdentifier",
"name": "a",
"range": [
- 17,
- 18
+ 13,
+ 14
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 13
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
},
"range": [
- 15,
- 19
+ 11,
+ 15
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 11
},
"end": {
"line": 1,
- "column": 19
+ "column": 15
}
}
},
"range": [
0,
- 19
+ 15
],
"loc": {
"start": {
@@ -160,13 +191,13 @@
},
"end": {
"line": 1,
- "column": 19
+ "column": 15
}
}
},
"range": [
0,
- 19
+ 15
],
"loc": {
"start": {
@@ -175,7 +206,7 @@
},
"end": {
"line": 1,
- "column": 19
+ "column": 15
}
}
}
@@ -183,7 +214,7 @@
"sourceType": "script",
"range": [
0,
- 19
+ 15
],
"loc": {
"start": {
@@ -192,7 +223,7 @@
},
"end": {
"line": 1,
- "column": 19
+ "column": 15
}
},
"tokens": [
@@ -233,38 +264,20 @@
}
},
{
- "type": "JSXIdentifier",
- "value": "href",
- "range": [
- 3,
- 7
- ],
- "loc": {
- "start": {
- "line": 1,
- "column": 3
- },
- "end": {
- "line": 1,
- "column": 7
- }
- }
- },
- {
"type": "Punctuator",
- "value": "=",
+ "value": ">",
"range": [
- 7,
- 8
+ 2,
+ 3
],
"loc": {
"start": {
"line": 1,
- "column": 7
+ "column": 2
},
"end": {
"line": 1,
- "column": 8
+ "column": 3
}
}
},
@@ -272,89 +285,89 @@
"type": "Punctuator",
"value": "{",
"range": [
- 8,
- 9
+ 3,
+ 4
],
"loc": {
"start": {
"line": 1,
- "column": 8
+ "column": 3
},
"end": {
"line": 1,
- "column": 9
+ "column": 4
}
}
},
{
- "type": "Identifier",
- "value": "link",
+ "type": "Template",
+ "value": "`${",
"range": [
- 9,
- 13
+ 4,
+ 7
],
"loc": {
"start": {
"line": 1,
- "column": 9
+ "column": 4
},
"end": {
"line": 1,
- "column": 13
+ "column": 7
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "Numeric",
+ "value": "1",
"range": [
- 13,
- 14
+ 7,
+ 8
],
"loc": {
"start": {
"line": 1,
- "column": 13
+ "column": 7
},
"end": {
"line": 1,
- "column": 14
+ "column": 8
}
}
},
{
- "type": "Punctuator",
- "value": "}",
+ "type": "Template",
+ "value": "}`",
"range": [
- 13,
- 14
+ 8,
+ 10
],
"loc": {
"start": {
"line": 1,
- "column": 13
+ "column": 8
},
"end": {
"line": 1,
- "column": 14
+ "column": 10
}
}
},
{
"type": "Punctuator",
- "value": ">",
+ "value": "}",
"range": [
- 14,
- 15
+ 10,
+ 11
],
"loc": {
"start": {
"line": 1,
- "column": 14
+ "column": 10
},
"end": {
"line": 1,
- "column": 15
+ "column": 11
}
}
},
@@ -362,17 +375,17 @@
"type": "Punctuator",
"value": "<",
"range": [
- 15,
- 16
+ 11,
+ 12
],
"loc": {
"start": {
"line": 1,
- "column": 15
+ "column": 11
},
"end": {
"line": 1,
- "column": 16
+ "column": 12
}
}
},
@@ -380,17 +393,17 @@
"type": "Punctuator",
"value": "/",
"range": [
- 16,
- 17
+ 12,
+ 13
],
"loc": {
"start": {
"line": 1,
- "column": 16
+ "column": 12
},
"end": {
"line": 1,
- "column": 17
+ "column": 13
}
}
},
@@ -398,17 +411,17 @@
"type": "JSXIdentifier",
"value": "a",
"range": [
- 17,
- 18
+ 13,
+ 14
],
"loc": {
"start": {
"line": 1,
- "column": 17
+ "column": 13
},
"end": {
"line": 1,
- "column": 18
+ "column": 14
}
}
},
@@ -416,17 +429,17 @@
"type": "Punctuator",
"value": ">",
"range": [
- 18,
- 19
+ 14,
+ 15
],
"loc": {
"start": {
"line": 1,
- "column": 18
+ "column": 14
},
"end": {
"line": 1,
- "column": 19
+ "column": 15
}
}
}
diff --git a/test/grammar-tests.js b/test/grammar-tests.js
index 804eb1b..2c81ea7 100644
--- a/test/grammar-tests.js
+++ b/test/grammar-tests.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/hostile-environment-tests.js b/test/hostile-environment-tests.js
index a328279..7ae44b4 100644
--- a/test/hostile-environment-tests.js
+++ b/test/hostile-environment-tests.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/profile.js b/test/profile.js
index d9430c5..86548f5 100644
--- a/test/profile.js
+++ b/test/profile.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/regression-tests.js b/test/regression-tests.js
index b8c5170..2958536 100644
--- a/test/regression-tests.js
+++ b/test/regression-tests.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/unit-tests.js b/test/unit-tests.js
index f608ba0..2dbb9e7 100644
--- a/test/unit-tests.js
+++ b/test/unit-tests.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/utils/create-testcases.js b/test/utils/create-testcases.js
index 53aebbb..d646306 100644
--- a/test/utils/create-testcases.js
+++ b/test/utils/create-testcases.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/utils/error-to-object.js b/test/utils/error-to-object.js
index e30ff9b..2091de8 100644
--- a/test/utils/error-to-object.js
+++ b/test/utils/error-to-object.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/test/utils/evaluate-testcase.js b/test/utils/evaluate-testcase.js
index d997259..8e8370c 100644
--- a/test/utils/evaluate-testcase.js
+++ b/test/utils/evaluate-testcase.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/tools/fixupbundle.js b/tools/fixupbundle.js
index 789141e..d74c261 100644
--- a/tools/fixupbundle.js
+++ b/tools/fixupbundle.js
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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:
diff --git a/tools/generate-fixtures.js b/tools/generate-fixtures.js
index bdfe993..4305c0b 100644
--- a/tools/generate-fixtures.js
+++ b/tools/generate-fixtures.js
@@ -1,5 +1,5 @@
/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+ 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
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-esprima.git
More information about the Pkg-javascript-commits
mailing list