Skip to content

[Bug]: @babel/generator parse error with the typescript when enable the compact opts #14383

@shanli

Description

@shanli

💻

  • Would you like to work on a fix?

How are you using Babel?

Programmatic API (babel.transform, babel.parse)

Input code

let ast = require("@babel/parser").parse("type NamedStyles<T> = { [P in keyof T]: ViewStyle | TextStyle | ImageStyle };", {
  sourceType: "module",
  plugins: [
    "jsx",
    "typescript"
  ]
});
var generator =  require("@babel/generator")
const output = generator.default(ast, { compact: true})

let newAst = require("@babel/parser").parse(output.code, {
  sourceType: "module",
  plugins: [
    // enable jsx and flow syntax
    "jsx",
    "typescript"
  ]
})
console.log(newAst)

Configuration file name

No response

Configuration

No response

Current and expected behavior

current behavior:

/Documents/test/node_modules/@babel_parser@7.17.8@@babel/parser/lib/index.js:3338
    if (!this.options.errorRecovery) throw error;
                                     ^

SyntaxError: Unexpected token, expected "," (1:18)
    at instantiate (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:72:32)
    at constructor (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:358:12)
    at Object.raise (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:3334:19)
    at Object.unexpected (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:3372:16)
    at Object.expect (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:4001:28)
    at Object.tsParseDelimitedListWorker (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:8495:14)
    at Object.tsParseDelimitedList (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:8464:25)
    at Object.tsParseBracketedList (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:8517:25)
    at Object.tsParseTypeParameters (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:8631:24)
    at Object.tsTryParseTypeParameters (/Documents/test/node_modules/_@babel_parser@7.17.8@@babel/parser/lib/index.js:8615:19) {
  code: 'BABEL_PARSER_SYNTAX_ERROR',
  reasonCode: 'UnexpectedToken',
  loc: Position { line: 1, column: 18, index: 18 },
  pos: [Getter/Setter]
}

expected behavior:

Node {
  type: 'File',
  start: 0,
  end: 70,
  loc: SourceLocation {
    start: Position { line: 1, column: 0, index: 0 },
    end: Position { line: 1, column: 70, index: 70 },
    filename: undefined,
    identifierName: undefined
  },
  errors: [],
  program: Node {
    type: 'Program',
    start: 0,
    end: 70,
    loc: SourceLocation {
      start: [Position],
      end: [Position],
      filename: undefined,
      identifierName: undefined
    },
    sourceType: 'module',
    interpreter: null,
    body: [ [Node] ],
    directives: []
  },
  comments: []
}

Environment

  • babel-parser:7.17.8
  • babel-generator:7.17.7
  • node: v14.17.5

Possible solution

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: typescriptoutdatedA closed issue/PR that is archived due to age. Recommended to make a new issuepkg: parser

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions