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
},
),
}
When syn parses an expression like
a.0.1, the resultingMemberobjects don't have spans I expect.By contrast,
x.0is parsed with the spans that I'd expect: