Skip to content

recast.print modifies original source adding brackets around some statements #1191

Open
@phoenisx

Description

@phoenisx

Ref: facebook/jscodeshift#176

For e.g. Let's consider the following source code as input passed to recast.print();

const code = [
  "async function add(a, b) {",
  "  const z = foo || await getFoo();",
  "  return z;",
  "}"
].join("\n");

const ast = recast.parse(code);
recast.print(ast);

Behaviour:

Prints a modified code, with await getFoo() surrounded by parentheses (normal brackets).

// PrintResult {
//   code: 'async function add(a, b) {\n' +
//     '  const z = foo || (await getFoo());\n' +
//     '  return z;\n' +
//     '}'
// }

Expected Behaviour:

Should not contain parenthesis if they were not present in the original code.

// PrintResult {
//   code: 'async function add(a, b) {\n' +
//     '  const z = foo || await getFoo();\n' +
//     '  return z;\n' +
//     '}'
// }

If there are any restrictions in supporting this, can it be possible to put this "adding auto parentheses" feature behind a recast options toggle?

Also if you need any support, I can work on this issue with some guidance 👍🏽
Thanks for all your efforts and creating this awesome library 🙇🏽 💯

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions