From ce9ef37fe682e2677f19a73d6a90d34b6085ebdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Mon, 1 Jan 2018 16:37:14 -0800 Subject: [PATCH] Readd suggestion in enum variants with incorrect args --- src/librustc_resolve/lib.rs | 12 ++++++++++++ src/test/ui/resolve/issue-18252.stderr | 2 +- src/test/ui/resolve/issue-19452.stderr | 4 ++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 29ca160fac0d..e21f619d6c37 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2730,6 +2730,18 @@ impl<'a> Resolver<'a> { } return (err, candidates); } + (Def::VariantCtor(_, ctor_kind), _) if ns == ValueNS && is_struct_like(def) => { + let block = match ctor_kind { + CtorKind::Fn => "(/* fields */)", + CtorKind::Fictive => " { /* fields */ }", + def => bug!("found def `{:?}` when looking for a ctor", + def), + }; + err.span_label(span, format!("did you mean `{}{}`?", + path_str, + block)); + return (err, candidates); + } _ => {} } } diff --git a/src/test/ui/resolve/issue-18252.stderr b/src/test/ui/resolve/issue-18252.stderr index f93007c8b614..edc7196d8464 100644 --- a/src/test/ui/resolve/issue-18252.stderr +++ b/src/test/ui/resolve/issue-18252.stderr @@ -2,7 +2,7 @@ error[E0423]: expected function, found struct variant `Foo::Variant` --> $DIR/issue-18252.rs:16:13 | 16 | let f = Foo::Variant(42); - | ^^^^^^^^^^^^ not a function + | ^^^^^^^^^^^^ did you mean `Foo::Variant { /* fields */ }`? error: aborting due to previous error diff --git a/src/test/ui/resolve/issue-19452.stderr b/src/test/ui/resolve/issue-19452.stderr index 44690158b587..7b14d49af51d 100644 --- a/src/test/ui/resolve/issue-19452.stderr +++ b/src/test/ui/resolve/issue-19452.stderr @@ -2,13 +2,13 @@ error[E0423]: expected value, found struct variant `Homura::Madoka` --> $DIR/issue-19452.rs:19:18 | 19 | let homura = Homura::Madoka; - | ^^^^^^^^^^^^^^ not a value + | ^^^^^^^^^^^^^^ did you mean `Homura::Madoka { /* fields */ }`? error[E0423]: expected value, found struct variant `issue_19452_aux::Homura::Madoka` --> $DIR/issue-19452.rs:22:18 | 22 | let homura = issue_19452_aux::Homura::Madoka; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a value + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ did you mean `issue_19452_aux::Homura::Madoka { /* fields */ }`? error: aborting due to 2 previous errors