+ /// **What it does:** Checks for diverging calls that are not match arms or
+ /// statements.
+ ///
+ /// **Why is this bad?** It is often confusing to read. In addition, the
+ /// sub-expression evaluation order for Rust is not well documented.
+ ///
+ /// **Known problems:** Someone might want to use `some_bool || panic!()` as a
+ /// shorthand.
+ ///
+ /// **Example:**
+ /// ```rust,no_run
+ /// # fn b() -> bool { true }
+ /// # fn c() -> bool { true }
+ /// let a = b() || panic!() || c();
+ /// // `c()` is dead, `panic!()` is only called if `b()` returns `false`
+ /// let x = (a, b, c, panic!());
+ /// // can simply be replaced by `panic!()`
+ /// ```