# no-block-in-condition

Disallow block expressions in conditions and scrutinees

A block expression in a condition or scrutinee interleaves statement execution with control selection.
Instead, you SHOULD use a single expression directly or compute a multi-step value before the construct.

- Category: style
- Level: warning
- Fix: automatic
- Scope: module

## Reported

```ds title="main.ds"
function choose(isReady: boolean): string {
    return do { isReady } ? "ready" : "waiting";
}
```

## Accepted

```ds title="main.ds"
function choose(isReady: boolean): string {
    return isReady ? "ready" : "waiting";
}
```

## Prior art

- [Clippy · blocks_in_conditions](https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions)

[language/linter/src/rules/style/no_block_in_condition.rs:8](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/style/no_block_in_condition.rs#L8)
