power-assert-runtime icon indicating copy to clipboard operation
power-assert-runtime copied to clipboard

throws with object spread operator in assertion expression

Open nfcampos opened this issue 8 years ago • 6 comments

Description

const obj = {a: 1}
t.true(obj == {...obj})

throws the following exception

SyntaxError: Unexpected token (1:16)
    at Parser.pp.raise (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:943:13)
    at Parser.pp.unexpected (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:1503:8)
    at Parser.pp.parseIdent (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:670:10)
    at Parser.parseIdent (/Users/nuno/cp/j2/node_modules/acorn-es7-plugin/acorn-es7-plugin.js:93:19)
    at Parser.pp.parsePropertyName (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:554:127)
    at Parser.parsePropertyName (/Users/nuno/cp/j2/node_modules/acorn-es7-plugin/acorn-es7-plugin.js:219:19)
    at Parser.pp.parseObj (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:500:10)
    at Parser.pp.parseExprAtom (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:310:19)
    at Parser.parseExprAtom (/Users/nuno/cp/j2/node_modules/acorn-es7-plugin/acorn-es7-plugin.js:109:21)
    at Parser.pp.parseExprSubscripts (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:216:19)
    at Parser.pp.parseMaybeUnary (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:197:19)
    at Parser.pp.parseExprOp (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:173:42)
    at Parser.pp.parseExprOps (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:153:15)
    at Parser.pp.parseMaybeConditional (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:133:19)
    at Parser.pp.parseMaybeAssign (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:110:19)
    at Parser.pp.parseExprList (/Users/nuno/cp/j2/node_modules/power-assert-formatter/node_modules/acorn/dist/acorn.js:651:185)

nfcampos avatar May 19 '16 21:05 nfcampos

@nfcampos Thank you for reporting! I assume that you are using AVA. I'm going to fix this.

twada avatar May 21 '16 02:05 twada

Originally reported here: https://github.com/avajs/ava/issues/797

Hey @twada! 😃

jamestalmage avatar May 21 '16 03:05 jamestalmage

Hey @twada , any update on this? I see you made a commit but it doesn't seem to work. babylon still throws Unexpected token error. I'm guessing it needs babel-plugin-transform-object-rest-spread plugin to work

dbettini avatar Oct 11 '17 17:10 dbettini

@dbettini Thanks and I forgot to close this issue since this is fixed a year ago.

On Babel6, you can use object spread operator by setting embedAst: true to babel-plugin-espower. Would you try it? If it doesn't work. Would you give me a small reproduction case in a form of github repository or gist?

On Babel7, I need a tiny fix to run experimental features so please keep in touch. I'll release it in a few days.

twada avatar Oct 12 '17 02:10 twada

@twada since I'm using AVA, I just added babel-plugin-transform-object-rest-spread plugin by extending ava config in package.json

dbettini avatar Oct 13 '17 11:10 dbettini

@dbettini FYI https://github.com/avajs/ava/issues/1554

twada avatar Oct 18 '17 04:10 twada