mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
perf(linter): avoid unnecessary work in jsx_a11y/anchor_is_valid rule (#5341)
Follow-on after #5223. #5223 introduced the line `let span = jsx_el.opening_element.name.span();`. But the span is only needed when creating a diagnostic when the rule fails (cold path). Avoid the work of getting the span for the common case where the rule passes.
This commit is contained in:
parent
57050ab16a
commit
05636b7725
1 changed files with 6 additions and 5 deletions
|
|
@ -135,7 +135,8 @@ impl Rule for AnchorIsValid {
|
||||||
if name != "a" {
|
if name != "a" {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
let span = jsx_el.opening_element.name.span();
|
// Don't eagerly get `span` here, to avoid that work unless rule fails
|
||||||
|
let get_span = || jsx_el.opening_element.name.span();
|
||||||
if let Option::Some(href_attr) =
|
if let Option::Some(href_attr) =
|
||||||
has_jsx_prop_ignore_case(&jsx_el.opening_element, "href")
|
has_jsx_prop_ignore_case(&jsx_el.opening_element, "href")
|
||||||
{
|
{
|
||||||
|
|
@ -145,17 +146,17 @@ impl Rule for AnchorIsValid {
|
||||||
|
|
||||||
// Check if the 'a' element has a correct href attribute
|
// Check if the 'a' element has a correct href attribute
|
||||||
let Some(value) = attr.value.as_ref() else {
|
let Some(value) = attr.value.as_ref() else {
|
||||||
ctx.diagnostic(incorrect_href(span));
|
ctx.diagnostic(incorrect_href(get_span()));
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
let is_empty = self.check_value_is_empty(value);
|
let is_empty = self.check_value_is_empty(value);
|
||||||
if is_empty {
|
if is_empty {
|
||||||
if has_jsx_prop_ignore_case(&jsx_el.opening_element, "onclick").is_some() {
|
if has_jsx_prop_ignore_case(&jsx_el.opening_element, "onclick").is_some() {
|
||||||
ctx.diagnostic(cant_be_anchor(span));
|
ctx.diagnostic(cant_be_anchor(get_span()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ctx.diagnostic(incorrect_href(span));
|
ctx.diagnostic(incorrect_href(get_span()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
@ -168,7 +169,7 @@ impl Rule for AnchorIsValid {
|
||||||
if has_spread_attr {
|
if has_spread_attr {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ctx.diagnostic(missing_href_attribute(span));
|
ctx.diagnostic(missing_href_attribute(get_span()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue