diff options
| author | Josh Triplett <josh@joshtriplett.org> | 2023-07-05 14:40:07 -0700 |
|---|---|---|
| committer | Josh Triplett <josh@joshtriplett.org> | 2023-07-05 14:46:56 -0700 |
| commit | cde67f65573f54fa59aa954cea9b4e3504a7a8dd (patch) | |
| tree | 041eaaa8b27ce326bf3ac7b282a30b04927e3cbd | |
| parent | 5dac6b320be868f898a3c753934eabc79ff2e406 (diff) | |
| download | rust-cde67f65573f54fa59aa954cea9b4e3504a7a8dd.tar.gz rust-cde67f65573f54fa59aa954cea9b4e3504a7a8dd.zip | |
style-guide: Clarify grammar for small patterns (not a semantic change)
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.
| -rw-r--r-- | src/doc/style-guide/src/expressions.md | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/doc/style-guide/src/expressions.md b/src/doc/style-guide/src/expressions.md index f5e37b6c46f..a2994baaddc 100644 --- a/src/doc/style-guide/src/expressions.md +++ b/src/doc/style-guide/src/expressions.md @@ -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 @@ -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. |
