From eca0ab25d867dd493b9a36ceaa7c79d9cb73d088 Mon Sep 17 00:00:00 2001 From: ggomez Date: Tue, 16 Feb 2016 14:47:37 +0100 Subject: [PATCH] Add check on find_best_match_for_name and improve help message for undefined macro --- src/libsyntax/ext/base.rs | 7 ++++++- src/test/compile-fail/macro_undefined.rs | 25 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/test/compile-fail/macro_undefined.rs diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 8fc72418eb0..2a9d96fa861 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -760,7 +760,12 @@ impl<'a> ExtCtxt<'a> { err: &mut DiagnosticBuilder<'a>) { let names = &self.syntax_env.names; if let Some(suggestion) = find_best_match_for_name(names.iter(), name, None) { - err.fileline_help(span, &format!("did you mean `{}!`?", suggestion)); + if suggestion != name { + err.fileline_help(span, &format!("did you mean `{}!`?", suggestion)); + } else { + err.fileline_help(span, &format!("have you added the `#[macro_use]` on the \ + module/import?")); + } } } } diff --git a/src/test/compile-fail/macro_undefined.rs b/src/test/compile-fail/macro_undefined.rs new file mode 100644 index 00000000000..d9f86e3e62a --- /dev/null +++ b/src/test/compile-fail/macro_undefined.rs @@ -0,0 +1,25 @@ +// Copyright 2014 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test macro_undefined issue + +mod m { + #[macro_export] + macro_rules! kl { + () => () + } +} + +fn main() { + k!(); //~ ERROR macro undefined: 'k!' + //~^ HELP did you mean `kl!`? + kl!(); //~ ERROR macro undefined: 'kl!' + //~^ HELP have you added the `#[macro_use]` on the module/import? +}