Skip to content

Improve spans of Expr::Field parsed from a float Literal#1436

Merged
dtolnay merged 1 commit intomasterfrom
floatsubspan
Apr 1, 2023
Merged

Improve spans of Expr::Field parsed from a float Literal#1436
dtolnay merged 1 commit intomasterfrom
floatsubspan

Conversation

@dtolnay
Copy link
Owner

@dtolnay dtolnay commented Apr 1, 2023

Fixes #1433.

a.0.1 before:

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),
            },
        ),
    },
    dot_token: Dot,
    member: Member::Unnamed(
        Index {
            index: 1,
            span: #5 bytes(0..102),
        },
    ),
}
TokenStream [
    Ident {
        ident: "a",
        span: #0 bytes(95..96),
    },
    Punct {
        ch: '.',
        spacing: Alone,
        span: #0 bytes(96..97),
    },
    Literal {
        kind: Integer,
        symbol: "0",
        suffix: None,
        span: #5 bytes(0..102),
    },
    Punct {
        ch: '.',
        spacing: Alone,
        span: #0 bytes(97..100),
    },
    Literal {
        kind: Integer,
        symbol: "1",
        suffix: None,
        span: #5 bytes(0..102),
    },
]

a.0.1 after:

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: #0 bytes(97..98),
            },
        ),
    },
    dot_token: Dot,
    member: Member::Unnamed(
        Index {
            index: 1,
            span: #0 bytes(99..100),
        },
    ),
}
TokenStream [
    Ident {
        ident: "a",
        span: #0 bytes(95..96),
    },
    Punct {
        ch: '.',
        spacing: Alone,
        span: #0 bytes(96..97),
    },
    Literal {
        kind: Integer,
        symbol: "0",
        suffix: None,
        span: #0 bytes(97..98),
    },
    Punct {
        ch: '.',
        spacing: Alone,
        span: #0 bytes(98..99),
    },
    Literal {
        kind: Integer,
        symbol: "1",
        suffix: None,
        span: #0 bytes(99..100),
    },
]

@dtolnay dtolnay merged commit 9aae2b4 into master Apr 1, 2023
@dtolnay dtolnay deleted the floatsubspan branch April 1, 2023 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant