# nonsensical-open-options

Disallow contradictory or ineffective file open options

Contradictory file open flags cannot express a coherent operation, while dependent flags without their prerequisite have no useful effect.
Instead, you SHOULD select at least one access mode and include every prerequisite flag.

- Category: suspicious
- Level: warning
- Fix: none
- Scope: module

## Reported

```ds title="main.ds"
import {
    FileMode,
    FileOpenFlags,
    FileOpenOptions,
    FileResolveFlags,
} from "destack:fs/binding";

const OPTIONS = FileOpenOptions {
    flags: FileOpenFlags(0x0011),
    mode: FileMode(0),
    resolve: FileResolveFlags(0),
};
```

## Accepted

```ds title="main.ds"
import {
    FileMode,
    FileOpenFlags,
    FileOpenOptions,
    FileResolveFlags,
} from "destack:fs/binding";

const OPTIONS = FileOpenOptions {
    flags: FileOpenFlags(0x0012),
    mode: FileMode(0),
    resolve: FileResolveFlags(0),
};
```

## Prior art

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

[language/linter/src/rules/suspicious/nonsensical_open_options.rs:13](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/suspicious/nonsensical_open_options.rs#L13)
