about summary refs log tree commit diff
path: root/tests/rustdoc-js-std/macro-print.js
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2023-11-16 21:21:26 +0000
committerEsteban Küber <esteban@kuber.com.ar>2023-11-16 21:21:26 +0000
commita16722d2210caa5eea941ffa20837859e249fd05 (patch)
treebf32e8845511e451d94b55d288796d6774508ab6 /tests/rustdoc-js-std/macro-print.js
parent1be1e84872185c427de42f4d9e757d3e3e28d90e (diff)
downloadrust-a16722d2210caa5eea941ffa20837859e249fd05.tar.gz
rust-a16722d2210caa5eea941ffa20837859e249fd05.zip
Handle attempts to have multiple `cfg`d tail expressions
When encountering code that seems like it might be trying to have
multiple tail expressions depending on `cfg` information, suggest
alternatives that will success to parse.

```rust
fn foo() -> String {
    #[cfg(feature = "validation")]
    [1, 2, 3].iter().map(|c| c.to_string()).collect::<String>()
    #[cfg(not(feature = "validation"))]
    String::new()
}
```

```
error: expected `;`, found `#`
  --> $DIR/multiple-tail-expr-behind-cfg.rs:5:64
   |
LL |     #[cfg(feature = "validation")]
   |     ------------------------------ only `;` terminated statements or tail expressions are allowed after this attribute
LL |     [1, 2, 3].iter().map(|c| c.to_string()).collect::<String>()
   |                                                                ^ expected `;` here
LL |     #[cfg(not(feature = "validation"))]
   |     - unexpected token
   |
help: add `;` here
   |
LL |     [1, 2, 3].iter().map(|c| c.to_string()).collect::<String>();
   |                                                                +
help: alternatively, consider surrounding the expression with a block
   |
LL |     { [1, 2, 3].iter().map(|c| c.to_string()).collect::<String>() }
   |     +                                                             +
help: it seems like you are trying to provide different expressions depending on `cfg`, consider using `if cfg!(..)`
   |
LL ~     if cfg!(feature = "validation") {
LL ~         [1, 2, 3].iter().map(|c| c.to_string()).collect::<String>()
LL ~     } else if cfg!(not(feature = "validation")) {
LL ~         String::new()
LL +     }
   |
```

Fix #106020.
Diffstat (limited to 'tests/rustdoc-js-std/macro-print.js')
0 files changed, 0 insertions, 0 deletions