Skip to content

Commit c078769

Browse files
Add new help messages for E0425
1 parent 3820150 commit c078769

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

src/librustc_resolve/lib.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ use rustc_front::intravisit::{self, FnKind, Visitor};
7272
use rustc_front::hir;
7373
use rustc_front::hir::{Arm, BindByRef, BindByValue, BindingMode, Block};
7474
use rustc_front::hir::Crate;
75-
use rustc_front::hir::{Expr, ExprAgain, ExprBreak, ExprField};
75+
use rustc_front::hir::{Expr, ExprAgain, ExprBreak, ExprCall, ExprField};
7676
use rustc_front::hir::{ExprLoop, ExprWhile, ExprMethodCall};
7777
use rustc_front::hir::{ExprPath, ExprStruct, FnDecl};
7878
use rustc_front::hir::{ForeignItemFn, ForeignItemStatic, Generics};
@@ -423,7 +423,7 @@ fn resolve_error<'b, 'a: 'b, 'tcx: 'a>(resolver: &'b Resolver<'a, 'tcx>,
423423
msg);
424424

425425
match context {
426-
UnresolvedNameContext::Other => {} // no help available
426+
UnresolvedNameContext::Other => { } // no help available
427427
UnresolvedNameContext::PathIsMod(id) => {
428428
let mut help_msg = String::new();
429429
let parent_id = resolver.ast_map.get_parent_node(id);
@@ -436,17 +436,22 @@ fn resolve_error<'b, 'a: 'b, 'tcx: 'a>(resolver: &'b Resolver<'a, 'tcx>,
436436
module = &*path,
437437
ident = ident.node);
438438
}
439-
440439
ExprMethodCall(ident, _, _) => {
441440
help_msg = format!("To call a function from the \
442441
`{module}` module, use \
443442
`{module}::{ident}(..)`",
444443
module = &*path,
445444
ident = ident.node);
446445
}
447-
448-
_ => {} // no help available
446+
ExprCall(_, _) => {
447+
help_msg = format!("No function corresponds to `{module}(..)`",
448+
module = &*path);
449+
}
450+
_ => { } // no help available
449451
}
452+
} else {
453+
help_msg = format!("Module `{module}` cannot be the value of an expression",
454+
module = &*path);
450455
}
451456

452457
if !help_msg.is_empty() {

src/test/compile-fail/suggest-path-instead-of-mod-dot-item.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,15 @@ fn h6() -> i32 {
5858
//~^ ERROR E0425
5959
//~| HELP To call a function from the `a::b` module, use `a::b::f(..)`
6060
}
61+
62+
fn h7() {
63+
a::b
64+
//~^ ERROR E0425
65+
//~| HELP Module `a::b` cannot be the value of an expression
66+
}
67+
68+
fn h8() -> i32 {
69+
a::b()
70+
//~^ ERROR E0425
71+
//~| HELP No function corresponds to `a::b(..)`
72+
}

0 commit comments

Comments
 (0)