From d3e987896c5682fccdeb94d634361a6cbfb78be2 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 20 Nov 2014 19:46:47 +1100 Subject: [PATCH 1/4] Fix spread attributes within elements inside expression containers --- acorn.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/acorn.js b/acorn.js index 419afd10ae..1d357e5133 100644 --- a/acorn.js +++ b/acorn.js @@ -3169,13 +3169,14 @@ if (tokType === _braceL) { var tokStart1 = tokStart, tokStartLoc1 = tokStartLoc; - var origInXJSTag = inXJSTag; - inXJSTag = false; + var origInXJSTag = inXJSTag, origInXJSChildExpression = inXJSChildExpression; + inXJSTag = inXJSChildExpression = false; next(); if (tokType !== _ellipsis) unexpected(); var node = parseMaybeUnary(); + inXJSChildExpression = origInXJSChildExpression; inXJSTag = origInXJSTag; expect(_braceR); From 20a5d62ac643d165144c240a2f5744da86c646f8 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 20 Nov 2014 21:07:03 +1100 Subject: [PATCH 2/4] Add regression test for #5 --- test/tests-jsx.js | 77 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/test/tests-jsx.js b/test/tests-jsx.js index d7b58acb94..d0348a253e 100644 --- a/test/tests-jsx.js +++ b/test/tests-jsx.js @@ -3303,6 +3303,83 @@ var fbTestFixture = { } ] } + }, + + '
{
}
': { + type: 'Program', + start: 0, + end: 30, + body: [{ + type: 'ExpressionStatement', + start: 0, + end: 30, + expression: { + type: 'XJSElement', + start: 0, + 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', + 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' + } + } + ], + name: { + type: 'XJSIdentifier', + start: 7, + end: 10, + name: 'div' + }, + selfClosing: true + }, + closingElement: null, + children: [] + } + }] + } + }] } } }; From 29c028acf92422c40dce417718374a3d68d141a0 Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Wed, 19 Nov 2014 18:54:15 +0200 Subject: [PATCH 3/4] Temporarily disable JSX parser. --- test/run.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/run.js b/test/run.js index 4075bc55fb..f394353d1e 100644 --- a/test/run.js +++ b/test/run.js @@ -50,7 +50,7 @@ config: { parse: (typeof require === "undefined" ? window.acorn : require("../acorn.js")).parse } - }, + }/*, Loose: { config: { parse: (typeof require === "undefined" ? window.acorn : require("../acorn_loose")).parse_dammit, @@ -62,7 +62,7 @@ return (opts.ecmaVersion || 5) <= 6; } } - } + }*/ }; function report(state, code, message) { From 731984ebc7ef899d357bba868a2b1a8efa000fec Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Thu, 20 Nov 2014 12:23:49 +0200 Subject: [PATCH 4/4] Update version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e8cc1b2784..15f0240dff 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-3", + "version": "0.9.1-4", "maintainers": [ { "name": "Marijn Haverbeke",