diff --git a/src/test/ui/resolve/module-in-block-compile-fail.rs b/src/test/ui/resolve/module-in-block-compile-fail.rs new file mode 100644 index 0000000000000..537a4d860ccc8 --- /dev/null +++ b/src/test/ui/resolve/module-in-block-compile-fail.rs @@ -0,0 +1,12 @@ +fn module_in_function_cannot_access_variables() { + let x: i32 = 5; + + mod inner { + use super::x; //~ ERROR unresolved import `super::x` + fn get_x() -> i32 { + x + } + } +} + +fn main() { } diff --git a/src/test/ui/resolve/module-in-block-compile-fail.stderr b/src/test/ui/resolve/module-in-block-compile-fail.stderr new file mode 100644 index 0000000000000..f2fd1e0990322 --- /dev/null +++ b/src/test/ui/resolve/module-in-block-compile-fail.stderr @@ -0,0 +1,9 @@ +error[E0432]: unresolved import `super::x` + --> $DIR/module-in-block-compile-fail.rs:5:13 + | +LL | use super::x; + | ^^^^^^^^ no `x` in `` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0432`. diff --git a/src/test/ui/resolve/module-in-block-run-pass.rs b/src/test/ui/resolve/module-in-block-run-pass.rs index d2db9d95b6511..e61c2e86bcfc6 100644 --- a/src/test/ui/resolve/module-in-block-run-pass.rs +++ b/src/test/ui/resolve/module-in-block-run-pass.rs @@ -99,3 +99,36 @@ fn module_in_block_prefer_inner_glob() { assert_eq!(inner::get_const(), "INNER"); } } + +#[test] +fn module_in_block_does_not_use_variables() { + #[allow(unused_variables)] + let bar = || "inner_block"; + + + // anonymous block + mod inner { + use super::bar; + pub fn call_bar() -> &'static str { + bar() + } + } + + assert_eq!(inner::call_bar(), "outer"); +} + +#[test] +fn module_in_block_does_not_use_variables_glob() { + #[allow(unused_variables)] + let bar = || "inner_block"; + + // anonymous block + mod inner { + use super::*; + pub fn call_bar() -> &'static str { + bar() + } + } + + assert_eq!(inner::call_bar(), "outer"); +}