# default-param-last

Require optional and defaulted parameters after required parameters

A required parameter after an optional or defaulted parameter prevents callers from omitting the earlier argument position.
Instead, you SHOULD place every required parameter before optional and defaulted parameters.

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

## Reported

```ds title="main.ds"
function connect(timeout: int32 = 30, retries: int32): void {}
```

## Accepted

```ds title="main.ds"
function connect(retries: int32, timeout: int32 = 30): void {}
```

## Prior art

- [ESLint · default-param-last](https://eslint.org/docs/latest/rules/default-param-last)
- [typescript-eslint · default-param-last](https://typescript-eslint.io/rules/default-param-last)

[language/linter/src/rules/style/default_param_last.rs:7](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/style/default_param_last.rs#L7)
