Fix spacing of op followed by comment
diff --git a/src/stable.rs b/src/stable.rs
index ad9870c..7bcdaad 100644
--- a/src/stable.rs
+++ b/src/stable.rs
@@ -1198,6 +1198,11 @@
}
fn op_char(input: Cursor) -> PResult<char> {
+ if input.starts_with("//") || input.starts_with("/*") {
+ // Do not accept `/` of a comment as an op.
+ return Err(LexError);
+ }
+
let mut chars = input.chars();
let first = match chars.next() {
Some(ch) => ch,
diff --git a/tests/test.rs b/tests/test.rs
index caed47c..5ed21a4 100644
--- a/tests/test.rs
+++ b/tests/test.rs
@@ -2,7 +2,7 @@
use std::str::{self, FromStr};
-use proc_macro2::{Literal, Span, Term, TokenStream, TokenTree};
+use proc_macro2::{Literal, Spacing, Span, Term, TokenStream, TokenTree};
#[test]
fn terms() {
@@ -294,6 +294,18 @@
}
#[test]
+fn op_before_comment() {
+ let mut tts = TokenStream::from_str("~// comment").unwrap().into_iter();
+ match tts.next().unwrap() {
+ TokenTree::Op(tt) => {
+ assert_eq!(tt.op(), '~');
+ assert_eq!(tt.spacing(), Spacing::Alone);
+ }
+ wrong => panic!("wrong token {:?}", wrong),
+ }
+}
+
+#[test]
fn raw_identifier() {
let mut tts = TokenStream::from_str("r#dyn").unwrap().into_iter();
match tts.next().unwrap() {