> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://www.getfoundry.sh/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

## Struct names should use PascalCase

**Severity**: `Info`
**ID**: `pascal-case-struct`

Flags struct definitions whose names do not follow `PascalCase`.

### What it does

Reports `struct` identifiers longer than one character that do not match the `PascalCase`
convention. Leading and trailing underscores are preserved, and single-character names are not
checked.

### Why is this bad?

The Solidity style guide recommends `PascalCase` for type-like names (contracts, structs,
enums, libraries). Consistent casing makes code easier to scan and integrates with editor
features and external tooling.

### Example

#### Bad

```solidity
struct user_info { uint256 balance; }
struct USERINFO   { uint256 balance; }
```

#### Good

```solidity
struct UserInfo { uint256 balance; }
```

### Configuration

Set `mixed_case_exceptions` under `[lint.lint_specific]` in `foundry.toml` to replace the default
list of allowed uppercase patterns (`ERC`, `URI`, `ID`, `URL`, `API`, `JSON`, `XML`, `HTML`, `HTTP`,
and `HTTPS`). The same list is shared with the `mixed-case-*` lints, so a struct such as
`ERC20Data` is not flagged:

```toml
[lint.lint_specific]
mixed_case_exceptions = ["ERC", "URI", "NFT"]
```
