Skip to content

[core] Unreachable code due to unnecessary breaks #2697

@nitram84

Description

@nitram84

Issue details

This sample, compiled with openjdk8, decompiles to unreachable code:

public class UnreachableBreakTest {

    public void unreachableBreak(int i, boolean b1, boolean b2) {
      switch (i) {
        case 0:
          if (b1 && b2) {
            doSomething(1);
            // no break here;
          } else {
            doSomething(2);
            // no break here;
          }
          break;
        default:
          doSomething(0);
          break;
      }
    }

    private void doSomething(int i) {
    }
}

decompiles to:

public class UnreachableBreakTest {
    public void unreachableBreak(int i, boolean b1, boolean b2) {
        switch (i) {
            case 0:
                if (b1 && b2) {
                    doSomething(1);
                    break;
                } else {
                    doSomething(2);
                    break;
                }
                break; // <-- unreachable code
            default:
                doSomething(0);
                break;
        }
    }

    private void doSomething(int i) {
    }
}

Relevant log output or stacktrace

Provide sample and class/method full name

No response

Jadx version

1.5.3, latest git

Metadata

Metadata

Assignees

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions