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 11:02:17 -0700
committerJohn Clements <clements@racket-lang.org>2014-07-04 13:20:14 -0700
commitff9995e08978cec4b6987d198e09ac5ba6b6c152 (patch)
tree7c85ca3be0777536fad043f32c66f78311b59c6e /src/libsyntax
parent63fb7c6f4049ba33cb2fcd5d5d117a3e484bd181 (diff)
downloadrust-ff9995e08978cec4b6987d198e09ac5ba6b6c152.tar.gz
rust-ff9995e08978cec4b6987d198e09ac5ba6b6c152.zip
added test cases for closure arg hygiene
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ext/expand.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index 534cddd6848..e9e722a18c4 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -1387,6 +1387,28 @@ mod test {
             0)
     }
 
+    // closure arg hygiene
+    // expands to fn f(){(|x_1 : int| {(x_2 + x_1)})(3);}
+    #[test] fn closure_arg_hygiene(){
+        run_renaming_test(
+            &("macro_rules! inject_x (()=>(x))
+            fn f(){(|x : int| {(inject_x!() + x)})(3);}",
+              vec!(vec!(1)),
+              true),
+            0)
+    }
+
+    // closure arg hygiene (ExprProc)
+    // expands to fn f(){(proc(x_1 : int) {(x_2 + x_1)})(3);}
+    #[test] fn closure_arg_hygiene_2(){
+        run_renaming_test(
+            &("macro_rules! inject_x (()=>(x))
+              fn f(){ (proc(x : int){(inject_x!() + x)})(3); }",
+              vec!(vec!(1)),
+              true),
+            0)
+    }
+
     // run one of the renaming tests
     fn run_renaming_test(t: &RenamingTest, test_idx: uint) {
         let invalid_name = token::special_idents::invalid.name;