Skip to content

Parsing expression a.0.1 doesn't have the right spans #1433

@tjhance

Description

@tjhance

When syn parses an expression like a.0.1, the resulting Member objects don't have spans I expect.

Expr::Field {
    attrs: [],
    base: Expr::Field {
        attrs: [],
        base: Expr::Path {
            attrs: [],
            qself: None,
            path: Path {
                leading_colon: None,
                segments: [
                    PathSegment {
                        ident: Ident {
                            ident: "a",
                            span: #0 bytes(95..96),
                        },
                        arguments: PathArguments::None,
                    },
                ],
            },
        },
        dot_token: Dot,
        member: Member::Unnamed(
            Index {
                index: 0,
                span: #5 bytes(0..102),  ////////////////// this span isn't what I expect
            },
        ),
    },
    dot_token: Dot,
    member: Member::Unnamed(
        Index {
            index: 1,
            span: #5 bytes(0..102), ////////////////// this span isn't what I expect
        },
    ),
}

By contrast, x.0 is parsed with the spans that I'd expect:

Expr::Field {
    attrs: [],
    base: Expr::Path {
        attrs: [],
        qself: None,
        path: Path {
            leading_colon: None,
            segments: [
                PathSegment {
                    ident: Ident {
                        ident: "a",
                        span: #0 bytes(95..96),
                    },
                    arguments: PathArguments::None,
                },
            ],
        },
    },
    dot_token: Dot,
    member: Member::Unnamed(
        Index {
            index: 0,
            span: #0 bytes(97..98),     ////////////////// this span is what I expect
        },
    ),
}

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