jsx / JSX

JSX - a faster, safer, easier JavaScript
http://jsx.github.io/
MIT License
1.46k stars 102 forks source link

`Invalid left-hand side in assignment` by optimizer #328

Closed tuchida closed 10 years ago

tuchida commented 10 years ago

Compile the code.

$ ./bin/jsx --optimize release --minify ../test.jsx
class _Main {

    static function fn(a : number) : void {
        ++a;
        log a;
    }

    static function main(args : string[]) : void {
        _Main.fn(1);
    }
}

Failed to compile.

/path/JSX/node_modules/esprima/esprima.js:3872
            throw e;
                  ^
Error: Line 189: Invalid left-hand side in assignment
    at throwError (/path/JSX/node_modules/esprima/esprima.js:1161:21)
    at throwErrorTolerant (/path/JSX/node_modules/esprima/esprima.js:1172:24)
    at parseUnaryExpression (/path/JSX/node_modules/esprima/esprima.js:1749:17)
    at parseMultiplicativeExpression (/path/JSX/node_modules/esprima/esprima.js:1790:20)
    at parseAdditiveExpression (/path/JSX/node_modules/esprima/esprima.js:1807:20)
    at parseShiftExpression (/path/JSX/node_modules/esprima/esprima.js:1824:20)
    at parseRelationalExpression (/path/JSX/node_modules/esprima/esprima.js:1845:16)
    at parseEqualityExpression (/path/JSX/node_modules/esprima/esprima.js:1863:20)
    at parseBitwiseANDExpression (/path/JSX/node_modules/esprima/esprima.js:1880:20)
    at parseBitwiseXORExpression (/path/JSX/node_modules/esprima/esprima.js:1896:20)

Optimized code is this.

function _Main$main$AS(args) {
    ++1;
};

I think this is optimizer bug.

kazuho commented 10 years ago

Thank you for reporting the issue. Confirmed as bug.