diff options
| author | bors <bors@rust-lang.org> | 2023-04-05 20:42:55 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-04-05 20:42:55 +0000 |
| commit | ea22d245b671f97b820cf761108251c6292c3152 (patch) | |
| tree | 44d7c9817c5736c76287c41f265d1dd91cb0f680 | |
| parent | ec803031fd4389fc5031e73c68df6570587ca1c5 (diff) | |
| parent | 0a144f7fffda62e2d4fe52dca41a8c39a96cce36 (diff) | |
| download | rust-ea22d245b671f97b820cf761108251c6292c3152.tar.gz rust-ea22d245b671f97b820cf761108251c6292c3152.zip | |
Auto merge of #14499 - DropDemBits:drive-by-fixmes, r=Veykril
minor: Fix some simple FIXMEs Each FIXME fix has been split into its own commit, since they're all pretty independent changes. (Forgot to open a PR for this a few days ago, oops)
| -rw-r--r-- | crates/ide-assists/src/tests/sourcegen.rs | 2 | ||||
| -rw-r--r-- | crates/ide/src/syntax_highlighting/highlight.rs | 6 | ||||
| -rw-r--r-- | crates/sourcegen/src/lib.rs | 26 |
3 files changed, 14 insertions, 20 deletions
diff --git a/crates/ide-assists/src/tests/sourcegen.rs b/crates/ide-assists/src/tests/sourcegen.rs index b4f50c7fb26..3da90e9052f 100644 --- a/crates/ide-assists/src/tests/sourcegen.rs +++ b/crates/ide-assists/src/tests/sourcegen.rs @@ -90,8 +90,6 @@ impl Assist { let comment_blocks = sourcegen::CommentBlock::extract("Assist", &text); for block in comment_blocks { - // FIXME: doesn't support blank lines yet, need to tweak - // `extract_comment_blocks` for that. let id = block.id; assert!( id.chars().all(|it| it.is_ascii_lowercase() || it == '_'), diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs index 2111baad74d..936362914ae 100644 --- a/crates/ide/src/syntax_highlighting/highlight.rs +++ b/crates/ide/src/syntax_highlighting/highlight.rs @@ -675,14 +675,12 @@ fn is_consumed_lvalue(node: &SyntaxNode, local: &hir::Local, db: &RootDatabase) /// Returns true if the parent nodes of `node` all match the `SyntaxKind`s in `kinds` exactly. fn parents_match(mut node: NodeOrToken<SyntaxNode, SyntaxToken>, mut kinds: &[SyntaxKind]) -> bool { - while let (Some(parent), [kind, rest @ ..]) = (&node.parent(), kinds) { + while let (Some(parent), [kind, rest @ ..]) = (node.parent(), kinds) { if parent.kind() != *kind { return false; } - // FIXME: Would be nice to get parent out of the match, but binding by-move and by-value - // in the same pattern is unstable: rust-lang/rust#68354. - node = node.parent().unwrap().into(); + node = parent.into(); kinds = rest; } diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs index 72d26635c33..c5da6ceb4d1 100644 --- a/crates/sourcegen/src/lib.rs +++ b/crates/sourcegen/src/lib.rs @@ -58,21 +58,19 @@ impl CommentBlock { assert!(tag.starts_with(char::is_uppercase)); let tag = format!("{tag}:"); - // Would be nice if we had `.retain_mut` here! - CommentBlock::extract_untagged(text) - .into_iter() - .filter_map(|mut block| { - let first = block.contents.remove(0); - first.strip_prefix(&tag).map(|id| { - if block.is_doc { - panic!("Use plain (non-doc) comments with tags like {tag}:\n {first}"); - } + let mut blocks = CommentBlock::extract_untagged(text); + blocks.retain_mut(|block| { + let first = block.contents.remove(0); + let Some(id) = first.strip_prefix(&tag) else { return false; }; + + if block.is_doc { + panic!("Use plain (non-doc) comments with tags like {tag}:\n {first}"); + } - block.id = id.trim().to_string(); - block - }) - }) - .collect() + block.id = id.trim().to_string(); + true + }); + blocks } pub fn extract_untagged(text: &str) -> Vec<CommentBlock> { |
