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.
2023-11-16 21:21:26 +00:00
|
|
|
error: expected `;`, found `#`
|
|
|
|
--> $DIR/multiple-tail-expr-behind-cfg.rs:5:64
|
|
|
|
|
|
2024-04-07 00:43:00 +02:00
|
|
|
LL | #[cfg(FALSE)]
|
|
|
|
| ------------- only `;` terminated statements or tail expressions are allowed after this attribute
|
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.
2023-11-16 21:21:26 +00:00
|
|
|
LL | [1, 2, 3].iter().map(|c| c.to_string()).collect::<String>()
|
|
|
|
| ^ expected `;` here
|
2024-04-07 00:43:00 +02:00
|
|
|
LL | #[cfg(not(FALSE))]
|
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.
2023-11-16 21:21:26 +00:00
|
|
|
| - 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!(..)`
|
|
|
|
|
|
2024-04-07 00:43:00 +02:00
|
|
|
LL ~ if cfg!(FALSE) {
|
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.
2023-11-16 21:21:26 +00:00
|
|
|
LL ~ [1, 2, 3].iter().map(|c| c.to_string()).collect::<String>()
|
2024-04-07 00:43:00 +02:00
|
|
|
LL ~ } else if cfg!(not(FALSE)) {
|
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.
2023-11-16 21:21:26 +00:00
|
|
|
LL ~ String::new()
|
|
|
|
LL + }
|
|
|
|
|
|
|
|
|
|
|
|
|
error: expected `;`, found `#`
|
|
|
|
--> $DIR/multiple-tail-expr-behind-cfg.rs:12:64
|
|
|
|
|
|
|
|
|
LL | #[attr]
|
|
|
|
| ------- 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 | #[attr]
|
|
|
|
| - 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>() }
|
|
|
|
| + +
|
|
|
|
|
|
|
|
error: cannot find attribute `attr` in this scope
|
|
|
|
--> $DIR/multiple-tail-expr-behind-cfg.rs:13:7
|
|
|
|
|
|
|
|
|
LL | #[attr]
|
|
|
|
| ^^^^
|
|
|
|
|
|
|
|
error: aborting due to 3 previous errors
|
|
|
|
|