| // Copyright (C) 2016-2021 Free Software Foundation, Inc. |
| |
| // This program is free software; you can redistribute it and/or modify |
| // it under the terms of the GNU General Public License as published by |
| // the Free Software Foundation; either version 3 of the License, or |
| // (at your option) any later version. |
| // |
| // This program is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| // GNU General Public License for more details. |
| // |
| // You should have received a copy of the GNU General Public License |
| // along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| #![allow(dead_code)] |
| #![allow(unused_variables)] |
| #![allow(unused_assignments)] |
| |
| |
| #[derive(Clone, Copy)] |
| struct Hold<T>(T); |
| |
| pub fn identity<T>(x: T) -> T { x } |
| |
| fn dowhatever() { () } |
| |
| pub fn main() { |
| let a = identity(23u32); |
| let b = identity(23.0f64); |
| |
| let d = identity::<u32>(7); |
| |
| let e = Hold(7); |
| let f = Hold::<u8>(7); |
| |
| let g = identity(e); |
| |
| let h = Hold(e); |
| let i = identity(h); |
| |
| let z = (); // set breakpoint here |
| dowhatever() |
| } |