clippy 0.0.63

A bunch of helpful lints to avoid common pitfalls in Rust
#![feature(plugin)]
#![plugin(clippy)]

#![deny(clippy)]
#![allow(unused_variables)]
#![allow(unused_assignments)]
#![allow(if_same_then_else)]

fn foo() -> bool { true }

fn main() {
    // weird `else if` formatting:
    if foo() {
    } if foo() { //~ERROR this looks like an `else if` but the `else` is missing
    }

    let _ = {
        if foo() {
        } if foo() { //~ERROR this looks like an `else if` but the `else` is missing
        }
        else {
        }
    };

    if foo() {
    } else //~ERROR this is an `else if` but the formatting might hide it
    if foo() { // the span of the above error should continue here
    }

    if foo() {
    } //~ERROR this is an `else if` but the formatting might hide it
    else
    if foo() { // the span of the above error should continue here
    }

    // those are ok:
    if foo() {
    }
    if foo() {
    }

    if foo() {
    } else if foo() {
    }

    if foo() {
    }
    else if foo() {
    }

    if foo() {
    }

    else if

    foo() {}

    // weird op_eq formatting:
    let mut a = 42;
    a =- 35;
    //~^ ERROR this looks like you are trying to use `.. -= ..`, but you really are doing `.. = (- ..)`
    //~| NOTE to remove this lint, use either `-=` or `= -`
    a =* &191;
    //~^ ERROR this looks like you are trying to use `.. *= ..`, but you really are doing `.. = (* ..)`
    //~| NOTE to remove this lint, use either `*=` or `= *`

    let mut b = true;
    b =! false;
    //~^ ERROR this looks like you are trying to use `.. != ..`, but you really are doing `.. = (! ..)`
    //~| NOTE to remove this lint, use either `!=` or `= !`

    // those are ok:
    a = -35;
    a = *&191;
    b = !false;
}