From 5aee3ba48e6fe001e99afc714dc355c5b047a14d Mon Sep 17 00:00:00 2001 From: Harminder Date: Fri, 26 Jan 2018 19:28:34 +0530 Subject: [PATCH] fix(memberexpression): parse nested memberexpression fix #21 --- src/Expressions/MemberExpression.js | 2 +- test/unit/member-expression.spec.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Expressions/MemberExpression.js b/src/Expressions/MemberExpression.js index fcbf3f4..6e6d926 100644 --- a/src/Expressions/MemberExpression.js +++ b/src/Expressions/MemberExpression.js @@ -44,7 +44,7 @@ class MemberExpression extends BaseExpression { } this._tokens.members.push({ - value: this._lexer.parseStatement(member.property), + value: this._lexer.parse(member.property), computed: member.computed }) } diff --git a/test/unit/member-expression.spec.js b/test/unit/member-expression.spec.js index 14d6dfc..c952469 100644 --- a/test/unit/member-expression.spec.js +++ b/test/unit/member-expression.spec.js @@ -97,4 +97,10 @@ test.group('Member Expression', (group) => { this.exp.parse(esprima.parse(statement).body[0].expression) assert.equal(this.exp.toStatement(), `this.context.accessChild(this.context.resolve('users'), [this.context.resolve('username'),'age'])`) }) + + test('should be able to parse a nested computed expression', (assert) => { + const statement = `users[username.prop]` + this.exp.parse(esprima.parse(statement).body[0].expression) + assert.equal(this.exp.toStatement(), `this.context.accessChild(this.context.resolve('users'), [this.context.accessChild(this.context.resolve('username'), ['prop'])])`) + }) })