## Why is this an issue?

In Switch Expressions, an arrow label consisting of a block with a single `yield` can be simplified to directly return the value, resulting in cleaner code.

Similarly, for Switch Statements and arrow labels, a `break` in a block is always redundant and should not be used. Furthermore, if the resulting block contains only one statement, the curly braces of that block can also be omitted.

This rule reports an issue when a case of a Switch Expression contains a block with a single `yield` or when a Switch Statement contains a block with a `break`.

### Noncompliant code example

    int i = switch (mode) {
      case "a" -> {        // Noncompliant: Remove the redundant block and yield.
        yield 1;
      }
      default -> {         // Noncompliant: Remove the redundant block and yield.
        yield 2;
      }
    };

    switch (mode) {
      case "a" -> {        // Noncompliant: Remove the redundant block and break.
        result = 1;
        break;
      }
      default -> {         // Noncompliant: Remove the redundant break.
        doSomethingElse();
        result = 2;
        break;
      }
    }

### Compliant solution

    int i = switch (mode) {
      case "a" -> 1;
      default -> 2;
    };

    switch (mode) {
      case "a" -> result = 1;
      default -> {
       doSomethingElse();
       result = 2;
     }
    }

## Resources

- JEP 361: Switch Expressions