mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 17:53:56 +00:00
Rollup merge of #133051 - estebank:cond-misparse, r=jieyouxu
Increase accuracy of `if` condition misparse suggestion Fix #132656. Look at the expression that was parsed when trying to recover from a bad `if` condition to determine what was likely intended by the user beyond "maybe this was meant to be an `else` body". ``` error: expected `{`, found `map` --> $DIR/missing-dot-on-if-condition-expression-fixable.rs:4:30 | LL | for _ in [1, 2, 3].iter()map(|x| x) {} | ^^^ expected `{` | help: you might have meant to write a method call | LL | for _ in [1, 2, 3].iter().map(|x| x) {} | + ``` If a macro statement has been parsed after `else`, suggest a missing `if`: ``` error: expected `{`, found `falsy` --> $DIR/else-no-if.rs:47:12 | LL | } else falsy! {} { | ---- ^^^^^ | | | expected an `if` or a block after this `else` | help: add an `if` if this is the condition of a chained `else if` statement | LL | } else if falsy! {} { | ++ ```
This commit is contained in:
commit
2f62fd3d13
@ -2683,6 +2683,13 @@ impl<'a> Parser<'a> {
|
||||
// ^^
|
||||
// }
|
||||
//
|
||||
// We account for macro calls that were meant as conditions as well.
|
||||
//
|
||||
// if ... {
|
||||
// } else if macro! { foo bar } {
|
||||
// ^^
|
||||
// }
|
||||
//
|
||||
// If $cond is "statement-like" such as ExprKind::While then we
|
||||
// want to suggest wrapping in braces.
|
||||
//
|
||||
@ -2693,7 +2700,9 @@ impl<'a> Parser<'a> {
|
||||
// }
|
||||
// ^
|
||||
if self.check(&TokenKind::OpenDelim(Delimiter::Brace))
|
||||
&& classify::expr_requires_semi_to_be_stmt(&cond) =>
|
||||
&& (classify::expr_requires_semi_to_be_stmt(&cond)
|
||||
|| matches!(cond.kind, ExprKind::MacCall(..)))
|
||||
=>
|
||||
{
|
||||
self.dcx().emit_err(errors::ExpectedElseBlock {
|
||||
first_tok_span,
|
||||
|
@ -475,6 +475,7 @@ impl<'a> Parser<'a> {
|
||||
}
|
||||
|
||||
fn error_block_no_opening_brace_msg(&mut self, msg: Cow<'static, str>) -> Diag<'a> {
|
||||
let prev = self.prev_token.span;
|
||||
let sp = self.token.span;
|
||||
let mut e = self.dcx().struct_span_err(sp, msg);
|
||||
let do_not_suggest_help = self.token.is_keyword(kw::In) || self.token == token::Colon;
|
||||
@ -514,14 +515,11 @@ impl<'a> Parser<'a> {
|
||||
} else {
|
||||
stmt.span
|
||||
};
|
||||
e.multipart_suggestion(
|
||||
"try placing this code inside a block",
|
||||
vec![
|
||||
(stmt_span.shrink_to_lo(), "{ ".to_string()),
|
||||
(stmt_span.shrink_to_hi(), " }".to_string()),
|
||||
],
|
||||
// Speculative; has been misleading in the past (#46836).
|
||||
Applicability::MaybeIncorrect,
|
||||
self.suggest_fixes_misparsed_for_loop_head(
|
||||
&mut e,
|
||||
prev.between(sp),
|
||||
stmt_span,
|
||||
&stmt.kind,
|
||||
);
|
||||
}
|
||||
Err(e) => {
|
||||
@ -534,6 +532,103 @@ impl<'a> Parser<'a> {
|
||||
e
|
||||
}
|
||||
|
||||
fn suggest_fixes_misparsed_for_loop_head(
|
||||
&self,
|
||||
e: &mut Diag<'_>,
|
||||
between: Span,
|
||||
stmt_span: Span,
|
||||
stmt_kind: &StmtKind,
|
||||
) {
|
||||
match (&self.token.kind, &stmt_kind) {
|
||||
(token::OpenDelim(Delimiter::Brace), StmtKind::Expr(expr))
|
||||
if let ExprKind::Call(..) = expr.kind =>
|
||||
{
|
||||
// for _ in x y() {}
|
||||
e.span_suggestion_verbose(
|
||||
between,
|
||||
"you might have meant to write a method call",
|
||||
".".to_string(),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
(token::OpenDelim(Delimiter::Brace), StmtKind::Expr(expr))
|
||||
if let ExprKind::Field(..) = expr.kind =>
|
||||
{
|
||||
// for _ in x y.z {}
|
||||
e.span_suggestion_verbose(
|
||||
between,
|
||||
"you might have meant to write a field access",
|
||||
".".to_string(),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
(token::CloseDelim(Delimiter::Brace), StmtKind::Expr(expr))
|
||||
if let ExprKind::Struct(expr) = &expr.kind
|
||||
&& let None = expr.qself
|
||||
&& expr.path.segments.len() == 1 =>
|
||||
{
|
||||
// This is specific to "mistyped `if` condition followed by empty body"
|
||||
//
|
||||
// for _ in x y {}
|
||||
e.span_suggestion_verbose(
|
||||
between,
|
||||
"you might have meant to write a field access",
|
||||
".".to_string(),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
(token::OpenDelim(Delimiter::Brace), StmtKind::Expr(expr))
|
||||
if let ExprKind::Lit(lit) = expr.kind
|
||||
&& let None = lit.suffix
|
||||
&& let token::LitKind::Integer | token::LitKind::Float = lit.kind =>
|
||||
{
|
||||
// for _ in x 0 {}
|
||||
// for _ in x 0.0 {}
|
||||
e.span_suggestion_verbose(
|
||||
between,
|
||||
format!("you might have meant to write a field access"),
|
||||
".".to_string(),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
(token::OpenDelim(Delimiter::Brace), StmtKind::Expr(expr))
|
||||
if let ExprKind::Loop(..)
|
||||
| ExprKind::If(..)
|
||||
| ExprKind::While(..)
|
||||
| ExprKind::Match(..)
|
||||
| ExprKind::ForLoop { .. }
|
||||
| ExprKind::TryBlock(..)
|
||||
| ExprKind::Ret(..)
|
||||
| ExprKind::Closure(..)
|
||||
| ExprKind::Struct(..)
|
||||
| ExprKind::Try(..) = expr.kind =>
|
||||
{
|
||||
// These are more likely to have been meant as a block body.
|
||||
e.multipart_suggestion(
|
||||
"you might have meant to write this as part of a block",
|
||||
vec![
|
||||
(stmt_span.shrink_to_lo(), "{ ".to_string()),
|
||||
(stmt_span.shrink_to_hi(), " }".to_string()),
|
||||
],
|
||||
// Speculative; has been misleading in the past (#46836).
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
(token::OpenDelim(Delimiter::Brace), _) => {}
|
||||
(_, _) => {
|
||||
e.multipart_suggestion(
|
||||
"you might have meant to write this as part of a block",
|
||||
vec![
|
||||
(stmt_span.shrink_to_lo(), "{ ".to_string()),
|
||||
(stmt_span.shrink_to_hi(), " }".to_string()),
|
||||
],
|
||||
// Speculative; has been misleading in the past (#46836).
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn error_block_no_opening_brace<T>(&mut self) -> PResult<'a, T> {
|
||||
let tok = super::token_descr(&self.token);
|
||||
let msg = format!("expected `{{`, found {tok}");
|
||||
|
@ -16,10 +16,10 @@ LL | if $tgt.has_$field() {}
|
||||
LL | get_opt!(bar, foo);
|
||||
| ------------------ in this macro invocation
|
||||
= note: this error originates in the macro `get_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write a method call
|
||||
|
|
||||
LL | if $tgt.has_{ $field() } {}
|
||||
| + +
|
||||
LL | if $tgt.has_.$field() {}
|
||||
| +
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
@ -4,7 +4,7 @@ error: conditional `else if` is not supported for `let...else`
|
||||
LL | let Some(_) = Some(()) else if true {
|
||||
| ^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL ~ let Some(_) = Some(()) else { if true {
|
||||
LL |
|
||||
|
@ -6,7 +6,7 @@ LL | { unsafe 92 }
|
||||
| |
|
||||
| while parsing this `unsafe` expression
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | { unsafe { 92 } }
|
||||
| + +
|
||||
|
@ -25,7 +25,7 @@ note: the `if` expression is missing a block after this condition
|
||||
|
|
||||
LL | if (foo)
|
||||
| ^^^^^
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | { bar; }
|
||||
| + +
|
||||
|
@ -29,7 +29,7 @@ note: the `if` expression is missing a block after this condition
|
||||
|
|
||||
LL | if true x
|
||||
| ^^^^
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | if true { x }
|
||||
| + +
|
||||
@ -65,7 +65,7 @@ note: the `if` expression is missing a block after this condition
|
||||
|
|
||||
LL | if true x else {}
|
||||
| ^^^^
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | if true { x } else {}
|
||||
| + +
|
||||
|
@ -6,7 +6,7 @@ LL | loop
|
||||
LL | let x = 0;
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | { let x = 0; }
|
||||
| + +
|
||||
@ -21,7 +21,7 @@ LL | while true
|
||||
LL | let x = 0;
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | { let x = 0; }
|
||||
| + +
|
||||
@ -32,7 +32,7 @@ error: expected `{`, found keyword `let`
|
||||
LL | let x = 0;
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | { let x = 0; }
|
||||
| + +
|
||||
|
@ -4,7 +4,7 @@ error: expected `{`, found `22`
|
||||
LL | let x = || -> i32 22;
|
||||
| ^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | let x = || -> i32 { 22 };
|
||||
| + +
|
||||
|
@ -30,7 +30,7 @@ error: expected `{`, found `falsy`
|
||||
LL | } else falsy();
|
||||
| ^^^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | } else { falsy() };
|
||||
| + +
|
||||
@ -41,7 +41,7 @@ error: expected `{`, found keyword `loop`
|
||||
LL | } else loop{}
|
||||
| ^^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | } else { loop{} }
|
||||
| + +
|
||||
@ -65,7 +65,7 @@ error: expected `{`, found `falsy`
|
||||
LL | } else falsy!();
|
||||
| ^^^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | } else { falsy!() };
|
||||
| + +
|
||||
@ -74,12 +74,14 @@ error: expected `{`, found `falsy`
|
||||
--> $DIR/else-no-if.rs:47:12
|
||||
|
|
||||
LL | } else falsy! {} {
|
||||
| ^^^^^ expected `{`
|
||||
| ---- ^^^^^
|
||||
| |
|
||||
| expected an `if` or a block after this `else`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: add an `if` if this is the condition of a chained `else if` statement
|
||||
|
|
||||
LL | } else { falsy! {} } {
|
||||
| + +
|
||||
LL | } else if falsy! {} {
|
||||
| ++
|
||||
|
||||
error: expected `{`, found `falsy`
|
||||
--> $DIR/else-no-if.rs:54:12
|
||||
@ -87,7 +89,7 @@ error: expected `{`, found `falsy`
|
||||
LL | } else falsy! {};
|
||||
| ^^^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | } else { falsy! {} };
|
||||
| + +
|
||||
|
@ -23,7 +23,7 @@ note: the `if` expression is missing a block after this condition
|
||||
|
|
||||
LL | if let () = () 'a {}
|
||||
| ^^^^^^^^^^^
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | if let () = () { 'a {} }
|
||||
| + +
|
||||
@ -53,7 +53,7 @@ note: the `if` expression is missing a block after this condition
|
||||
|
|
||||
LL | if true 'a {}
|
||||
| ^^^^
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | if true { 'a {} }
|
||||
| + +
|
||||
@ -80,7 +80,7 @@ LL | loop 'a {}
|
||||
| |
|
||||
| while parsing this `loop` expression
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | loop { 'a {} }
|
||||
| + +
|
||||
@ -108,7 +108,7 @@ LL | while true 'a {}
|
||||
| | this `while` condition successfully parsed
|
||||
| while parsing the body of this `while` expression
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | while true { 'a {} }
|
||||
| + +
|
||||
@ -136,7 +136,7 @@ LL | while let () = () 'a {}
|
||||
| | this `while` condition successfully parsed
|
||||
| while parsing the body of this `while` expression
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | while let () = () { 'a {} }
|
||||
| + +
|
||||
@ -161,7 +161,7 @@ error: expected `{`, found `'a`
|
||||
LL | for _ in 0..0 'a {}
|
||||
| ^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | for _ in 0..0 { 'a {} }
|
||||
| + +
|
||||
@ -188,7 +188,7 @@ LL | unsafe 'a {}
|
||||
| |
|
||||
| while parsing this `unsafe` expression
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | unsafe { 'a {} }
|
||||
| + +
|
||||
|
@ -0,0 +1,39 @@
|
||||
//@ run-rustfix
|
||||
#![allow(dead_code)]
|
||||
fn main() {
|
||||
for _ in [1, 2, 3].iter().map(|x| x) {}
|
||||
//~^ ERROR expected `{`, found `map`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo5() {
|
||||
let x = (vec![1, 2, 3],);
|
||||
for _ in x.0 {}
|
||||
//~^ ERROR expected `{`, found `0`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo6() {
|
||||
let x = ((vec![1, 2, 3],),);
|
||||
for _ in x.0.0 {}
|
||||
//~^ ERROR expected `{`, found `0.0`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo7() {
|
||||
let x = Some(vec![1, 2, 3]);
|
||||
for _ in x.unwrap() {}
|
||||
//~^ ERROR expected `{`, found `unwrap`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo8() {
|
||||
let x = S { a: A { b: vec![1, 2, 3] } };
|
||||
for _ in x.a.b {}
|
||||
//~^ ERROR expected `{`, found `a`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
|
||||
struct S {
|
||||
a: A,
|
||||
}
|
||||
|
||||
struct A {
|
||||
b: Vec<i32>,
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
//@ run-rustfix
|
||||
#![allow(dead_code)]
|
||||
fn main() {
|
||||
for _ in [1, 2, 3].iter()map(|x| x) {}
|
||||
//~^ ERROR expected `{`, found `map`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo5() {
|
||||
let x = (vec![1, 2, 3],);
|
||||
for _ in x 0 {}
|
||||
//~^ ERROR expected `{`, found `0`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo6() {
|
||||
let x = ((vec![1, 2, 3],),);
|
||||
for _ in x 0.0 {}
|
||||
//~^ ERROR expected `{`, found `0.0`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo7() {
|
||||
let x = Some(vec![1, 2, 3]);
|
||||
for _ in x unwrap() {}
|
||||
//~^ ERROR expected `{`, found `unwrap`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo8() {
|
||||
let x = S { a: A { b: vec![1, 2, 3] } };
|
||||
for _ in x a.b {}
|
||||
//~^ ERROR expected `{`, found `a`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
|
||||
struct S {
|
||||
a: A,
|
||||
}
|
||||
|
||||
struct A {
|
||||
b: Vec<i32>,
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
error: expected `{`, found `map`
|
||||
--> $DIR/missing-dot-on-if-condition-expression-fixable.rs:4:30
|
||||
|
|
||||
LL | for _ in [1, 2, 3].iter()map(|x| x) {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a method call
|
||||
|
|
||||
LL | for _ in [1, 2, 3].iter().map(|x| x) {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `0`
|
||||
--> $DIR/missing-dot-on-if-condition-expression-fixable.rs:10:16
|
||||
|
|
||||
LL | for _ in x 0 {}
|
||||
| ^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in x.0 {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `0.0`
|
||||
--> $DIR/missing-dot-on-if-condition-expression-fixable.rs:16:16
|
||||
|
|
||||
LL | for _ in x 0.0 {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in x.0.0 {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `unwrap`
|
||||
--> $DIR/missing-dot-on-if-condition-expression-fixable.rs:22:16
|
||||
|
|
||||
LL | for _ in x unwrap() {}
|
||||
| ^^^^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a method call
|
||||
|
|
||||
LL | for _ in x.unwrap() {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `a`
|
||||
--> $DIR/missing-dot-on-if-condition-expression-fixable.rs:28:16
|
||||
|
|
||||
LL | for _ in x a.b {}
|
||||
| ^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in x.a.b {}
|
||||
| +
|
||||
|
||||
error: aborting due to 5 previous errors
|
||||
|
@ -0,0 +1,57 @@
|
||||
fn main() {
|
||||
for _ in [1, 2, 3].iter()map(|x| x) {}
|
||||
//~^ ERROR expected `{`, found `map`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo1() {
|
||||
for _ in 1.3f64 cos() {}
|
||||
//~^ ERROR expected `{`, found `cos`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo2() {
|
||||
for _ in 1.3 cos {}
|
||||
//~^ ERROR expected `{`, found `cos`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo3() {
|
||||
for _ in 1 cos() {}
|
||||
//~^ ERROR expected `{`, found `cos`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo4() {
|
||||
for _ in 1 cos {}
|
||||
//~^ ERROR expected `{`, found `cos`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo5() {
|
||||
let x = (vec![1, 2, 3],);
|
||||
for _ in x 0 {}
|
||||
//~^ ERROR expected `{`, found `0`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo6() {
|
||||
let x = ((vec![1, 2, 3],),);
|
||||
for _ in x 0.0 {}
|
||||
//~^ ERROR expected `{`, found `0.0`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
fn foo7() {
|
||||
let x = Some(vec![1, 2, 3]);
|
||||
for _ in x unwrap() {}
|
||||
//~^ ERROR expected `{`, found `unwrap`
|
||||
//~| HELP you might have meant to write a method call
|
||||
}
|
||||
fn foo8() {
|
||||
let x = S { a: A { b: vec![1, 2, 3] } };
|
||||
for _ in x a.b {}
|
||||
//~^ ERROR expected `{`, found `a`
|
||||
//~| HELP you might have meant to write a field access
|
||||
}
|
||||
|
||||
struct S {
|
||||
a: A,
|
||||
}
|
||||
|
||||
struct A {
|
||||
b: Vec<i32>,
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
error: expected `{`, found `map`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:2:30
|
||||
|
|
||||
LL | for _ in [1, 2, 3].iter()map(|x| x) {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a method call
|
||||
|
|
||||
LL | for _ in [1, 2, 3].iter().map(|x| x) {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `cos`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:7:21
|
||||
|
|
||||
LL | for _ in 1.3f64 cos() {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a method call
|
||||
|
|
||||
LL | for _ in 1.3f64.cos() {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `cos`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:12:18
|
||||
|
|
||||
LL | for _ in 1.3 cos {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in 1.3.cos {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `cos`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:17:16
|
||||
|
|
||||
LL | for _ in 1 cos() {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a method call
|
||||
|
|
||||
LL | for _ in 1.cos() {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `cos`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:22:16
|
||||
|
|
||||
LL | for _ in 1 cos {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in 1.cos {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `0`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:28:16
|
||||
|
|
||||
LL | for _ in x 0 {}
|
||||
| ^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in x.0 {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `0.0`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:34:16
|
||||
|
|
||||
LL | for _ in x 0.0 {}
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in x.0.0 {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `unwrap`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:40:16
|
||||
|
|
||||
LL | for _ in x unwrap() {}
|
||||
| ^^^^^^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a method call
|
||||
|
|
||||
LL | for _ in x.unwrap() {}
|
||||
| +
|
||||
|
||||
error: expected `{`, found `a`
|
||||
--> $DIR/missing-dot-on-if-condition-expression.rs:46:16
|
||||
|
|
||||
LL | for _ in x a.b {}
|
||||
| ^ expected `{`
|
||||
|
|
||||
help: you might have meant to write a field access
|
||||
|
|
||||
LL | for _ in x.a.b {}
|
||||
| +
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
|
@ -6,7 +6,7 @@ LL | unsafe //{
|
||||
LL | std::mem::transmute::<f32, u32>(1.0);
|
||||
| ^^^ expected `{`
|
||||
|
|
||||
help: try placing this code inside a block
|
||||
help: you might have meant to write this as part of a block
|
||||
|
|
||||
LL | { std::mem::transmute::<f32, u32>(1.0); }
|
||||
| + +
|
||||
|
Loading…
Reference in New Issue
Block a user