Skip to content

Commit

Permalink
style-guide: Clarify grammar for small patterns (not a semantic change)
Browse files Browse the repository at this point in the history
The grammar as written feels ambiguous and confusing, in large part
because it uses square brackets and commas in the names of
non-terminals. Rewrite it to avoid symbols in the names of
non-terminals, and to instead wrap terminals in backquotes.
  • Loading branch information
joshtriplett committed Jul 5, 2023
1 parent 5dac6b3 commit cde67f6
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions src/doc/style-guide/src/expressions.md
Original file line number Diff line number Diff line change
Expand Up @@ -752,9 +752,9 @@ not put the `if` clause on a newline. E.g.,
}
```

If every clause in a pattern is *small*, but does not fit on one line, then the
pattern may be formatted across multiple lines with as many clauses per line as
possible. Again break before a `|`:
If every clause in a pattern is *small*, but the whole pattern does not fit on
one line, then the pattern may be formatted across multiple lines with as many
clauses per line as possible. Again break before a `|`:

```rust
foo | bar | baz
Expand All @@ -763,17 +763,18 @@ possible. Again break before a `|`:
}
```

We define a pattern clause to be *small* if it matches the following grammar:
We define a pattern clause to be *small* if it fits on a single line and
matches "small" in the following grammar:

```
[small, ntp]:
- single token
- `&[single-line, ntp]`
small:
- smallntp
- unary tuple constructor: `(` smallntp `,` `)`
- `&` small
[small]:
- `[small, ntp]`
- unary tuple constructor `([small, ntp])`
- `&[small]`
smallntp:
- single token
- `&` smallntp
```

E.g., `&&Some(foo)` matches, `Foo(4, Bar)` does not.
Expand Down

0 comments on commit cde67f6

Please sign in to comment.