Back to Denoland

No Unreachable

lint/rules/no-unreachable.md

latest839 B
Original Source

Disallows the unreachable code after the control flow statements.

Because the control flow statements (return, throw, break and continue) unconditionally exit a block of code, any statements after them cannot be executed.

Invalid:

typescript
function foo() {
  return true;
  console.log("done");
}
typescript
function bar() {
  throw new Error("Oops!");
  console.log("done");
}
typescript
while (value) {
  break;
  console.log("done");
}
typescript
throw new Error("Oops!");
console.log("done");
typescript
function baz() {
  if (Math.random() < 0.5) {
    return;
  } else {
    throw new Error();
  }
  console.log("done");
}
typescript
for (;;) {}
console.log("done");

Valid:

typescript
function foo() {
  return bar();
  function bar() {
    return 1;
  }
}