author | Alan Dipert
<alan@dipert.org> 2020-02-24 03:16:19 UTC |
committer | Alan Dipert
<alan@dipert.org> 2020-02-24 03:16:19 UTC |
parent | 5bf893d00970ade7db186764edd96fd9eca2446f |
jacl.js | +20 | -8 |
diff --git a/jacl.js b/jacl.js index 06860f8..b6add60 100644 --- a/jacl.js +++ b/jacl.js @@ -2010,15 +2010,27 @@ JACLPKG.intern('.') ); } else if (List.isProperList(op)) { const [meth, ...args] = op - return Cons.listOf( - JACLPKG.intern("%CALL"), - Cons.listOf( + if (meth.name === '=') { + if (args.length !== 1) { + throw new Error(`Assignment syntax accepts only one value`); + } + return Cons.listOf( JACLPKG.intern("%JS"), - `((~{}).${meth.name})`, - form - ), - ...args - ) + env.context === 'stmt' ? `~{}=~{};\n` : `(~{}=~{})`, + form, + args[0] + ); + } else { + return Cons.listOf( + JACLPKG.intern("%CALL"), + Cons.listOf( + JACLPKG.intern("%JS"), + `((~{}).${meth.name})`, + form + ), + ...args + ); + } } else { throw new Error(`Unknown op: ${op}`); }