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() {