From c07876951be2d5619727ca2f4847c24f6682c598 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 24 Dec 2015 20:44:14 +0100 Subject: [PATCH] Add new help messages for E0425 --- src/librustc_resolve/lib.rs | 15 ++++++++++----- .../suggest-path-instead-of-mod-dot-item.rs | 12 ++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 5711807a6172f..201012073b1a7 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -72,7 +72,7 @@ use rustc_front::intravisit::{self, FnKind, Visitor}; use rustc_front::hir; use rustc_front::hir::{Arm, BindByRef, BindByValue, BindingMode, Block}; use rustc_front::hir::Crate; -use rustc_front::hir::{Expr, ExprAgain, ExprBreak, ExprField}; +use rustc_front::hir::{Expr, ExprAgain, ExprBreak, ExprCall, ExprField}; use rustc_front::hir::{ExprLoop, ExprWhile, ExprMethodCall}; use rustc_front::hir::{ExprPath, ExprStruct, FnDecl}; use rustc_front::hir::{ForeignItemFn, ForeignItemStatic, Generics}; @@ -423,7 +423,7 @@ fn resolve_error<'b, 'a: 'b, 'tcx: 'a>(resolver: &'b Resolver<'a, 'tcx>, msg); match context { - UnresolvedNameContext::Other => {} // no help available + UnresolvedNameContext::Other => { } // no help available UnresolvedNameContext::PathIsMod(id) => { let mut help_msg = String::new(); let parent_id = resolver.ast_map.get_parent_node(id); @@ -436,7 +436,6 @@ fn resolve_error<'b, 'a: 'b, 'tcx: 'a>(resolver: &'b Resolver<'a, 'tcx>, module = &*path, ident = ident.node); } - ExprMethodCall(ident, _, _) => { help_msg = format!("To call a function from the \ `{module}` module, use \ @@ -444,9 +443,15 @@ fn resolve_error<'b, 'a: 'b, 'tcx: 'a>(resolver: &'b Resolver<'a, 'tcx>, module = &*path, ident = ident.node); } - - _ => {} // no help available + ExprCall(_, _) => { + help_msg = format!("No function corresponds to `{module}(..)`", + module = &*path); + } + _ => { } // no help available } + } else { + help_msg = format!("Module `{module}` cannot be the value of an expression", + module = &*path); } if !help_msg.is_empty() { diff --git a/src/test/compile-fail/suggest-path-instead-of-mod-dot-item.rs b/src/test/compile-fail/suggest-path-instead-of-mod-dot-item.rs index ecf17fa84d7e3..1d04679fd11e7 100644 --- a/src/test/compile-fail/suggest-path-instead-of-mod-dot-item.rs +++ b/src/test/compile-fail/suggest-path-instead-of-mod-dot-item.rs @@ -58,3 +58,15 @@ fn h6() -> i32 { //~^ ERROR E0425 //~| HELP To call a function from the `a::b` module, use `a::b::f(..)` } + +fn h7() { + a::b + //~^ ERROR E0425 + //~| HELP Module `a::b` cannot be the value of an expression +} + +fn h8() -> i32 { + a::b() + //~^ ERROR E0425 + //~| HELP No function corresponds to `a::b(..)` +}