From 697fdc568e28fbb376567eda4edb2c2a05db68de Mon Sep 17 00:00:00 2001 From: Esteban Küber Date: Tue, 21 Jan 2020 23:01:21 -0800 Subject: Suggest defining type parameter when appropriate ``` error[E0412]: cannot find type `T` in this scope --> file.rs:3:12 | 3 | impl Trait for Struct {} | - ^ not found in this scope | | | help: you might be missing a type parameter: `` ``` Fix #64298. --- src/libsyntax/ast.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/libsyntax') diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 5f38ac4cc0f..5c64cc440ce 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -2655,6 +2655,20 @@ impl ItemKind { ItemKind::Mac(..) | ItemKind::MacroDef(..) | ItemKind::Impl { .. } => "item", } } + + pub fn generics(&self) -> Option<&Generics> { + match self { + Self::Fn(_, generics, _) + | Self::TyAlias(_, generics) + | Self::Enum(_, generics) + | Self::Struct(_, generics) + | Self::Union(_, generics) + | Self::Trait(_, _, generics, ..) + | Self::TraitAlias(generics, _) + | Self::Impl { generics, .. } => Some(generics), + _ => None, + } + } } pub type ForeignItem = Item; -- cgit 1.4.1-3-g733a5