diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index fae371509f18..19a3362ca1b4 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs @@ -4038,6 +4038,7 @@ impl ToOwned for TypeParam { impl ast::NameOwner for TypeParam {} impl ast::AttrsOwner for TypeParam {} impl ast::TypeBoundsOwner for TypeParam {} +impl ast::DefaultTypeParamOwner for TypeParam {} impl TypeParam {} // TypeParamList diff --git a/crates/ra_syntax/src/ast/traits.rs b/crates/ra_syntax/src/ast/traits.rs index aaf07d731ff9..1c90cf148b25 100644 --- a/crates/ra_syntax/src/ast/traits.rs +++ b/crates/ra_syntax/src/ast/traits.rs @@ -152,3 +152,9 @@ impl<'a> Iterator for CommentIter<'a> { self.iter.by_ref().find_map(|el| el.as_token().and_then(ast::Comment::cast)) } } + +pub trait DefaultTypeParamOwner: AstNode { + fn default_type(&self) -> Option<&ast::PathType> { + child_opt(self) + } +} diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron index 5bdcf9c84b44..011ef0616fcd 100644 --- a/crates/ra_syntax/src/grammar.ron +++ b/crates/ra_syntax/src/grammar.ron @@ -563,7 +563,7 @@ Grammar( ["lifetime_params", "LifetimeParam" ], ] ), - "TypeParam": ( traits: ["NameOwner", "AttrsOwner", "TypeBoundsOwner"] ), + "TypeParam": ( traits: ["NameOwner", "AttrsOwner", "TypeBoundsOwner", "DefaultTypeParamOwner"] ), "LifetimeParam": ( traits: ["AttrsOwner"], ),