about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorJohn Clements <clements@racket-lang.org>2014-07-04 10:57:17 -0700
committerJohn Clements <clements@racket-lang.org>2014-07-08 15:14:45 -0700
commitf3fa836939161f59224c30c96210df1eb01f002e (patch)
tree15cc83f660d1413946bc7e5c223aa41d1b08187b /src/libsyntax
parent8bb34a3146e6ba4bc7902a85de90cf4f8064ace0 (diff)
downloadrust-f3fa836939161f59224c30c96210df1eb01f002e.tar.gz
rust-f3fa836939161f59224c30c96210df1eb01f002e.zip
added test for method arg hygiene
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ext/expand.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index 74cede2a125..1569b4ac4e9 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -1390,6 +1390,19 @@ mod test {
     // but *shouldn't* bind because it was inserted by a different macro....
     // can't write this test case until we have macro-generating macros.
 
+    // method arg hygiene
+    // method expands to fn get_x(&self_0, x_1:int) {self_0 + self_2 + x_3 + x_1}
+    #[test] fn method_arg_hygiene(){
+        run_renaming_test(
+            &("macro_rules! inject_x (()=>(x))
+              macro_rules! inject_self (()=>(self))
+              struct A;
+              impl A{fn get_x(&self, x: int) {self + inject_self!() + inject_x!() + x;} }",
+              vec!(vec!(0),vec!(3)),
+              true),
+            0)
+    }
+
     // item fn hygiene
     // expands to fn q(x_1:int){fn g(x_2:int){x_2 + x_1};}
     #[test] fn issue_9383(){