name async generators something more human friendly in type error diagnostics
This commit is contained in:
parent
b05fd2a15d
commit
c28d86c53b
8 changed files with 103 additions and 17 deletions
|
@ -1274,7 +1274,7 @@ impl Body<'hir> {
|
|||
}
|
||||
|
||||
/// The type of source expression that caused this generator to be created.
|
||||
#[derive(Clone, PartialEq, Eq, HashStable_Generic, Encodable, Decodable, Debug, Copy)]
|
||||
#[derive(Clone, PartialEq, Eq, Hash, HashStable_Generic, Encodable, Decodable, Debug, Copy)]
|
||||
pub enum GeneratorKind {
|
||||
/// An explicit `async` block or the body of an async function.
|
||||
Async(AsyncGeneratorKind),
|
||||
|
@ -1292,12 +1292,21 @@ impl fmt::Display for GeneratorKind {
|
|||
}
|
||||
}
|
||||
|
||||
impl GeneratorKind {
|
||||
pub fn descr(&self) -> &'static str {
|
||||
match self {
|
||||
GeneratorKind::Async(ask) => ask.descr(),
|
||||
GeneratorKind::Gen => "generator",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// In the case of a generator created as part of an async construct,
|
||||
/// which kind of async construct caused it to be created?
|
||||
///
|
||||
/// This helps error messages but is also used to drive coercions in
|
||||
/// type-checking (see #60424).
|
||||
#[derive(Clone, PartialEq, Eq, HashStable_Generic, Encodable, Decodable, Debug, Copy)]
|
||||
#[derive(Clone, PartialEq, Eq, Hash, HashStable_Generic, Encodable, Decodable, Debug, Copy)]
|
||||
pub enum AsyncGeneratorKind {
|
||||
/// An explicit `async` block written by the user.
|
||||
Block,
|
||||
|
@ -1319,6 +1328,16 @@ impl fmt::Display for AsyncGeneratorKind {
|
|||
}
|
||||
}
|
||||
|
||||
impl AsyncGeneratorKind {
|
||||
pub fn descr(&self) -> &'static str {
|
||||
match self {
|
||||
AsyncGeneratorKind::Block => "`async` block",
|
||||
AsyncGeneratorKind::Closure => "`async` closure body",
|
||||
AsyncGeneratorKind::Fn => "`async fn` body",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum BodyOwnerKind {
|
||||
/// Functions and methods.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue