mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 21:35:20 +00:00
Use upstream cov-mark
This commit is contained in:
parent
c5189a22cc
commit
fc9eed4836
101 changed files with 354 additions and 514 deletions
|
@ -15,7 +15,6 @@ use syntax::{
|
|||
ast::{AstNode, AstToken},
|
||||
SmolStr,
|
||||
};
|
||||
use test_utils::mark;
|
||||
|
||||
// Creates a match error. If we're currently attempting to match some code that we thought we were
|
||||
// going to match, as indicated by the --debug-snippet flag, then populate the reason field.
|
||||
|
@ -731,7 +730,7 @@ impl NodeKind {
|
|||
fn matches(&self, node: &SyntaxNode) -> Result<(), MatchFailed> {
|
||||
let ok = match self {
|
||||
Self::Literal => {
|
||||
mark::hit!(literal_constraint);
|
||||
cov_mark::hit!(literal_constraint);
|
||||
ast::Literal::can_cast(node.kind())
|
||||
}
|
||||
};
|
||||
|
|
|
@ -10,7 +10,6 @@ use crate::{SsrError, SsrPattern, SsrRule};
|
|||
use rustc_hash::{FxHashMap, FxHashSet};
|
||||
use std::{fmt::Display, str::FromStr};
|
||||
use syntax::{ast, AstNode, SmolStr, SyntaxKind, SyntaxNode, T};
|
||||
use test_utils::mark;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct ParsedRule {
|
||||
|
@ -131,7 +130,7 @@ impl RuleBuilder {
|
|||
let old_len = self.rules.len();
|
||||
self.rules.retain(|rule| contains_path(&rule.pattern));
|
||||
if self.rules.len() < old_len {
|
||||
mark::hit!(pattern_is_a_single_segment_path);
|
||||
cov_mark::hit!(pattern_is_a_single_segment_path);
|
||||
}
|
||||
}
|
||||
Ok(self.rules)
|
||||
|
|
|
@ -5,7 +5,7 @@ use itertools::Itertools;
|
|||
use rustc_hash::{FxHashMap, FxHashSet};
|
||||
use syntax::ast::{self, AstNode, AstToken};
|
||||
use syntax::{SyntaxElement, SyntaxKind, SyntaxNode, SyntaxToken, TextRange, TextSize};
|
||||
use test_utils::mark;
|
||||
|
||||
use text_edit::TextEdit;
|
||||
|
||||
/// Returns a text edit that will replace each match in `matches` with its corresponding replacement
|
||||
|
@ -128,7 +128,7 @@ impl ReplacementRenderer<'_> {
|
|||
&& (placeholder_value.autoderef_count > 0
|
||||
|| placeholder_value.autoref_kind != ast::SelfParamKind::Owned)
|
||||
{
|
||||
mark::hit!(replace_autoref_autoderef_capture);
|
||||
cov_mark::hit!(replace_autoref_autoderef_capture);
|
||||
let ref_kind = match placeholder_value.autoref_kind {
|
||||
ast::SelfParamKind::Owned => "",
|
||||
ast::SelfParamKind::Ref => "&",
|
||||
|
|
|
@ -6,7 +6,6 @@ use ide_db::base_db::FilePosition;
|
|||
use parsing::Placeholder;
|
||||
use rustc_hash::FxHashMap;
|
||||
use syntax::{ast, SmolStr, SyntaxKind, SyntaxNode, SyntaxToken};
|
||||
use test_utils::mark;
|
||||
|
||||
pub(crate) struct ResolutionScope<'db> {
|
||||
scope: hir::SemanticsScope<'db>,
|
||||
|
@ -170,13 +169,13 @@ impl Resolver<'_, '_> {
|
|||
// calls. e.g. `Foo::bar($s)` should match `x.bar()`.
|
||||
true
|
||||
} else {
|
||||
mark::hit!(replace_associated_trait_default_function_call);
|
||||
cov_mark::hit!(replace_associated_trait_default_function_call);
|
||||
false
|
||||
}
|
||||
}
|
||||
hir::PathResolution::AssocItem(_) => {
|
||||
// Not a function. Could be a constant or an associated type.
|
||||
mark::hit!(replace_associated_trait_constant);
|
||||
cov_mark::hit!(replace_associated_trait_constant);
|
||||
false
|
||||
}
|
||||
_ => true,
|
||||
|
@ -267,7 +266,7 @@ fn pick_node_for_resolution(node: SyntaxNode) -> SyntaxNode {
|
|||
match node.kind() {
|
||||
SyntaxKind::EXPR_STMT => {
|
||||
if let Some(n) = node.first_child() {
|
||||
mark::hit!(cursor_after_semicolon);
|
||||
cov_mark::hit!(cursor_after_semicolon);
|
||||
return n;
|
||||
}
|
||||
}
|
||||
|
@ -291,7 +290,7 @@ fn path_contains_type_arguments(path: Option<ast::Path>) -> bool {
|
|||
if let Some(path) = path {
|
||||
if let Some(segment) = path.segment() {
|
||||
if segment.generic_arg_list().is_some() {
|
||||
mark::hit!(type_arguments_within_path);
|
||||
cov_mark::hit!(type_arguments_within_path);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ use ide_db::{
|
|||
};
|
||||
use rustc_hash::FxHashSet;
|
||||
use syntax::{ast, AstNode, SyntaxKind, SyntaxNode};
|
||||
use test_utils::mark;
|
||||
|
||||
/// A cache for the results of find_usages. This is for when we have multiple patterns that have the
|
||||
/// same path. e.g. if the pattern was `foo::Bar` that can parse as a path, an expression, a type
|
||||
|
@ -61,7 +60,7 @@ impl<'db> MatchFinder<'db> {
|
|||
for file_range in self.find_usages(usage_cache, definition).file_ranges() {
|
||||
if let Some(node_to_match) = self.find_node_to_match(resolved_path, file_range) {
|
||||
if !is_search_permitted_ancestors(&node_to_match) {
|
||||
mark::hit!(use_declaration_with_braces);
|
||||
cov_mark::hit!(use_declaration_with_braces);
|
||||
continue;
|
||||
}
|
||||
self.try_add_match(rule, &node_to_match, &None, matches_out);
|
||||
|
@ -205,7 +204,7 @@ impl<'db> MatchFinder<'db> {
|
|||
matches_out: &mut Vec<Match>,
|
||||
) {
|
||||
if !self.within_range_restrictions(code) {
|
||||
mark::hit!(replace_nonpath_within_selection);
|
||||
cov_mark::hit!(replace_nonpath_within_selection);
|
||||
return;
|
||||
}
|
||||
if let Ok(m) = matching::get_match(false, rule, code, restrict_range, &self.sema) {
|
||||
|
|
|
@ -3,7 +3,7 @@ use expect_test::{expect, Expect};
|
|||
use ide_db::base_db::{salsa::Durability, FileId, FilePosition, FileRange, SourceDatabaseExt};
|
||||
use rustc_hash::FxHashSet;
|
||||
use std::sync::Arc;
|
||||
use test_utils::{mark, RangeOrOffset};
|
||||
use test_utils::RangeOrOffset;
|
||||
|
||||
fn parse_error_text(query: &str) -> String {
|
||||
format!("{}", query.parse::<SsrRule>().unwrap_err())
|
||||
|
@ -492,7 +492,7 @@ fn match_resolved_type_name() {
|
|||
|
||||
#[test]
|
||||
fn type_arguments_within_path() {
|
||||
mark::check!(type_arguments_within_path);
|
||||
cov_mark::check!(type_arguments_within_path);
|
||||
let code = r#"
|
||||
mod foo {
|
||||
pub struct Bar<T> {t: T}
|
||||
|
@ -508,7 +508,7 @@ fn type_arguments_within_path() {
|
|||
|
||||
#[test]
|
||||
fn literal_constraint() {
|
||||
mark::check!(literal_constraint);
|
||||
cov_mark::check!(literal_constraint);
|
||||
let code = r#"
|
||||
enum Option<T> { Some(T), None }
|
||||
use Option::Some;
|
||||
|
@ -641,7 +641,7 @@ fn replace_associated_function_call() {
|
|||
|
||||
#[test]
|
||||
fn replace_associated_trait_default_function_call() {
|
||||
mark::check!(replace_associated_trait_default_function_call);
|
||||
cov_mark::check!(replace_associated_trait_default_function_call);
|
||||
assert_ssr_transform(
|
||||
"Bar2::foo() ==>> Bar2::foo2()",
|
||||
r#"
|
||||
|
@ -673,7 +673,7 @@ fn replace_associated_trait_default_function_call() {
|
|||
|
||||
#[test]
|
||||
fn replace_associated_trait_constant() {
|
||||
mark::check!(replace_associated_trait_constant);
|
||||
cov_mark::check!(replace_associated_trait_constant);
|
||||
assert_ssr_transform(
|
||||
"Bar2::VALUE ==>> Bar2::VALUE_2222",
|
||||
r#"
|
||||
|
@ -998,7 +998,7 @@ fn use_declaration_with_braces() {
|
|||
// It would be OK for a path rule to match and alter a use declaration. We shouldn't mess it up
|
||||
// though. In particular, we must not change `use foo::{baz, bar}` to `use foo::{baz,
|
||||
// foo2::bar2}`.
|
||||
mark::check!(use_declaration_with_braces);
|
||||
cov_mark::check!(use_declaration_with_braces);
|
||||
assert_ssr_transform(
|
||||
"foo::bar ==>> foo2::bar2",
|
||||
r#"
|
||||
|
@ -1076,7 +1076,7 @@ fn ufcs_matches_method_call() {
|
|||
|
||||
#[test]
|
||||
fn pattern_is_a_single_segment_path() {
|
||||
mark::check!(pattern_is_a_single_segment_path);
|
||||
cov_mark::check!(pattern_is_a_single_segment_path);
|
||||
// The first function should not be altered because the `foo` in scope at the cursor position is
|
||||
// a different `foo`. This case is special because "foo" can be parsed as a pattern (IDENT_PAT ->
|
||||
// NAME -> IDENT), which contains no path. If we're not careful we'll end up matching the `foo`
|
||||
|
@ -1118,7 +1118,7 @@ fn replace_local_variable_reference() {
|
|||
// The pattern references a local variable `foo` in the block containing the cursor. We should
|
||||
// only replace references to this variable `foo`, not other variables that just happen to have
|
||||
// the same name.
|
||||
mark::check!(cursor_after_semicolon);
|
||||
cov_mark::check!(cursor_after_semicolon);
|
||||
assert_ssr_transform(
|
||||
"foo + $a ==>> $a - foo",
|
||||
r#"
|
||||
|
@ -1179,7 +1179,7 @@ fn replace_path_within_selection() {
|
|||
|
||||
#[test]
|
||||
fn replace_nonpath_within_selection() {
|
||||
mark::check!(replace_nonpath_within_selection);
|
||||
cov_mark::check!(replace_nonpath_within_selection);
|
||||
assert_ssr_transform(
|
||||
"$a + $b ==>> $b * $a",
|
||||
r#"
|
||||
|
@ -1269,7 +1269,7 @@ fn replace_autoref_autoderef_capture() {
|
|||
// second, we already have a reference, so it isn't. When $a is used in a context where autoref
|
||||
// doesn't apply, we need to prefix it with `&`. Finally, we have some cases where autoderef
|
||||
// needs to be applied.
|
||||
mark::check!(replace_autoref_autoderef_capture);
|
||||
cov_mark::check!(replace_autoref_autoderef_capture);
|
||||
let code = r#"
|
||||
struct Foo {}
|
||||
impl Foo {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue