Skip to content

Incorrectly parsed labeled statement #259

@helixbass

Description

@helixbass

The following piece of code is valid but it is parsed incorrectly:

if (foo) { bar: 'baz' }

Here's a link to the TypeScript Playground showing that the snippet above is valid JavaScript or TypeScript:

https://www.typescriptlang.org/play?#code/JYMwBAFCD20JRgN5gEYEMBOAuMBydAXrmAL5A

The output of tree-sitter parse is the following:

(program [0, 0] - [1, 0]
  (if_statement [0, 0] - [0, 23]
    condition: (parenthesized_expression [0, 3] - [0, 8]
      (identifier [0, 4] - [0, 7]))
    consequence: (expression_statement [0, 9] - [0, 23]
      (object [0, 9] - [0, 23]
        (pair [0, 11] - [0, 21]
          key: (property_identifier [0, 11] - [0, 14])
          value: (string [0, 16] - [0, 21]
            (string_fragment [0, 17] - [0, 20])))))))

It looks like this should be parsing as a block with a labeled statement but it is parsing as an object literal

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions