León Orell Valerian Liehr
0ad3c5da72
Fix parse error message for meta items
2024-05-10 09:16:27 +02:00
Urgau
d4e26fbb53
compiletest: add enable-by-default check-cfg
2024-05-04 11:30:38 +02:00
Dominik Stolz
5af861cf7b
Disallow ambiguous attributes on expressions
2024-04-18 20:42:19 +02:00
Urgau
c4a97d9407
Unify all the always-false cfgs under the FALSE
cfg
2024-04-07 01:16:45 +02:00
Nicholas Nethercote
8ac16c6193
Rewrite parse_meta_item
.
...
It can't use `maybe_whole`, but it can match `maybe_whole` more closely.
Also add a test for a case that wasn't previously covered.
2024-03-21 10:16:09 +11:00
Lieselotte
1658ca082a
Properly emit expected ;
on #[attr] expr
2024-02-26 21:47:10 +01:00
许杰友 Jieyou Xu (Joe)
ec2cc761bc
[AUTO-GENERATED] Migrate ui tests from //
to //@
directives
2024-02-16 20:02:50 +00:00
Esteban Küber
a5d9def321
Properly recover from trailing attr in body
...
When encountering an attribute in a body, we try to recover from an
attribute on an expression (as opposed to a statement). We need to
properly clean up when the attribute is at the end of the body where a
tail expression would be.
Fix #118164 .
2024-01-26 23:11:42 +00:00
sjwang05
aa8ecd0652
Suggest quoting unquoted idents in attrs
2024-01-12 13:59:47 -08:00
Lieselotte
7d6cd6bf1f
Don't expect bodyless arms if the pattern can never be a never pattern
2023-12-28 15:02:17 +01:00
Nadrieril
80bdcbf50a
Parse a pattern with no arm
2023-12-03 12:25:46 +01:00
Nilstrieb
41e8d152dc
Show number in error message even for one error
...
Co-authored-by: Adrian <adrian.iosdev@gmail.com>
2023-11-24 19:15:52 +01:00
Esteban Küber
a16722d221
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
Esteban Küber
5c17b8be61
Move some tests around
2023-10-09 19:24:05 +00:00