about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorJohn Renner <john@jrenner.net>2018-07-31 15:00:45 -0700
committerJohn Renner <john@jrenner.net>2018-07-31 15:00:45 -0700
commit549f0fd9f7740954cb14367d735db724669c8f79 (patch)
tree3bff69fea0a0fdbdaa9904a941f8fa13f75a7d4c /src/libsyntax
parent7947c58d2dafefed7bfa7e8a24d5f90d11b43517 (diff)
downloadrust-549f0fd9f7740954cb14367d735db724669c8f79.tar.gz
rust-549f0fd9f7740954cb14367d735db724669c8f79.zip
Address code review
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ext/expand.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index 975b91a1088..96003be3152 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -1373,15 +1373,19 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
                 result
             }
             // Ensure that test functions are accessible from the test harness.
+            // #[test] fn foo() {}
+            // becomes:
+            // #[test] pub fn foo_gensym(){}
+            // use foo_gensym as foo;
             ast::ItemKind::Fn(..) if self.cx.ecfg.should_test => {
                 if self.tests_nameable && item.attrs.iter().any(|attr| is_test_or_bench(attr)) {
-                    let orig_vis = item.vis.clone();
+                    let orig_ident = item.ident;
+                    let orig_vis   = item.vis.clone();
 
                     // Publicize the item under gensymed name to avoid pollution
                     item = item.map(|mut item| {
                         item.vis = respan(item.vis.span, ast::VisibilityKind::Public);
-                        item.ident = Ident::from_interned_str(
-                                                item.ident.as_interned_str()).gensym();
+                        item.ident = item.ident.gensym();
                         item
                     });
 
@@ -1389,8 +1393,9 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
                     let use_item = self.cx.item_use_simple_(
                         item.ident.span,
                         orig_vis,
-                        Some(Ident::from_interned_str(item.ident.as_interned_str())),
-                        self.cx.path(item.ident.span, vec![Ident::from_str("self"), item.ident]));
+                        Some(orig_ident),
+                        self.cx.path(item.ident.span,
+                            vec![keywords::SelfValue.ident(), item.ident]));
 
                     SmallVector::many(
                         self.fold_unnameable(item).into_iter()