| //@ run-pass | |
| //@ edition:2018 | |
| pub const A: usize = 0; | |
| pub mod foo { | |
| pub const B: usize = 1; | |
| pub mod bar { | |
| pub const C: usize = 2; | |
| pub enum E { | |
| V1(usize), | |
| V2(String), | |
| } | |
| pub fn test() -> String { | |
| format!("{} {} {}", crate::A, crate::foo::B, C) | |
| } | |
| pub fn test_use() -> String { | |
| use crate::A; | |
| use crate::foo::B; | |
| format!("{} {} {}", A, B, C) | |
| } | |
| pub fn test_enum() -> String { | |
| use E::*; | |
| match E::V1(10) { | |
| V1(i) => { format!("V1: {}", i) } | |
| V2(s) => { format!("V2: {}", s) } | |
| } | |
| } | |
| } | |
| pub fn test() -> String { | |
| format!("{} {} {}", crate::A, B, bar::C) | |
| } | |
| pub fn test_use() -> String { | |
| use crate::A; | |
| use bar::C; | |
| format!("{} {} {}", A, B, C) | |
| } | |
| pub fn test_enum() -> String { | |
| use bar::E::*; | |
| match bar::E::V1(10) { | |
| V1(i) => { format!("V1: {}", i) } | |
| V2(s) => { format!("V2: {}", s) } | |
| } | |
| } | |
| } | |
| pub fn test() -> String { | |
| format!("{} {} {}", A, foo::B, foo::bar::C) | |
| } | |
| pub fn test_use() -> String { | |
| use foo::B; | |
| use foo::bar::C; | |
| format!("{} {} {}", A, B, C) | |
| } | |
| pub fn test_enum() -> String { | |
| use foo::bar::E::*; | |
| match foo::bar::E::V1(10) { | |
| V1(i) => { format!("V1: {}", i) } | |
| V2(s) => { format!("V2: {}", s) } | |
| } | |
| } | |
| fn main() { | |
| let output = [ | |
| test(), | |
| foo::test(), | |
| foo::bar::test(), | |
| test_use(), | |
| foo::test_use(), | |
| foo::bar::test_use(), | |
| test_enum(), | |
| foo::test_enum(), | |
| foo::bar::test_enum(), | |
| ].join("\n"); | |
| assert_eq!(output, "\ | |
| 0 1 2 | |
| 0 1 2 | |
| 0 1 2 | |
| 0 1 2 | |
| 0 1 2 | |
| 0 1 2 | |
| V1: 10 | |
| V1: 10 | |
| V1: 10"); | |
| } |