/**
 * @test  /nodynamiccopyright/
 * @bug 4986256
 * @compile/ref=FallThrough.noLint.out                             -XDrawDiagnostics FallThrough.java
 * @compile/ref=FallThrough.lintAll.out         -Xlint:all         -XDrawDiagnostics FallThrough.java
 * @compile/ref=FallThrough.lintFallThrough.out -Xlint:fallthrough -XDrawDiagnostics FallThrough.java
 */

// control: this class should generate a warning
class FallThrough
{
    int m1(int i) {
        switch (i) {
        case 1: i++; case 2: i++;
        }
        return i;
    }
}

// tests: the warnings that would otherwise be generated should all be suppressed
@SuppressWarnings("fallthrough")
class FallThrough1
{
    int m1(int i) {
        switch (i) {
        case 1: i++; case 2: i++;
        }
        return i;
    }
}

class FallThrough2
{
    @SuppressWarnings("fallthrough")
    class Bar {
        int m1(int i) {
            switch (i) {
            case 1: i++; case 2: i++;
            }
            return i;
        }
    }

    @SuppressWarnings("fallthrough")
    void m2(int i) {
        switch (i) {
        case 1: i++; case 2: i++;
        }
    }


    @SuppressWarnings("fallthrough")
    static int x = new FallThrough2() {
            int m1(int i) {
                switch (i) {
                case 1: i++; case 2: i++;
                }
                return i;
            }
        }.m1(0);

}
