# Source: https://github.com/quick-lint/quick-lint-js/blob/master/docs/errors/E0140.md

# E0140: expected expression after 'case'

A `switch` statement has a list of cases, each beginning with either the `case`
keyword or the `default` keyword. It is a syntax error to omit an expression
after the `case` keyword:

```javascript
function getText(node) {
  switch (node.nodeType) {
    case document.TEXT_NODE:
      return node.nodeValue;
    case: {
      let result = "";
      for (let child of node.childNodes) {
        result += getText(child, document);
      }
      return result;
    }
    default:
      throw new Error("Unsupported DOM node type");
  }
}

function colorToHexCode(color) {
  switch (color) {
    case 'red':   return '#ff0000';
    case 'green': return '#00ff00';
    case 'blue':  return '#0000ff';
    case:
      throw new Error(`unknown color ${color}`);
  }
}
```

To fix this error, write an expression (usually a constant) after the `case`
keyword:

```javascript
function getText(node) {
  switch (node.nodeType) {
    case document.TEXT_NODE:
      return node.nodeValue;
    case document.ELEMENT_NODE: {
      let result = "";
      for (let child of node.childNodes) {
        result += getText(child, document);
      }
      return result;
    }
    default:
      throw new Error("Unsupported DOM node type");
  }
}
```

Alternatively, replace the `case` keyword with `default` if the code should
execute if no other `case` would:

```javascript
function colorToHexCode(color) {
  switch (color) {
    case 'red':   return '#ff0000';
    case 'green': return '#00ff00';
    case 'blue':  return '#0000ff';
    default:
      throw new Error(`unknown color ${color}`);
  }
}
```

Introduced in quick-lint-js version 0.2.0.