about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAmos Wenger <amoswenger@gmail.com>2022-07-21 18:48:19 +0200
committerAmos Wenger <amoswenger@gmail.com>2022-07-21 18:48:19 +0200
commit941416a1d6a07141dd25eaf608d8fa47ad8a4dec (patch)
tree8f759922f9789c0729a0e2311090dece72c12b89
parent9cf99a9c71348c1ed53b6dda7da89d5ad0774b08 (diff)
downloadrust-941416a1d6a07141dd25eaf608d8fa47ad8a4dec.tar.gz
rust-941416a1d6a07141dd25eaf608d8fa47ad8a4dec.zip
Add test for idents incl. raw idents
-rw-r--r--crates/proc-macro-srv/src/tests/mod.rs15
-rw-r--r--crates/proc-macro-test/imp/src/lib.rs11
2 files changed, 25 insertions, 1 deletions
diff --git a/crates/proc-macro-srv/src/tests/mod.rs b/crates/proc-macro-srv/src/tests/mod.rs
index 94c27fad30b..1277106d71d 100644
--- a/crates/proc-macro-srv/src/tests/mod.rs
+++ b/crates/proc-macro-srv/src/tests/mod.rs
@@ -85,6 +85,20 @@ fn test_fn_like_mk_literals() {
 }
 
 #[test]
+fn test_fn_like_mk_idents() {
+    // FIXME: this test is wrong: raw should be 'r#raw' but ABIs 1.64 and below
+    // simply ignore `is_raw` when implementing the `Ident` interface.
+    assert_expand(
+        "fn_like_mk_idents",
+        r#""#,
+        expect![[r#"
+            SUBTREE $
+              IDENT   standard 4294967295
+              IDENT   raw 4294967295"#]],
+    );
+}
+
+#[test]
 fn test_fn_like_macro_clone_literals() {
     assert_expand(
         "fn_like_clone_tokens",
@@ -134,6 +148,7 @@ fn list_test_macros() {
         fn_like_error [FuncLike]
         fn_like_clone_tokens [FuncLike]
         fn_like_mk_literals [FuncLike]
+        fn_like_mk_idents [FuncLike]
         attr_noop [Attr]
         attr_panic [Attr]
         attr_error [Attr]
diff --git a/crates/proc-macro-test/imp/src/lib.rs b/crates/proc-macro-test/imp/src/lib.rs
index d18b357a040..7760774a3fc 100644
--- a/crates/proc-macro-test/imp/src/lib.rs
+++ b/crates/proc-macro-test/imp/src/lib.rs
@@ -2,7 +2,7 @@
 
 #![warn(rust_2018_idioms, unused_lifetimes, semicolon_in_expressions_from_macros)]
 
-use proc_macro::{Group, Ident, Literal, Punct, TokenStream, TokenTree};
+use proc_macro::{Group, Ident, Literal, Punct, Span, TokenStream, TokenTree};
 
 #[proc_macro]
 pub fn fn_like_noop(args: TokenStream) -> TokenStream {
@@ -40,6 +40,15 @@ pub fn fn_like_mk_literals(_args: TokenStream) -> TokenStream {
     TokenStream::from_iter(trees)
 }
 
+#[proc_macro]
+pub fn fn_like_mk_idents(_args: TokenStream) -> TokenStream {
+    let trees: Vec<TokenTree> = vec![
+        TokenTree::from(Ident::new("standard", Span::call_site())),
+        TokenTree::from(Ident::new_raw("raw", Span::call_site())),
+    ];
+    TokenStream::from_iter(trees)
+}
+
 #[proc_macro_attribute]
 pub fn attr_noop(_args: TokenStream, item: TokenStream) -> TokenStream {
     item