Skip to content

括弧を含む式のプロパティアクセスの挙動がおかしい #440

@arakur

Description

@arakur

以下のように連続するプロパティアクセスの途中の部分を括弧で囲った場合,括弧内のプロパティアクセスがすべて無視されてしまうようです:

コード

let foo = {
    bar: {
        baz: {
            qux: "well done"
        }
    }
    qux: "wtf"
}
<: foo.bar.baz.qux
<: (foo.bar.baz).qux

想定される出力

"well done"
"well done"

出力

"well done"
"wtf"

パーサ出力

[
  {
    "type": "def",
    /* 略 */
  },
  {
    "type": "call",
    "target": {
      /* 略 */
    },
    "args": [
      {
        "type": "prop",
        "target": {
          "type": "prop",
          "target": {
            "type": "prop",
            "target": {
              "type": "identifier",
              "name": "foo",
              "loc": {
                "start": 103,
                "end": 105
              }
            },
            "name": "bar",
            "loc": {
              "start": 106,
              "end": 109
            }
          },
          "name": "baz",
          "loc": {
            "start": 110,
            "end": 113
          }
        },
        "name": "qux",
        "loc": {
        "loc": {
          "start": 114,
          "end": 117
        }
      }
    ],
    "loc": {
      "start": 100,
      "end": 117
    }
  },
  {
    "type": "call",
    "target": {
      /* 略 */
    },
    "args": [
      {
        "type": "prop",
        "target": {
          "type": "identifier",
          "name": "foo",
          "loc": {
            "start": 123,
            "end": 125
          }
        },
        "name": "qux",
        "loc": {
          "start": 135,
          "end": 138
        }
      }
    ],
    "loc": {
      "start": 119,
      "end": 138
    }
  }
]

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions