1f9353ae2c
Some of these tests use non-standard formatting that we can simulate by strategically adding `//` line comments. One contains `where` clauses that would be split across multiple lines, which we can keep on one line by moving the bounds to the generic type instead.
67 lines
2.4 KiB
Text
67 lines
2.4 KiB
Text
LL| |#![allow(unused_assignments)]
|
|
LL| |// failure-status: 1
|
|
LL| |
|
|
LL| |struct Firework<T: Copy + std::fmt::Display> {
|
|
LL| | strength: T,
|
|
LL| |}
|
|
LL| |
|
|
LL| |impl<T: Copy + std::fmt::Display> Firework<T> {
|
|
LL| | #[inline(always)]
|
|
LL| 3| fn set_strength(&mut self, new_strength: T) {
|
|
LL| 3| self.strength = new_strength;
|
|
LL| 3| }
|
|
------------------
|
|
| <generics::Firework<f64>>::set_strength:
|
|
| LL| 2| fn set_strength(&mut self, new_strength: T) {
|
|
| LL| 2| self.strength = new_strength;
|
|
| LL| 2| }
|
|
------------------
|
|
| <generics::Firework<i32>>::set_strength:
|
|
| LL| 1| fn set_strength(&mut self, new_strength: T) {
|
|
| LL| 1| self.strength = new_strength;
|
|
| LL| 1| }
|
|
------------------
|
|
LL| |}
|
|
LL| |
|
|
LL| |impl<T: Copy + std::fmt::Display> Drop for Firework<T> {
|
|
LL| | #[inline(always)]
|
|
LL| 2| fn drop(&mut self) {
|
|
LL| 2| println!("BOOM times {}!!!", self.strength);
|
|
LL| 2| }
|
|
------------------
|
|
| <generics::Firework<f64> as core::ops::drop::Drop>::drop:
|
|
| LL| 1| fn drop(&mut self) {
|
|
| LL| 1| println!("BOOM times {}!!!", self.strength);
|
|
| LL| 1| }
|
|
------------------
|
|
| <generics::Firework<i32> as core::ops::drop::Drop>::drop:
|
|
| LL| 1| fn drop(&mut self) {
|
|
| LL| 1| println!("BOOM times {}!!!", self.strength);
|
|
| LL| 1| }
|
|
------------------
|
|
LL| |}
|
|
LL| |
|
|
LL| 1|fn main() -> Result<(), u8> {
|
|
LL| 1| let mut firecracker = Firework { strength: 1 };
|
|
LL| 1| firecracker.set_strength(2);
|
|
LL| 1|
|
|
LL| 1| let mut tnt = Firework { strength: 100.1 };
|
|
LL| 1| tnt.set_strength(200.1);
|
|
LL| 1| tnt.set_strength(300.3);
|
|
LL| 1|
|
|
LL| 1| if true {
|
|
LL| 1| println!("Exiting with error...");
|
|
LL| 1| return Err(1);
|
|
LL| 0| }
|
|
LL| 0|
|
|
LL| 0| let _ = Firework { strength: 1000 };
|
|
LL| 0|
|
|
LL| 0| Ok(())
|
|
LL| 1|}
|
|
LL| |
|
|
LL| |// Expected program output:
|
|
LL| |// Exiting with error...
|
|
LL| |// BOOM times 100!!!
|
|
LL| |// BOOM times 1!!!
|
|
LL| |// Error: 1
|
|
|