From f3f49cee80c34ce4fc1223cb059231a1b67b8e0b Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 20 Nov 2014 21:38:16 +1100 Subject: [PATCH 1/2] Fix #5 regression text --- test/tests-jsx.js | 123 ++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 64 deletions(-) diff --git a/test/tests-jsx.js b/test/tests-jsx.js index d0348a253e..39b1b0a112 100644 --- a/test/tests-jsx.js +++ b/test/tests-jsx.js @@ -3306,80 +3306,75 @@ var fbTestFixture = { }, '
{
}
': { - type: 'Program', + type: 'ExpressionStatement', start: 0, end: 30, - body: [{ - type: 'ExpressionStatement', + expression: { + type: 'XJSElement', start: 0, end: 30, - expression: { - type: 'XJSElement', + openingElement: { + type: 'XJSOpeningElement', start: 0, + end: 5, + attributes: [], + name: { + type: 'XJSIdentifier', + start: 1, + end: 4, + name: 'div' + }, + selfClosing: false + }, + closingElement: { + type: 'XJSClosingElement', + start: 24, end: 30, - openingElement: { - type: 'XJSOpeningElement', - start: 0, - end: 5, - attributes: [], - name: { - type: 'XJSIdentifier', - start: 1, - end: 4, - name: 'div' - }, - selfClosing: false - }, - closingElement: { - type: 'XJSClosingElement', - start: 24, - end: 30, - name: { - type: 'XJSIdentifier', - start: 26, - end: 29, - name: 'div' - } - }, - children: [{ - type: 'XJSExpressionContainer', - start: 5, - end: 24, - expression: { - type: 'XJSElement', + name: { + type: 'XJSIdentifier', + start: 26, + end: 29, + name: 'div' + } + }, + children: [{ + type: 'XJSExpressionContainer', + start: 5, + end: 24, + expression: { + type: 'XJSElement', + start: 6, + end: 23, + openingElement: { + type: 'XJSOpeningElement', start: 6, end: 23, - openingElement: { - type: 'XJSOpeningElement', - start: 6, - end: 23, - attributes: [ - { - type: 'XJSSpreadAttribute', - start: 11, - end: 20, - argument: { - type: 'Identifier', - start: 15, - end: 19, - name: 'test' - } + attributes: [ + { + type: 'XJSSpreadAttribute', + start: 11, + end: 20, + argument: { + type: 'Identifier', + start: 15, + end: 19, + name: 'test' } - ], - name: { - type: 'XJSIdentifier', - start: 7, - end: 10, - name: 'div' - }, - selfClosing: true + } + ], + name: { + type: 'XJSIdentifier', + start: 7, + end: 10, + name: 'div' }, - closingElement: null, - children: [] - } - }] - } - }] + selfClosing: true + }, + closingElement: null, + children: [] + } + }] + } } } }; From 7a3683de2b406762dfb42e0f3d5036a033f02a4b Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Sat, 22 Nov 2014 11:51:28 +0200 Subject: [PATCH 2/2] Fix space not being skipped after object literal inside expression container. Fixes #7. --- acorn.js | 9 ++++--- package.json | 2 +- test/tests-jsx.js | 66 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/acorn.js b/acorn.js index 1d357e5133..f777a4e39c 100644 --- a/acorn.js +++ b/acorn.js @@ -2549,6 +2549,8 @@ function parseObj() { var node = startNode(), first = true, propHash = {}; node.properties = []; + var origInXJSChildExpression = inXJSChildExpression; + inXJSChildExpression = false; next(); while (!eat(_braceR)) { if (!first) { @@ -2584,9 +2586,10 @@ checkPropClash(prop, propHash); node.properties.push(finishNode(prop, "Property")); - } + } + inXJSChildExpression = origInXJSChildExpression; return finishNode(node, "ObjectExpression"); - } + } function parsePropertyName(prop) { if (options.ecmaVersion >= 6) { @@ -3158,7 +3161,7 @@ inXJSTag = origInXJSTag; inXJSChild = origInXJSChild; inXJSChildExpression = false; - + expect(_braceR); return finishNode(node, "XJSExpressionContainer"); } diff --git a/package.json b/package.json index 15f0240dff..1ae847636b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "acorn-jsx", "description": "Alternative React JSX parser", "main": "acorn.js", - "version": "0.9.1-4", + "version": "0.9.1-5", "maintainers": [ { "name": "Marijn Haverbeke", diff --git a/test/tests-jsx.js b/test/tests-jsx.js index 39b1b0a112..a07f0aea2e 100644 --- a/test/tests-jsx.js +++ b/test/tests-jsx.js @@ -3375,6 +3375,72 @@ var fbTestFixture = { } }] } + }, + + '
{ {a} }
': { + type: "ExpressionStatement", + start: 0, + end: 18, + expression: { + type: "XJSElement", + start: 0, + end: 18, + openingElement: { + type: "XJSOpeningElement", + start: 0, + end: 5, + attributes: [], + name: { + type: "XJSIdentifier", + start: 1, + end: 4, + name: "div" + }, + selfClosing: false + }, + closingElement: { + type: "XJSClosingElement", + start: 12, + end: 18, + name: { + type: "XJSIdentifier", + start: 14, + end: 17, + name: "div" + } + }, + children: [{ + type: "XJSExpressionContainer", + start: 5, + end: 12, + expression: { + type: "ObjectExpression", + start: 7, + end: 10, + properties: [{ + type: "Property", + start: 8, + end: 9, + method: false, + shorthand: true, + computed: false, + key: { + type: "Identifier", + start: 8, + end: 9, + name: "a" + }, + kind: "init", + value: { + type: "Identifier", + start: 8, + end: 9, + name: "a" + } + }] + } + }] + } } } };