]> git.proxmox.com Git - rustc.git/blob - tests/ui/issues/issue-20427.rs
New upstream version 1.68.2+dfsg1
[rustc.git] / tests / ui / issues / issue-20427.rs
1 // run-pass
2 #![allow(dead_code)]
3 #![allow(unused_variables)]
4 #![allow(unused_imports)]
5 #![allow(non_upper_case_globals)]
6 #![allow(non_camel_case_types)]
7 #![allow(deprecated, deprecated_in_future)]
8
9 // aux-build:i8.rs
10
11 extern crate i8;
12 use std::string as i16;
13 static i32: i32 = 0;
14 const i64: i64 = 0;
15 fn u8(f32: f32) {}
16 fn f<f64>(f64: f64) {}
17 enum u32 {}
18 struct u64;
19 trait bool {}
20
21 mod char {
22 extern crate i8;
23 static i32_: i32 = 0;
24 const i64_: i64 = 0;
25 fn u8_(f32: f32) {}
26 fn f_<f64_>(f64: f64_) {}
27 type u16_ = u16;
28 enum u32_ {}
29 struct u64_;
30 trait bool_ {}
31 mod char_ {}
32
33 mod str {
34 use super::i8 as i8;
35 use super::i32_ as i32;
36 use super::i64_ as i64;
37 use super::u8_ as u8;
38 use super::f_ as f64;
39 use super::u16_ as u16;
40 use super::u32_ as u32;
41 use super::u64_ as u64;
42 use super::bool_ as bool;
43 use super::{bool_ as str};
44 use super::char_ as char;
45 }
46 }
47
48 trait isize_ {
49 type isize;
50 }
51
52 fn usize<'usize>(usize: &'usize usize) -> &'usize usize { usize }
53
54 mod reuse {
55 use std::mem::size_of;
56
57 type u8 = u64;
58 use std::string::String as i16;
59
60 pub fn check<u16>() {
61 assert_eq!(size_of::<u8>(), 8);
62 assert_eq!(size_of::<::u64>(), 0);
63 assert_eq!(size_of::<i16>(), 3 * size_of::<*const ()>());
64 assert_eq!(size_of::<u16>(), 0);
65 }
66 }
67
68 mod guard {
69 pub fn check() {
70 use std::u8; // bring module u8 in scope
71 fn f() -> u8 { // OK, resolves to primitive u8, not to std::u8
72 u8::max_value() // OK, resolves to associated function <u8>::max_value,
73 // not to non-existent std::u8::max_value
74 }
75 assert_eq!(f(), u8::MAX); // OK, resolves to std::u8::MAX
76 }
77 }
78
79 fn main() {
80 let bool = true;
81 let _ = match bool {
82 str @ true => if str { i32 as i64 } else { i64 },
83 false => i64,
84 };
85
86 reuse::check::<u64>();
87 guard::check();
88 }