I have not minimized this yet but in TeXitoi/structopt#88 we are seeing inexplicable behavior when iterating over tokens of a struct field doc comment. Related to #49545 so mentioning @alexcrichton.
One of their test cases contains the following struct.
/// Lorem ipsum
#[derive(StructOpt, PartialEq, Debug)]
struct LoremIpsum {
/// Fooify a bar
/// and a baz
#[structopt(short = "f", long = "foo")]
foo: bool,
}
Within their macro implementation we are seeing the desugared doc comment of /// Fooify a bar having an Alone spacing:
Op(Op { op: '=', spacing: Alone, span: Span(Span { lo: BytePos(0), hi: BytePos(0), ctxt: #0 }) })
Literal(Literal(Literal(Str_(/// Fooify a bar), None)))
while the desugared /// and a baz has a Joint spacing. I believe the Joint is incorrect because only an Op followed by another Op should be able to have Joint spacing.
Op(Op { op: '=', spacing: Joint, span: Span(Span { lo: BytePos(0), hi: BytePos(0), ctxt: #0 }) })
Literal(Literal(Literal(Str_(/// and a baz), None)))
I stuck the following loop at the top of their derive entry point:
for tt in input.clone() {
println!("{:#?}", tt);
}
and it indicates that the first doc comment has kind: Tree while the second has kind: JointTree.
TokenStream {
kind: Tree(
Token(
Span {
lo: BytePos(
0
),
hi: BytePos(
0
),
ctxt: #0
},
DocComment(
/// Fooify a bar
)
)
)
},
TokenStream {
kind: JointTree(
Token(
Span {
lo: BytePos(
0
),
hi: BytePos(
0
),
ctxt: #0
},
DocComment(
/// and a baz
)
)
)
},
I have not minimized this yet but in TeXitoi/structopt#88 we are seeing inexplicable behavior when iterating over tokens of a struct field doc comment. Related to #49545 so mentioning @alexcrichton.
One of their test cases contains the following struct.
Within their macro implementation we are seeing the desugared doc comment of
/// Fooify a barhaving an Alone spacing:while the desugared
/// and a bazhas a Joint spacing. I believe the Joint is incorrect because only an Op followed by another Op should be able to have Joint spacing.I stuck the following loop at the top of their derive entry point:
and it indicates that the first doc comment has
kind: Treewhile the second haskind: JointTree.