diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2018-01-01 16:37:14 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2018-01-15 02:03:03 -0800 |
| commit | ce9ef37fe682e2677f19a73d6a90d34b6085ebdb (patch) | |
| tree | 4873dc56429a716af016f248d14dfa8307b2f34c /src | |
| parent | a317da42b16ffe4d06c12ab795aef3cbc0859de9 (diff) | |
| download | rust-ce9ef37fe682e2677f19a73d6a90d34b6085ebdb.tar.gz rust-ce9ef37fe682e2677f19a73d6a90d34b6085ebdb.zip | |
Readd suggestion in enum variants with incorrect args
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_resolve/lib.rs | 12 | ||||
| -rw-r--r-- | src/test/ui/resolve/issue-18252.stderr | 2 | ||||
| -rw-r--r-- | 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 29ca160fac0..e21f619d6c3 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 f93007c8b61..edc7196d846 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 44690158b58..7b14d49af51 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 |
