From 2032a9d1268c9900a3cb12e02079f50f49a607c2 Mon Sep 17 00:00:00 2001 From: Gold Holk <85619andy@gmail.com> Date: Fri, 7 Dec 2018 02:37:57 +0800 Subject: [PATCH] Fix object literal enable multiple lines (#1328) (#1349) * Allow object literal expression be multiple lines * Add test for multiple lines object literal --- src/expression/parse.js | 2 ++ test/expression/parse.test.js | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/expression/parse.js b/src/expression/parse.js index 9b08ff6ab..72cae03db 100644 --- a/src/expression/parse.js +++ b/src/expression/parse.js @@ -1511,6 +1511,7 @@ function factory (type, config, load, typed) { */ function parseObject (state) { if (state.token === '{') { + openParams(state) let key const properties = {} @@ -1545,6 +1546,7 @@ function factory (type, config, load, typed) { if (state.token !== '}') { throw createSyntaxError(state, 'Comma , or bracket } expected after object value') } + closeParams(state) getToken(state) let node = new ObjectNode(properties) diff --git a/test/expression/parse.test.js b/test/expression/parse.test.js index 27eb928ec..781edddb3 100644 --- a/test/expression/parse.test.js +++ b/test/expression/parse.test.js @@ -815,6 +815,10 @@ describe('parse', function () { assert.deepStrictEqual(parseAndEval('{}'), {}) }) + it('should spread a object over multiple lines', function () { + assert.deepStrictEqual(parseAndEval('{\na:2+3,\nb:"foo"\n}'), { a: 5, b: 'foo' }) + }) + it('should create an object with quoted keys', function () { assert.deepStrictEqual(parseAndEval('{"a":2+3,"b":"foo"}'), { a: 5, b: 'foo' }) })