mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-24 09:05:34 +00:00
minor: Add item_enum constructor to SyntaxFactory
I recursively added all constructors it depends on. I also changed the old `make::` constructors to support more of the grammar.
This commit is contained in:
parent
7b4b83ba91
commit
c70bf568bb
5 changed files with 242 additions and 9 deletions
|
|
@ -1053,7 +1053,17 @@ pub fn variant_list(variants: impl IntoIterator<Item = ast::Variant>) -> ast::Va
|
|||
ast_from_text(&format!("enum f {{ {variants} }}"))
|
||||
}
|
||||
|
||||
pub fn variant(name: ast::Name, field_list: Option<ast::FieldList>) -> ast::Variant {
|
||||
pub fn variant(
|
||||
visibility: Option<ast::Visibility>,
|
||||
name: ast::Name,
|
||||
field_list: Option<ast::FieldList>,
|
||||
discriminant: Option<ast::Expr>,
|
||||
) -> ast::Variant {
|
||||
let visibility = match visibility {
|
||||
None => String::new(),
|
||||
Some(it) => format!("{it} "),
|
||||
};
|
||||
|
||||
let field_list = match field_list {
|
||||
None => String::new(),
|
||||
Some(it) => match it {
|
||||
|
|
@ -1061,7 +1071,12 @@ pub fn variant(name: ast::Name, field_list: Option<ast::FieldList>) -> ast::Vari
|
|||
ast::FieldList::TupleFieldList(tuple) => format!("{tuple}"),
|
||||
},
|
||||
};
|
||||
ast_from_text(&format!("enum f {{ {name}{field_list} }}"))
|
||||
|
||||
let discriminant = match discriminant {
|
||||
Some(it) => format!(" = {it}"),
|
||||
None => String::new(),
|
||||
};
|
||||
ast_from_text(&format!("enum f {{ {visibility}{name}{field_list}{discriminant} }}"))
|
||||
}
|
||||
|
||||
pub fn fn_(
|
||||
|
|
@ -1122,6 +1137,8 @@ pub fn struct_(
|
|||
pub fn enum_(
|
||||
visibility: Option<ast::Visibility>,
|
||||
enum_name: ast::Name,
|
||||
generic_param_list: Option<ast::GenericParamList>,
|
||||
where_clause: Option<ast::WhereClause>,
|
||||
variant_list: ast::VariantList,
|
||||
) -> ast::Enum {
|
||||
let visibility = match visibility {
|
||||
|
|
@ -1129,7 +1146,12 @@ pub fn enum_(
|
|||
Some(it) => format!("{it} "),
|
||||
};
|
||||
|
||||
ast_from_text(&format!("{visibility}enum {enum_name} {variant_list}"))
|
||||
let generic_params = generic_param_list.map(|it| it.to_string()).unwrap_or_default();
|
||||
let where_clause = where_clause.map(|it| format!(" {it}")).unwrap_or_default();
|
||||
|
||||
ast_from_text(&format!(
|
||||
"{visibility}enum {enum_name}{generic_params}{where_clause} {variant_list}"
|
||||
))
|
||||
}
|
||||
|
||||
pub fn attr_outer(meta: ast::Meta) -> ast::Attr {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue