mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-04 04:39:16 +00:00
improve unknown enum variant errors
This commit is contained in:
parent
3750348daf
commit
757ef38431
@ -1362,12 +1362,11 @@ impl<'o, 'gcx: 'tcx, 'tcx> dyn AstConv<'gcx, 'tcx> + 'o {
|
|||||||
let msg = format!("expected type, found variant `{}`", assoc_ident);
|
let msg = format!("expected type, found variant `{}`", assoc_ident);
|
||||||
tcx.sess.span_err(span, &msg);
|
tcx.sess.span_err(span, &msg);
|
||||||
} else if qself_ty.is_enum() {
|
} else if qself_ty.is_enum() {
|
||||||
// Report as incorrect enum variant rather than ambiguous type.
|
|
||||||
let mut err = tcx.sess.struct_span_err(
|
let mut err = tcx.sess.struct_span_err(
|
||||||
span,
|
assoc_ident.span,
|
||||||
&format!("no variant `{}` on enum `{}`", &assoc_ident.as_str(), qself_ty),
|
&format!("no variant `{}` in enum `{}`", assoc_ident, qself_ty),
|
||||||
);
|
);
|
||||||
// Check if it was a typo.
|
|
||||||
let adt_def = qself_ty.ty_adt_def().expect("enum is not an ADT");
|
let adt_def = qself_ty.ty_adt_def().expect("enum is not an ADT");
|
||||||
if let Some(suggested_name) = find_best_match_for_name(
|
if let Some(suggested_name) = find_best_match_for_name(
|
||||||
adt_def.variants.iter().map(|variant| &variant.ident.name),
|
adt_def.variants.iter().map(|variant| &variant.ident.name),
|
||||||
@ -1375,14 +1374,20 @@ impl<'o, 'gcx: 'tcx, 'tcx> dyn AstConv<'gcx, 'tcx> + 'o {
|
|||||||
None,
|
None,
|
||||||
) {
|
) {
|
||||||
err.span_suggestion(
|
err.span_suggestion(
|
||||||
span,
|
assoc_ident.span,
|
||||||
"did you mean",
|
"there is a variant with a similar name",
|
||||||
format!("{}::{}", qself_ty, suggested_name),
|
suggested_name.to_string(),
|
||||||
Applicability::MaybeIncorrect,
|
Applicability::MaybeIncorrect,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
err.span_label(span, "unknown variant");
|
err.span_label(span, format!("variant not found in `{}`", qself_ty));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(sp) = tcx.hir().span_if_local(adt_def.did) {
|
||||||
|
let sp = tcx.sess.source_map().def_span(sp);
|
||||||
|
err.span_label(sp, format!("variant `{}` not found here", assoc_ident));
|
||||||
|
}
|
||||||
|
|
||||||
err.emit();
|
err.emit();
|
||||||
} else if !qself_ty.references_error() {
|
} else if !qself_ty.references_error() {
|
||||||
// Don't print `TyErr` to the user.
|
// Don't print `TyErr` to the user.
|
||||||
|
@ -14,11 +14,11 @@ use rustc::hir::map as hir_map;
|
|||||||
use rustc::hir::print;
|
use rustc::hir::print;
|
||||||
use rustc::infer::type_variable::TypeVariableOrigin;
|
use rustc::infer::type_variable::TypeVariableOrigin;
|
||||||
use rustc::traits::Obligation;
|
use rustc::traits::Obligation;
|
||||||
use rustc::ty::{self, Adt, Ty, TyCtxt, ToPolyTraitRef, ToPredicate, TypeFoldable};
|
use rustc::ty::{self, Ty, TyCtxt, ToPolyTraitRef, ToPredicate, TypeFoldable};
|
||||||
use rustc::ty::print::with_crate_prefix;
|
use rustc::ty::print::with_crate_prefix;
|
||||||
use syntax_pos::{Span, FileName};
|
use syntax_pos::{Span, FileName};
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::util::lev_distance::find_best_match_for_name;
|
use syntax::util::lev_distance;
|
||||||
|
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
|
|
||||||
@ -188,17 +188,10 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
|||||||
let actual = self.resolve_type_vars_if_possible(&rcvr_ty);
|
let actual = self.resolve_type_vars_if_possible(&rcvr_ty);
|
||||||
let ty_str = self.ty_to_string(actual);
|
let ty_str = self.ty_to_string(actual);
|
||||||
let is_method = mode == Mode::MethodCall;
|
let is_method = mode == Mode::MethodCall;
|
||||||
let mut suggestion = None;
|
|
||||||
let item_kind = if is_method {
|
let item_kind = if is_method {
|
||||||
"method"
|
"method"
|
||||||
} else if actual.is_enum() {
|
} else if actual.is_enum() {
|
||||||
if let Adt(ref adt_def, _) = actual.sty {
|
"variant or associated item"
|
||||||
let names = adt_def.variants.iter().map(|s| &s.ident.name);
|
|
||||||
suggestion = find_best_match_for_name(names,
|
|
||||||
&item_name.as_str(),
|
|
||||||
None);
|
|
||||||
}
|
|
||||||
"variant"
|
|
||||||
} else {
|
} else {
|
||||||
match (item_name.as_str().chars().next(), actual.is_fresh_ty()) {
|
match (item_name.as_str().chars().next(), actual.is_fresh_ty()) {
|
||||||
(Some(name), false) if name.is_lowercase() => {
|
(Some(name), false) if name.is_lowercase() => {
|
||||||
@ -299,7 +292,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
span = item_name.span;
|
span = item_name.span;
|
||||||
let mut err = struct_span_err!(
|
struct_span_err!(
|
||||||
tcx.sess,
|
tcx.sess,
|
||||||
span,
|
span,
|
||||||
E0599,
|
E0599,
|
||||||
@ -307,17 +300,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
|||||||
item_kind,
|
item_kind,
|
||||||
item_name,
|
item_name,
|
||||||
ty_str
|
ty_str
|
||||||
);
|
)
|
||||||
if let Some(suggestion) = suggestion {
|
|
||||||
// enum variant
|
|
||||||
err.span_suggestion(
|
|
||||||
span,
|
|
||||||
"did you mean",
|
|
||||||
suggestion.to_string(),
|
|
||||||
Applicability::MaybeIncorrect,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
err
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tcx.sess.diagnostic().struct_dummy()
|
tcx.sess.diagnostic().struct_dummy()
|
||||||
@ -469,14 +452,36 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
|||||||
out_of_scope_traits);
|
out_of_scope_traits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if actual.is_enum() {
|
||||||
|
let adt_def = actual.ty_adt_def().expect("enum is not an ADT");
|
||||||
|
if let Some(suggestion) = lev_distance::find_best_match_for_name(
|
||||||
|
adt_def.variants.iter().map(|s| &s.ident.name),
|
||||||
|
&item_name.as_str(),
|
||||||
|
None,
|
||||||
|
) {
|
||||||
|
err.span_suggestion(
|
||||||
|
span,
|
||||||
|
"there is a variant with a similar name",
|
||||||
|
suggestion.to_string(),
|
||||||
|
Applicability::MaybeIncorrect,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(lev_candidate) = lev_candidate {
|
if let Some(lev_candidate) = lev_candidate {
|
||||||
|
let def = lev_candidate.def();
|
||||||
err.span_suggestion(
|
err.span_suggestion(
|
||||||
span,
|
span,
|
||||||
"did you mean",
|
&format!(
|
||||||
|
"there is {} {} with a similar name",
|
||||||
|
def.article(),
|
||||||
|
def.kind_name(),
|
||||||
|
),
|
||||||
lev_candidate.ident.to_string(),
|
lev_candidate.ident.to_string(),
|
||||||
Applicability::MaybeIncorrect,
|
Applicability::MaybeIncorrect,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
err.emit();
|
err.emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
20
src/test/ui/associated-item/associated-item-enum.rs
Normal file
20
src/test/ui/associated-item/associated-item-enum.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
enum Enum { Variant }
|
||||||
|
|
||||||
|
impl Enum {
|
||||||
|
const MISSPELLABLE: i32 = 0;
|
||||||
|
fn misspellable() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
trait Trait {
|
||||||
|
fn misspellable_trait() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Trait for Enum {
|
||||||
|
fn misspellable_trait() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
Enum::mispellable(); //~ ERROR no variant or associated item
|
||||||
|
Enum::mispellable_trait(); //~ ERROR no variant or associated item
|
||||||
|
Enum::MISPELLABLE; //~ ERROR no variant or associated item
|
||||||
|
}
|
36
src/test/ui/associated-item/associated-item-enum.stderr
Normal file
36
src/test/ui/associated-item/associated-item-enum.stderr
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
error[E0599]: no variant or associated item named `mispellable` found for type `Enum` in the current scope
|
||||||
|
--> $DIR/associated-item-enum.rs:17:11
|
||||||
|
|
|
||||||
|
LL | enum Enum { Variant }
|
||||||
|
| --------- variant or associated item `mispellable` not found here
|
||||||
|
...
|
||||||
|
LL | Enum::mispellable();
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
| |
|
||||||
|
| variant or associated item not found in `Enum`
|
||||||
|
| help: there is a method with a similar name: `misspellable`
|
||||||
|
|
||||||
|
error[E0599]: no variant or associated item named `mispellable_trait` found for type `Enum` in the current scope
|
||||||
|
--> $DIR/associated-item-enum.rs:18:11
|
||||||
|
|
|
||||||
|
LL | enum Enum { Variant }
|
||||||
|
| --------- variant or associated item `mispellable_trait` not found here
|
||||||
|
...
|
||||||
|
LL | Enum::mispellable_trait();
|
||||||
|
| ^^^^^^^^^^^^^^^^^ variant or associated item not found in `Enum`
|
||||||
|
|
||||||
|
error[E0599]: no variant or associated item named `MISPELLABLE` found for type `Enum` in the current scope
|
||||||
|
--> $DIR/associated-item-enum.rs:19:11
|
||||||
|
|
|
||||||
|
LL | enum Enum { Variant }
|
||||||
|
| --------- variant or associated item `MISPELLABLE` not found here
|
||||||
|
...
|
||||||
|
LL | Enum::MISPELLABLE;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
| |
|
||||||
|
| variant or associated item not found in `Enum`
|
||||||
|
| help: there is an associated constant with a similar name: `MISSPELLABLE`
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0599`.
|
@ -2,7 +2,7 @@ error[E0599]: no method named `test_mut` found for type `std::vec::Vec<{integer}
|
|||||||
--> $DIR/auto-ref-slice-plus-ref.rs:7:7
|
--> $DIR/auto-ref-slice-plus-ref.rs:7:7
|
||||||
|
|
|
|
||||||
LL | a.test_mut();
|
LL | a.test_mut();
|
||||||
| ^^^^^^^^ help: did you mean: `get_mut`
|
| ^^^^^^^^ help: there is a method with a similar name: `get_mut`
|
||||||
|
|
|
|
||||||
= help: items from traits can only be used if the trait is implemented and in scope
|
= help: items from traits can only be used if the trait is implemented and in scope
|
||||||
= note: the following trait defines an item `test_mut`, perhaps you need to implement it:
|
= note: the following trait defines an item `test_mut`, perhaps you need to implement it:
|
||||||
|
@ -2,7 +2,7 @@ error[E0599]: no method named `b` found for type `&Self` in the current scope
|
|||||||
--> $DIR/issue-3563.rs:3:17
|
--> $DIR/issue-3563.rs:3:17
|
||||||
|
|
|
|
||||||
LL | || self.b()
|
LL | || self.b()
|
||||||
| ^ help: did you mean: `a`
|
| ^ help: there is a method with a similar name: `a`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
error[E0599]: no variant named `Hsl` found for type `Color` in the current scope
|
error[E0599]: no variant or associated item named `Hsl` found for type `Color` in the current scope
|
||||||
--> $DIR/bogus-tag.rs:7:16
|
--> $DIR/bogus-tag.rs:7:16
|
||||||
|
|
|
|
||||||
LL | enum Color { Rgb(isize, isize, isize), Rgba(isize, isize, isize, isize), }
|
LL | enum Color { Rgb(isize, isize, isize), Rgba(isize, isize, isize, isize), }
|
||||||
| ---------- variant `Hsl` not found here
|
| ---------- variant or associated item `Hsl` not found here
|
||||||
...
|
...
|
||||||
LL | Color::Hsl(h, s, l) => { println!("hsl"); }
|
LL | Color::Hsl(h, s, l) => { println!("hsl"); }
|
||||||
| ^^^ variant not found in `Color`
|
| ^^^ variant or associated item not found in `Color`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
@ -19,6 +19,8 @@ fn main() {
|
|||||||
|
|
||||||
let xe1 = XEmpty1; //~ ERROR expected value, found struct `XEmpty1`
|
let xe1 = XEmpty1; //~ ERROR expected value, found struct `XEmpty1`
|
||||||
let xe1 = XEmpty1(); //~ ERROR expected function, found struct `XEmpty1`
|
let xe1 = XEmpty1(); //~ ERROR expected function, found struct `XEmpty1`
|
||||||
let xe3 = XE::Empty3; //~ ERROR no variant named `Empty3` found for type
|
let xe3 = XE::Empty3; //~ ERROR no variant or associated item named `Empty3` found for type
|
||||||
let xe3 = XE::Empty3(); //~ ERROR no variant named `Empty3` found for type
|
let xe3 = XE::Empty3(); //~ ERROR no variant or associated item named `Empty3` found for type
|
||||||
|
|
||||||
|
XE::Empty1 {}; //~ ERROR no variant `Empty1` in enum `empty_struct::XE`
|
||||||
}
|
}
|
||||||
|
@ -46,25 +46,31 @@ LL | let xe1 = XEmpty1();
|
|||||||
| did you mean `XEmpty1 { /* fields */ }`?
|
| did you mean `XEmpty1 { /* fields */ }`?
|
||||||
| help: a unit struct with a similar name exists: `XEmpty2`
|
| help: a unit struct with a similar name exists: `XEmpty2`
|
||||||
|
|
||||||
error[E0599]: no variant named `Empty3` found for type `empty_struct::XE` in the current scope
|
error[E0599]: no variant or associated item named `Empty3` found for type `empty_struct::XE` in the current scope
|
||||||
--> $DIR/empty-struct-braces-expr.rs:22:19
|
--> $DIR/empty-struct-braces-expr.rs:22:19
|
||||||
|
|
|
|
||||||
LL | let xe3 = XE::Empty3;
|
LL | let xe3 = XE::Empty3;
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
| |
|
| |
|
||||||
| variant not found in `empty_struct::XE`
|
| variant or associated item not found in `empty_struct::XE`
|
||||||
| help: did you mean: `XEmpty3`
|
| help: there is a variant with a similar name: `XEmpty3`
|
||||||
|
|
||||||
error[E0599]: no variant named `Empty3` found for type `empty_struct::XE` in the current scope
|
error[E0599]: no variant or associated item named `Empty3` found for type `empty_struct::XE` in the current scope
|
||||||
--> $DIR/empty-struct-braces-expr.rs:23:19
|
--> $DIR/empty-struct-braces-expr.rs:23:19
|
||||||
|
|
|
|
||||||
LL | let xe3 = XE::Empty3();
|
LL | let xe3 = XE::Empty3();
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
| |
|
| |
|
||||||
| variant not found in `empty_struct::XE`
|
| variant or associated item not found in `empty_struct::XE`
|
||||||
| help: did you mean: `XEmpty3`
|
| help: there is a variant with a similar name: `XEmpty3`
|
||||||
|
|
||||||
error: aborting due to 8 previous errors
|
error: no variant `Empty1` in enum `empty_struct::XE`
|
||||||
|
--> $DIR/empty-struct-braces-expr.rs:25:9
|
||||||
|
|
|
||||||
|
LL | XE::Empty1 {};
|
||||||
|
| ^^^^^^ help: there is a variant with a similar name: `XEmpty3`
|
||||||
|
|
||||||
|
error: aborting due to 9 previous errors
|
||||||
|
|
||||||
Some errors occurred: E0423, E0599.
|
Some errors occurred: E0423, E0599.
|
||||||
For more information about an error, try `rustc --explain E0423`.
|
For more information about an error, try `rustc --explain E0423`.
|
||||||
|
@ -2,7 +2,7 @@ enum Delicious {
|
|||||||
Pie = 0x1,
|
Pie = 0x1,
|
||||||
Apple = 0x2,
|
Apple = 0x2,
|
||||||
ApplePie = Delicious::Apple as isize | Delicious::PIE as isize,
|
ApplePie = Delicious::Apple as isize | Delicious::PIE as isize,
|
||||||
//~^ ERROR no variant named `PIE` found for type `Delicious`
|
//~^ ERROR no variant or associated item named `PIE` found for type `Delicious`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
error[E0599]: no variant named `PIE` found for type `Delicious` in the current scope
|
error[E0599]: no variant or associated item named `PIE` found for type `Delicious` in the current scope
|
||||||
--> $DIR/issue-22933-2.rs:4:55
|
--> $DIR/issue-22933-2.rs:4:55
|
||||||
|
|
|
|
||||||
LL | enum Delicious {
|
LL | enum Delicious {
|
||||||
| -------------- variant `PIE` not found here
|
| -------------- variant or associated item `PIE` not found here
|
||||||
...
|
...
|
||||||
LL | ApplePie = Delicious::Apple as isize | Delicious::PIE as isize,
|
LL | ApplePie = Delicious::Apple as isize | Delicious::PIE as isize,
|
||||||
| ^^^ variant not found in `Delicious`
|
| ^^^ variant or associated item not found in `Delicious`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
@ -6,12 +6,8 @@ struct Struct {
|
|||||||
fn use_token(token: &Token) { unimplemented!() }
|
fn use_token(token: &Token) { unimplemented!() }
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
use_token(&Token::Homura);
|
use_token(&Token::Homura); //~ ERROR no variant or associated item named `Homura`
|
||||||
//~^ ERROR no variant named `Homura`
|
Struct::method(); //~ ERROR no function or associated item named `method` found for type
|
||||||
Struct::method();
|
Struct::method; //~ ERROR no function or associated item named `method` found for type
|
||||||
//~^ ERROR no function or associated item named `method` found for type
|
Struct::Assoc; //~ ERROR no associated item named `Assoc` found for type `Struct` in
|
||||||
Struct::method;
|
|
||||||
//~^ ERROR no function or associated item named `method` found for type
|
|
||||||
Struct::Assoc;
|
|
||||||
//~^ ERROR no associated item named `Assoc` found for type `Struct` in
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
error[E0599]: no variant named `Homura` found for type `Token` in the current scope
|
error[E0599]: no variant or associated item named `Homura` found for type `Token` in the current scope
|
||||||
--> $DIR/issue-23173.rs:9:23
|
--> $DIR/issue-23173.rs:9:23
|
||||||
|
|
|
|
||||||
LL | enum Token { LeftParen, RightParen, Plus, Minus, /* etc */ }
|
LL | enum Token { LeftParen, RightParen, Plus, Minus, /* etc */ }
|
||||||
| ---------- variant `Homura` not found here
|
| ---------- variant or associated item `Homura` not found here
|
||||||
...
|
...
|
||||||
LL | use_token(&Token::Homura);
|
LL | use_token(&Token::Homura);
|
||||||
| ^^^^^^ variant not found in `Token`
|
| ^^^^^^ variant or associated item not found in `Token`
|
||||||
|
|
||||||
error[E0599]: no function or associated item named `method` found for type `Struct` in the current scope
|
error[E0599]: no function or associated item named `method` found for type `Struct` in the current scope
|
||||||
--> $DIR/issue-23173.rs:11:13
|
--> $DIR/issue-23173.rs:10:13
|
||||||
|
|
|
|
||||||
LL | struct Struct {
|
LL | struct Struct {
|
||||||
| ------------- function or associated item `method` not found for this
|
| ------------- function or associated item `method` not found for this
|
||||||
@ -17,7 +17,7 @@ LL | Struct::method();
|
|||||||
| ^^^^^^ function or associated item not found in `Struct`
|
| ^^^^^^ function or associated item not found in `Struct`
|
||||||
|
|
||||||
error[E0599]: no function or associated item named `method` found for type `Struct` in the current scope
|
error[E0599]: no function or associated item named `method` found for type `Struct` in the current scope
|
||||||
--> $DIR/issue-23173.rs:13:13
|
--> $DIR/issue-23173.rs:11:13
|
||||||
|
|
|
|
||||||
LL | struct Struct {
|
LL | struct Struct {
|
||||||
| ------------- function or associated item `method` not found for this
|
| ------------- function or associated item `method` not found for this
|
||||||
@ -26,7 +26,7 @@ LL | Struct::method;
|
|||||||
| ^^^^^^ function or associated item not found in `Struct`
|
| ^^^^^^ function or associated item not found in `Struct`
|
||||||
|
|
||||||
error[E0599]: no associated item named `Assoc` found for type `Struct` in the current scope
|
error[E0599]: no associated item named `Assoc` found for type `Struct` in the current scope
|
||||||
--> $DIR/issue-23173.rs:15:13
|
--> $DIR/issue-23173.rs:12:13
|
||||||
|
|
|
|
||||||
LL | struct Struct {
|
LL | struct Struct {
|
||||||
| ------------- associated item `Assoc` not found for this
|
| ------------- associated item `Assoc` not found for this
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
pub enum SomeEnum {
|
pub enum SomeEnum {
|
||||||
B = SomeEnum::A,
|
B = SomeEnum::A, //~ ERROR no variant or associated item named `A` found for type `SomeEnum`
|
||||||
//~^ ERROR no variant named `A` found for type `SomeEnum`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
error[E0599]: no variant named `A` found for type `SomeEnum` in the current scope
|
error[E0599]: no variant or associated item named `A` found for type `SomeEnum` in the current scope
|
||||||
--> $DIR/issue-23217.rs:2:19
|
--> $DIR/issue-23217.rs:2:19
|
||||||
|
|
|
|
||||||
LL | pub enum SomeEnum {
|
LL | pub enum SomeEnum {
|
||||||
| ----------------- variant `A` not found here
|
| ----------------- variant or associated item `A` not found here
|
||||||
LL | B = SomeEnum::A,
|
LL | B = SomeEnum::A,
|
||||||
| ^
|
| ^
|
||||||
| |
|
| |
|
||||||
| variant not found in `SomeEnum`
|
| variant or associated item not found in `SomeEnum`
|
||||||
| help: did you mean: `B`
|
| help: there is a variant with a similar name: `B`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ LL | let x: u8 = BitXor::bitor(0 as u8, 0 as u8);
|
|||||||
| ^^^^^
|
| ^^^^^
|
||||||
| |
|
| |
|
||||||
| function or associated item not found in `dyn std::ops::BitXor<_>`
|
| function or associated item not found in `dyn std::ops::BitXor<_>`
|
||||||
| help: did you mean: `bitxor`
|
| help: there is a method with a similar name: `bitxor`
|
||||||
|
|
||||||
error[E0191]: the value of the associated type `Output` (from the trait `std::ops::BitXor`) must be specified
|
error[E0191]: the value of the associated type `Output` (from the trait `std::ops::BitXor`) must be specified
|
||||||
--> $DIR/issue-28344.rs:8:13
|
--> $DIR/issue-28344.rs:8:13
|
||||||
@ -26,7 +26,7 @@ LL | let g = BitXor::bitor;
|
|||||||
| ^^^^^
|
| ^^^^^
|
||||||
| |
|
| |
|
||||||
| function or associated item not found in `dyn std::ops::BitXor<_>`
|
| function or associated item not found in `dyn std::ops::BitXor<_>`
|
||||||
| help: did you mean: `bitxor`
|
| help: there is a method with a similar name: `bitxor`
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
// This should not cause an ICE
|
|
||||||
|
|
||||||
enum Foo {
|
enum Foo {
|
||||||
Bar(u8)
|
Bar(u8)
|
||||||
}
|
}
|
||||||
@ -7,7 +5,7 @@ fn main(){
|
|||||||
foo(|| {
|
foo(|| {
|
||||||
match Foo::Bar(1) {
|
match Foo::Bar(1) {
|
||||||
Foo::Baz(..) => (),
|
Foo::Baz(..) => (),
|
||||||
//~^ ERROR no variant named `Baz` found for type `Foo`
|
//~^ ERROR no variant or associated item named `Baz` found for type `Foo`
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
error[E0599]: no variant named `Baz` found for type `Foo` in the current scope
|
error[E0599]: no variant or associated item named `Baz` found for type `Foo` in the current scope
|
||||||
--> $DIR/issue-28971.rs:9:18
|
--> $DIR/issue-28971.rs:7:18
|
||||||
|
|
|
|
||||||
LL | enum Foo {
|
LL | enum Foo {
|
||||||
| -------- variant `Baz` not found here
|
| -------- variant or associated item `Baz` not found here
|
||||||
...
|
...
|
||||||
LL | Foo::Baz(..) => (),
|
LL | Foo::Baz(..) => (),
|
||||||
| ^^^
|
| ^^^
|
||||||
| |
|
| |
|
||||||
| variant not found in `Foo`
|
| variant or associated item not found in `Foo`
|
||||||
| help: did you mean: `Bar`
|
| help: there is a variant with a similar name: `Bar`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
@ -4,8 +4,7 @@ enum S {
|
|||||||
|
|
||||||
fn bug(l: S) {
|
fn bug(l: S) {
|
||||||
match l {
|
match l {
|
||||||
S::B { } => { },
|
S::B {} => {}, //~ ERROR no variant `B` in enum `S`
|
||||||
//~^ ERROR no variant `B` on enum `S`
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
error: no variant `B` on enum `S`
|
error: no variant `B` in enum `S`
|
||||||
--> $DIR/issue-34209.rs:7:9
|
--> $DIR/issue-34209.rs:7:12
|
||||||
|
|
|
|
||||||
LL | S::B { } => { },
|
LL | enum S {
|
||||||
| ^^^^ help: did you mean: `S::A`
|
| ------ variant `B` not found here
|
||||||
|
...
|
||||||
|
LL | S::B {} => {},
|
||||||
|
| ^ help: there is a variant with a similar name: `A`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ error[E0599]: no method named `deref_err` found for type `std::result::Result<_,
|
|||||||
--> $DIR/result-deref-err.rs:4:28
|
--> $DIR/result-deref-err.rs:4:28
|
||||||
|
|
|
|
||||||
LL | let _result = &Err(41).deref_err();
|
LL | let _result = &Err(41).deref_err();
|
||||||
| ^^^^^^^^^ help: did you mean: `deref_ok`
|
| ^^^^^^^^^ help: there is a method with a similar name: `deref_ok`
|
||||||
|
|
|
|
||||||
= note: the method `deref_err` exists but the following trait bounds were not satisfied:
|
= note: the method `deref_err` exists but the following trait bounds were not satisfied:
|
||||||
`{integer} : std::ops::Deref`
|
`{integer} : std::ops::Deref`
|
||||||
|
@ -5,19 +5,19 @@ LL | struct Foo;
|
|||||||
| ----------- method `bat` not found for this
|
| ----------- method `bat` not found for this
|
||||||
...
|
...
|
||||||
LL | f.bat(1.0);
|
LL | f.bat(1.0);
|
||||||
| ^^^ help: did you mean: `bar`
|
| ^^^ help: there is a method with a similar name: `bar`
|
||||||
|
|
||||||
error[E0599]: no method named `is_emtpy` found for type `std::string::String` in the current scope
|
error[E0599]: no method named `is_emtpy` found for type `std::string::String` in the current scope
|
||||||
--> $DIR/suggest-methods.rs:21:15
|
--> $DIR/suggest-methods.rs:21:15
|
||||||
|
|
|
|
||||||
LL | let _ = s.is_emtpy();
|
LL | let _ = s.is_emtpy();
|
||||||
| ^^^^^^^^ help: did you mean: `is_empty`
|
| ^^^^^^^^ help: there is a method with a similar name: `is_empty`
|
||||||
|
|
||||||
error[E0599]: no method named `count_eos` found for type `u32` in the current scope
|
error[E0599]: no method named `count_eos` found for type `u32` in the current scope
|
||||||
--> $DIR/suggest-methods.rs:25:19
|
--> $DIR/suggest-methods.rs:25:19
|
||||||
|
|
|
|
||||||
LL | let _ = 63u32.count_eos();
|
LL | let _ = 63u32.count_eos();
|
||||||
| ^^^^^^^^^ help: did you mean: `count_zeros`
|
| ^^^^^^^^^ help: there is a method with a similar name: `count_zeros`
|
||||||
|
|
||||||
error[E0599]: no method named `count_o` found for type `u32` in the current scope
|
error[E0599]: no method named `count_o` found for type `u32` in the current scope
|
||||||
--> $DIR/suggest-methods.rs:28:19
|
--> $DIR/suggest-methods.rs:28:19
|
||||||
|
@ -12,4 +12,7 @@ fn main() {
|
|||||||
println!("My shape is {:?}", Shape::Squareee { size: 5}); //~ ERROR no variant `Squareee`
|
println!("My shape is {:?}", Shape::Squareee { size: 5}); //~ ERROR no variant `Squareee`
|
||||||
println!("My shape is {:?}", Shape::Circl { size: 5}); //~ ERROR no variant `Circl`
|
println!("My shape is {:?}", Shape::Circl { size: 5}); //~ ERROR no variant `Circl`
|
||||||
println!("My shape is {:?}", Shape::Rombus{ size: 5}); //~ ERROR no variant `Rombus`
|
println!("My shape is {:?}", Shape::Rombus{ size: 5}); //~ ERROR no variant `Rombus`
|
||||||
|
Shape::Squareee; //~ ERROR no variant
|
||||||
|
Shape::Circl; //~ ERROR no variant
|
||||||
|
Shape::Rombus; //~ ERROR no variant
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,65 @@
|
|||||||
error: no variant `Squareee` on enum `Shape`
|
error: no variant `Squareee` in enum `Shape`
|
||||||
--> $DIR/suggest-variants.rs:12:34
|
--> $DIR/suggest-variants.rs:12:41
|
||||||
|
|
|
|
||||||
|
LL | enum Shape {
|
||||||
|
| ---------- variant `Squareee` not found here
|
||||||
|
...
|
||||||
LL | println!("My shape is {:?}", Shape::Squareee { size: 5});
|
LL | println!("My shape is {:?}", Shape::Squareee { size: 5});
|
||||||
| ^^^^^^^^^^^^^^^ help: did you mean: `Shape::Square`
|
| ^^^^^^^^ help: there is a variant with a similar name: `Square`
|
||||||
|
|
||||||
error: no variant `Circl` on enum `Shape`
|
error: no variant `Circl` in enum `Shape`
|
||||||
--> $DIR/suggest-variants.rs:13:34
|
--> $DIR/suggest-variants.rs:13:41
|
||||||
|
|
|
|
||||||
|
LL | enum Shape {
|
||||||
|
| ---------- variant `Circl` not found here
|
||||||
|
...
|
||||||
LL | println!("My shape is {:?}", Shape::Circl { size: 5});
|
LL | println!("My shape is {:?}", Shape::Circl { size: 5});
|
||||||
| ^^^^^^^^^^^^ help: did you mean: `Shape::Circle`
|
| ^^^^^ help: there is a variant with a similar name: `Circle`
|
||||||
|
|
||||||
error: no variant `Rombus` on enum `Shape`
|
error: no variant `Rombus` in enum `Shape`
|
||||||
--> $DIR/suggest-variants.rs:14:34
|
--> $DIR/suggest-variants.rs:14:41
|
||||||
|
|
|
|
||||||
|
LL | enum Shape {
|
||||||
|
| ---------- variant `Rombus` not found here
|
||||||
|
...
|
||||||
LL | println!("My shape is {:?}", Shape::Rombus{ size: 5});
|
LL | println!("My shape is {:?}", Shape::Rombus{ size: 5});
|
||||||
| ^^^^^^^^^^^^^ unknown variant
|
| -------^^^^^^
|
||||||
|
| |
|
||||||
|
| variant not found in `Shape`
|
||||||
|
|
||||||
error: aborting due to 3 previous errors
|
error[E0599]: no variant or associated item named `Squareee` found for type `Shape` in the current scope
|
||||||
|
--> $DIR/suggest-variants.rs:15:12
|
||||||
|
|
|
||||||
|
LL | enum Shape {
|
||||||
|
| ---------- variant or associated item `Squareee` not found here
|
||||||
|
...
|
||||||
|
LL | Shape::Squareee;
|
||||||
|
| ^^^^^^^^
|
||||||
|
| |
|
||||||
|
| variant or associated item not found in `Shape`
|
||||||
|
| help: there is a variant with a similar name: `Square`
|
||||||
|
|
||||||
|
error[E0599]: no variant or associated item named `Circl` found for type `Shape` in the current scope
|
||||||
|
--> $DIR/suggest-variants.rs:16:12
|
||||||
|
|
|
||||||
|
LL | enum Shape {
|
||||||
|
| ---------- variant or associated item `Circl` not found here
|
||||||
|
...
|
||||||
|
LL | Shape::Circl;
|
||||||
|
| ^^^^^
|
||||||
|
| |
|
||||||
|
| variant or associated item not found in `Shape`
|
||||||
|
| help: there is a variant with a similar name: `Circle`
|
||||||
|
|
||||||
|
error[E0599]: no variant or associated item named `Rombus` found for type `Shape` in the current scope
|
||||||
|
--> $DIR/suggest-variants.rs:17:12
|
||||||
|
|
|
||||||
|
LL | enum Shape {
|
||||||
|
| ---------- variant or associated item `Rombus` not found here
|
||||||
|
...
|
||||||
|
LL | Shape::Rombus;
|
||||||
|
| ^^^^^^ variant or associated item not found in `Shape`
|
||||||
|
|
||||||
|
error: aborting due to 6 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0599`.
|
||||||
|
Loading…
Reference in New Issue
Block a user