aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDawer <[email protected]>2021-05-31 21:44:51 +0100
committerDawer <[email protected]>2021-05-31 21:44:51 +0100
commite7c49666be180eba2720cce09d4d2116b1ef4d20 (patch)
tree3d5a9bd6fa75c44c4964738b57df21bf4e64b29f
parent31b6a750f8e37d011060a17ffd816d721d087844 (diff)
Expand fixme comments
-rw-r--r--crates/hir_def/src/path.rs5
-rw-r--r--crates/hir_ty/src/diagnostics/expr.rs1
-rw-r--r--crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs3
-rw-r--r--crates/hir_ty/src/diagnostics/match_check/usefulness.rs3
4 files changed, 9 insertions, 3 deletions
diff --git a/crates/hir_def/src/path.rs b/crates/hir_def/src/path.rs
index f98622faa..4cdb5913d 100644
--- a/crates/hir_def/src/path.rs
+++ b/crates/hir_def/src/path.rs
@@ -166,7 +166,10 @@ impl Path {
166 } 166 }
167 167
168 /// Converts a known mod path to `Path`. 168 /// Converts a known mod path to `Path`.
169 pub fn from_known_path(path: ModPath, generic_args: Vec<Option<Interned<GenericArgs>>>) -> Path { 169 pub fn from_known_path(
170 path: ModPath,
171 generic_args: Vec<Option<Interned<GenericArgs>>>,
172 ) -> Path {
170 Path { type_anchor: None, mod_path: Interned::new(path), generic_args } 173 Path { type_anchor: None, mod_path: Interned::new(path), generic_args }
171 } 174 }
172 175
diff --git a/crates/hir_ty/src/diagnostics/expr.rs b/crates/hir_ty/src/diagnostics/expr.rs
index 44d5f6b22..3efbce773 100644
--- a/crates/hir_ty/src/diagnostics/expr.rs
+++ b/crates/hir_ty/src/diagnostics/expr.rs
@@ -376,6 +376,7 @@ impl<'a, 'b> ExprValidator<'a, 'b> {
376 // https://github.com/rust-lang/rust/blob/25c15cdbe/compiler/rustc_mir_build/src/thir/pattern/check_match.rs#L200-L201 376 // https://github.com/rust-lang/rust/blob/25c15cdbe/compiler/rustc_mir_build/src/thir/pattern/check_match.rs#L200-L201
377 377
378 let witnesses = report.non_exhaustiveness_witnesses; 378 let witnesses = report.non_exhaustiveness_witnesses;
379 // FIXME Report witnesses
379 // eprintln!("compute_match_usefulness(..) -> {:?}", &witnesses); 380 // eprintln!("compute_match_usefulness(..) -> {:?}", &witnesses);
380 if !witnesses.is_empty() { 381 if !witnesses.is_empty() {
381 if let Ok(source_ptr) = source_map.expr_syntax(id) { 382 if let Ok(source_ptr) = source_map.expr_syntax(id) {
diff --git a/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs b/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs
index a47082617..1f4219b42 100644
--- a/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs
+++ b/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs
@@ -864,7 +864,8 @@ impl Fields {
864 pat: PatId, 864 pat: PatId,
865 cx: &MatchCheckCtx<'_>, 865 cx: &MatchCheckCtx<'_>,
866 ) -> Self { 866 ) -> Self {
867 // FIXME(iDawer): these alocations and clones are so unfortunate (+1 for switching to references) 867 // FIXME(iDawer): Factor out pattern deep cloning. See discussion:
868 // https://github.com/rust-analyzer/rust-analyzer/pull/8717#discussion_r633086640
868 let mut arena = cx.pattern_arena.borrow_mut(); 869 let mut arena = cx.pattern_arena.borrow_mut();
869 match arena[pat].kind.as_ref() { 870 match arena[pat].kind.as_ref() {
870 PatKind::Deref { subpattern } => { 871 PatKind::Deref { subpattern } => {
diff --git a/crates/hir_ty/src/diagnostics/match_check/usefulness.rs b/crates/hir_ty/src/diagnostics/match_check/usefulness.rs
index 61fba41bf..83b094a89 100644
--- a/crates/hir_ty/src/diagnostics/match_check/usefulness.rs
+++ b/crates/hir_ty/src/diagnostics/match_check/usefulness.rs
@@ -376,9 +376,10 @@ impl PatIdExt for PatId {
376 fn expand_or_pat(self, cx: &MatchCheckCtx<'_>) -> Vec<Self> { 376 fn expand_or_pat(self, cx: &MatchCheckCtx<'_>) -> Vec<Self> {
377 fn expand(pat: PatId, vec: &mut Vec<PatId>, pat_arena: &mut PatternArena) { 377 fn expand(pat: PatId, vec: &mut Vec<PatId>, pat_arena: &mut PatternArena) {
378 if let PatKind::Or { pats } = pat_arena[pat].kind.as_ref() { 378 if let PatKind::Or { pats } = pat_arena[pat].kind.as_ref() {
379 // FIXME(iDawer): Factor out pattern deep cloning. See discussion:
380 // https://github.com/rust-analyzer/rust-analyzer/pull/8717#discussion_r633086640
379 let pats = pats.clone(); 381 let pats = pats.clone();
380 for pat in pats { 382 for pat in pats {
381 // FIXME(iDawer): Ugh, I want to go back to references (PatId -> &Pat)
382 let pat = pat_arena.alloc(pat.clone()); 383 let pat = pat_arena.alloc(pat.clone());
383 expand(pat, vec, pat_arena); 384 expand(pat, vec, pat_arena);
384 } 385 }