Skip to content

Commit 38ab326

Browse files
bors[bot]matklad
andauthored
Merge #5631
5631: Finalize pattern grammar r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2 parents 5cade89 + 9818108 commit 38ab326

File tree

121 files changed

+831
-839
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+831
-839
lines changed

crates/ra_assists/src/handlers/add_explicit_type.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub(crate) fn add_explicit_type(acc: &mut Assists, ctx: &AssistContext) -> Optio
2727
let expr = let_stmt.initializer()?;
2828
// Must be a binding
2929
let pat = match let_stmt.pat()? {
30-
ast::Pat::BindPat(bind_pat) => bind_pat,
30+
ast::Pat::IdentPat(bind_pat) => bind_pat,
3131
_ => return None,
3232
};
3333
let pat_range = pat.syntax().text_range();

crates/ra_assists/src/handlers/fill_match_arms.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ pub(crate) fn fill_match_arms(acc: &mut Assists, ctx: &AssistContext) -> Option<
4343

4444
let mut arms: Vec<MatchArm> = match_arm_list.arms().collect();
4545
if arms.len() == 1 {
46-
if let Some(Pat::PlaceholderPat(..)) = arms[0].pat() {
46+
if let Some(Pat::WildcardPat(..)) = arms[0].pat() {
4747
arms.clear();
4848
}
4949
}
@@ -116,17 +116,15 @@ pub(crate) fn fill_match_arms(acc: &mut Assists, ctx: &AssistContext) -> Option<
116116
match (first_new_arm, ctx.config.snippet_cap) {
117117
(Some(first_new_arm), Some(cap)) => {
118118
let extend_lifetime;
119-
let cursor = match first_new_arm
120-
.syntax()
121-
.descendants()
122-
.find_map(ast::PlaceholderPat::cast)
123-
{
124-
Some(it) => {
125-
extend_lifetime = it.syntax().clone();
126-
Cursor::Replace(&extend_lifetime)
127-
}
128-
None => Cursor::Before(first_new_arm.syntax()),
129-
};
119+
let cursor =
120+
match first_new_arm.syntax().descendants().find_map(ast::WildcardPat::cast)
121+
{
122+
Some(it) => {
123+
extend_lifetime = it.syntax().clone();
124+
Cursor::Replace(&extend_lifetime)
125+
}
126+
None => Cursor::Before(first_new_arm.syntax()),
127+
};
130128
let snippet = render_snippet(cap, new_arm_list.syntax(), cursor);
131129
builder.replace_snippet(cap, old_range, snippet);
132130
}
@@ -152,7 +150,7 @@ fn does_pat_match_variant(pat: &Pat, var: &Pat) -> bool {
152150
let first_node_text = |pat: &Pat| pat.syntax().first_child().map(|node| node.text());
153151

154152
let pat_head = match pat {
155-
Pat::BindPat(bind_pat) => {
153+
Pat::IdentPat(bind_pat) => {
156154
if let Some(p) = bind_pat.pat() {
157155
first_node_text(&p)
158156
} else {

crates/ra_assists/src/handlers/inline_local_variable.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use crate::{
2929
pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
3030
let let_stmt = ctx.find_node_at_offset::<ast::LetStmt>()?;
3131
let bind_pat = match let_stmt.pat()? {
32-
ast::Pat::BindPat(pat) => pat,
32+
ast::Pat::IdentPat(pat) => pat,
3333
_ => return None,
3434
};
3535
if bind_pat.mut_token().is_some() {

crates/ra_assists/src/handlers/merge_match_arms.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub(crate) fn merge_match_arms(acc: &mut Assists, ctx: &AssistContext) -> Option
8686
}
8787

8888
fn contains_placeholder(a: &ast::MatchArm) -> bool {
89-
matches!(a.pat(), Some(ast::Pat::PlaceholderPat(..)))
89+
matches!(a.pat(), Some(ast::Pat::WildcardPat(..)))
9090
}
9191

9292
#[cfg(test)]

crates/ra_assists/src/handlers/reorder_fields.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ fn reorder<R: AstNode>(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
5757
fn get_fields_kind(node: &SyntaxNode) -> Vec<SyntaxKind> {
5858
match node.kind() {
5959
RECORD_EXPR => vec![RECORD_EXPR_FIELD],
60-
RECORD_PAT => vec![RECORD_FIELD_PAT, BIND_PAT],
60+
RECORD_PAT => vec![RECORD_PAT_FIELD, IDENT_PAT],
6161
_ => vec![],
6262
}
6363
}
@@ -66,7 +66,7 @@ fn get_field_name(node: &SyntaxNode) -> String {
6666
let res = match_ast! {
6767
match node {
6868
ast::RecordExprField(field) => field.field_name().map(|it| it.to_string()),
69-
ast::RecordFieldPat(field) => field.field_name().map(|it| it.to_string()),
69+
ast::RecordPatField(field) => field.field_name().map(|it| it.to_string()),
7070
_ => None,
7171
}
7272
};

crates/ra_assists/src/handlers/replace_let_with_if_let.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ pub(crate) fn replace_let_with_if_let(acc: &mut Assists, ctx: &AssistContext) ->
6262
let if_ = make::expr_if(make::condition(init, Some(with_placeholder)), block);
6363
let stmt = make::expr_stmt(if_);
6464

65-
let placeholder =
66-
stmt.syntax().descendants().find_map(ast::PlaceholderPat::cast).unwrap();
65+
let placeholder = stmt.syntax().descendants().find_map(ast::WildcardPat::cast).unwrap();
6766
let stmt = stmt.replace_descendant(placeholder.into(), original_pat);
6867

6968
edit.replace_ast(ast::Stmt::from(let_stmt), ast::Stmt::from(stmt));

crates/ra_hir/src/code_model.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1002,7 +1002,7 @@ impl Local {
10021002
Type::new(db, krate, def, ty)
10031003
}
10041004

1005-
pub fn source(self, db: &dyn HirDatabase) -> InFile<Either<ast::BindPat, ast::SelfParam>> {
1005+
pub fn source(self, db: &dyn HirDatabase) -> InFile<Either<ast::IdentPat, ast::SelfParam>> {
10061006
let (_body, source_map) = db.body_with_source_map(self.parent.into());
10071007
let src = source_map.pat_syntax(self.pat_id).unwrap(); // Hmm...
10081008
let root = src.file_syntax(db.upcast());

crates/ra_hir/src/semantics.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> {
216216
self.imp.resolve_record_field(field)
217217
}
218218

219-
pub fn resolve_record_field_pat(&self, field: &ast::RecordFieldPat) -> Option<Field> {
219+
pub fn resolve_record_field_pat(&self, field: &ast::RecordPatField) -> Option<Field> {
220220
self.imp.resolve_record_field_pat(field)
221221
}
222222

@@ -236,7 +236,7 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> {
236236
self.imp.lower_path(path)
237237
}
238238

239-
pub fn resolve_bind_pat_to_const(&self, pat: &ast::BindPat) -> Option<ModuleDef> {
239+
pub fn resolve_bind_pat_to_const(&self, pat: &ast::IdentPat) -> Option<ModuleDef> {
240240
self.imp.resolve_bind_pat_to_const(pat)
241241
}
242242

@@ -429,7 +429,7 @@ impl<'db> SemanticsImpl<'db> {
429429
self.analyze(field.syntax()).resolve_record_field(self.db, field)
430430
}
431431

432-
fn resolve_record_field_pat(&self, field: &ast::RecordFieldPat) -> Option<Field> {
432+
fn resolve_record_field_pat(&self, field: &ast::RecordPatField) -> Option<Field> {
433433
self.analyze(field.syntax()).resolve_record_field_pat(self.db, field)
434434
}
435435

@@ -452,7 +452,7 @@ impl<'db> SemanticsImpl<'db> {
452452
Path::from_src(path.clone(), &Hygiene::new(self.db.upcast(), src.file_id.into()))
453453
}
454454

455-
fn resolve_bind_pat_to_const(&self, pat: &ast::BindPat) -> Option<ModuleDef> {
455+
fn resolve_bind_pat_to_const(&self, pat: &ast::IdentPat) -> Option<ModuleDef> {
456456
self.analyze(pat.syntax()).resolve_bind_pat_to_const(self.db, pat)
457457
}
458458

@@ -594,7 +594,7 @@ to_def_impls![
594594
(crate::EnumVariant, ast::Variant, enum_variant_to_def),
595595
(crate::TypeParam, ast::TypeParam, type_param_to_def),
596596
(crate::MacroDef, ast::MacroCall, macro_call_to_def), // this one is dubious, not all calls are macros
597-
(crate::Local, ast::BindPat, bind_pat_to_def),
597+
(crate::Local, ast::IdentPat, bind_pat_to_def),
598598
];
599599

600600
fn find_root(node: &SyntaxNode) -> SyntaxNode {

crates/ra_hir/src/semantics/source_to_def.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ impl SourceToDefCtx<'_, '_> {
106106
}
107107
pub(super) fn bind_pat_to_def(
108108
&mut self,
109-
src: InFile<ast::BindPat>,
109+
src: InFile<ast::IdentPat>,
110110
) -> Option<(DefWithBodyId, PatId)> {
111111
let container = self.find_pat_container(src.as_ref().map(|it| it.syntax()))?;
112112
let (_body, source_map) = self.db.body_with_source_map(container);

crates/ra_hir/src/source_analyzer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ impl SourceAnalyzer {
182182
pub(crate) fn resolve_record_field_pat(
183183
&self,
184184
_db: &dyn HirDatabase,
185-
field: &ast::RecordFieldPat,
185+
field: &ast::RecordPatField,
186186
) -> Option<Field> {
187187
let pat_id = self.pat_id(&field.pat()?)?;
188188
let struct_field = self.infer.as_ref()?.record_field_pat_resolution(pat_id)?;
@@ -202,7 +202,7 @@ impl SourceAnalyzer {
202202
pub(crate) fn resolve_bind_pat_to_const(
203203
&self,
204204
db: &dyn HirDatabase,
205-
pat: &ast::BindPat,
205+
pat: &ast::IdentPat,
206206
) -> Option<ModuleDef> {
207207
let pat_id = self.pat_id(&pat.clone().into())?;
208208
let body = self.body.as_ref()?;

0 commit comments

Comments
 (0)