f3e9b1a703
Now the main span focuses on the erroneous not-a-function callee, while showing the entire call expression is relegated to a secondary span. In the case where the erroneous callee is itself a call, we point out the definition, and, if the call expression spans multiple lines, tentatively suggest a semicolon (because we suspect that the "outer" call is actually supposed to be a tuple). The new `bug!` assertion is, in fact, safe (`confirm_builtin_call` is only called by `check_call`, which is only called with a first arg of kind `ExprKind::Call` in `check_expr_kind`). Resolves #51055.
23 lines
749 B
Rust
23 lines
749 B
Rust
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution and at
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
macro_rules! macro_panic {
|
|
($not_a_function:expr, $some_argument:ident) => {
|
|
$not_a_function($some_argument)
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let mut value_a = 0;
|
|
let mut value_b = 0;
|
|
macro_panic!(value_a, value_b);
|
|
//~^ ERROR expected function, found `{integer}`
|
|
}
|