Skip to content

Broken parens on return statement #365

@retrohacker

Description

@retrohacker

Repro

escodegen strips parenthesis from return statements, changing the behavior of the code. This breaks ast serialization/deserialization for react here.

var acorn = require('acorn');
var escodegen = require('escodegen');

var file = `
console.log((function () {
    return (
        // do a thing
        'hello world'
    );
})());
`;

var tokens = [];
var comments = [];

var ast = acorn.parse(file,
    {
        onToken: tokens,
        onComment: comments,
        ranges: true,
    });
escodegen.attachComments(ast, comments, tokens);
console.log(escodegen.generate(ast, { comment: true }));

Output

original

console.log((function () {
    return (
        // do a thing
        'hello world'
    );
})());
hello world

generated

console.log(function () {
    return // do a thing
    'hello world';
}());
undefined

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions