mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
refactor(linter): rename is_same_reference to is_same_expression (#7654)
This commit is contained in:
parent
2179b93729
commit
3711a8e342
10 changed files with 34 additions and 48 deletions
|
|
@ -11,7 +11,7 @@ use oxc_macros::declare_oxc_lint;
|
||||||
use oxc_span::{GetSpan, Span};
|
use oxc_span::{GetSpan, Span};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
use crate::{context::LintContext, rule::Rule, utils::is_same_reference, AstNode};
|
use crate::{context::LintContext, rule::Rule, utils::is_same_expression, AstNode};
|
||||||
|
|
||||||
fn yoda_diagnostic(span: Span, never: bool, operator: &str) -> OxcDiagnostic {
|
fn yoda_diagnostic(span: Span, never: bool, operator: &str) -> OxcDiagnostic {
|
||||||
let expected_side = if never { "right" } else { "left" };
|
let expected_side = if never { "right" } else { "left" };
|
||||||
|
|
@ -371,7 +371,7 @@ fn is_range(expr: &LogicalExpression, ctx: &LintContext) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
if expr.operator == LogicalOperator::And {
|
if expr.operator == LogicalOperator::And {
|
||||||
if !is_same_reference(&left.right, &right.left, ctx) {
|
if !is_same_expression(&left.right, &right.left, ctx) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -405,7 +405,7 @@ fn is_range(expr: &LogicalExpression, ctx: &LintContext) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
if expr.operator == LogicalOperator::Or {
|
if expr.operator == LogicalOperator::Or {
|
||||||
if !is_same_reference(&left.left, &right.right, ctx) {
|
if !is_same_expression(&left.left, &right.right, ctx) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ use oxc_macros::declare_oxc_lint;
|
||||||
use oxc_span::{GetSpan, Span};
|
use oxc_span::{GetSpan, Span};
|
||||||
use oxc_syntax::operator::{BinaryOperator, LogicalOperator};
|
use oxc_syntax::operator::{BinaryOperator, LogicalOperator};
|
||||||
|
|
||||||
use crate::{context::LintContext, rule::Rule, utils::is_same_reference, AstNode};
|
use crate::{context::LintContext, rule::Rule, utils::is_same_expression, AstNode};
|
||||||
|
|
||||||
fn redundant_left_hand_side(span: Span, span1: Span, help: String) -> OxcDiagnostic {
|
fn redundant_left_hand_side(span: Span, span1: Span, help: String) -> OxcDiagnostic {
|
||||||
OxcDiagnostic::warn("Left-hand side of `&&` operator has no effect.")
|
OxcDiagnostic::warn("Left-hand side of `&&` operator has no effect.")
|
||||||
|
|
@ -144,7 +144,7 @@ impl ConstComparisons {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if !is_same_reference(left_expr, right_expr, ctx) {
|
if !is_same_expression(left_expr, right_expr, ctx) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -206,7 +206,7 @@ impl ConstComparisons {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_same_reference(
|
if is_same_expression(
|
||||||
logical_expr.left.get_inner_expression(),
|
logical_expr.left.get_inner_expression(),
|
||||||
logical_expr.right.get_inner_expression(),
|
logical_expr.right.get_inner_expression(),
|
||||||
ctx,
|
ctx,
|
||||||
|
|
@ -229,7 +229,7 @@ impl ConstComparisons {
|
||||||
| BinaryOperator::GreaterEqualThan
|
| BinaryOperator::GreaterEqualThan
|
||||||
| BinaryOperator::LessThan
|
| BinaryOperator::LessThan
|
||||||
| BinaryOperator::GreaterThan
|
| BinaryOperator::GreaterThan
|
||||||
) && is_same_reference(
|
) && is_same_expression(
|
||||||
bin_expr.left.get_inner_expression(),
|
bin_expr.left.get_inner_expression(),
|
||||||
bin_expr.right.get_inner_expression(),
|
bin_expr.right.get_inner_expression(),
|
||||||
ctx,
|
ctx,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use oxc_macros::declare_oxc_lint;
|
||||||
use oxc_span::Span;
|
use oxc_span::Span;
|
||||||
use oxc_syntax::operator::{BinaryOperator, LogicalOperator};
|
use oxc_syntax::operator::{BinaryOperator, LogicalOperator};
|
||||||
|
|
||||||
use crate::{context::LintContext, rule::Rule, utils::is_same_reference, AstNode};
|
use crate::{context::LintContext, rule::Rule, utils::is_same_expression, AstNode};
|
||||||
|
|
||||||
fn double_comparisons_diagnostic(span: Span, operator: &str) -> OxcDiagnostic {
|
fn double_comparisons_diagnostic(span: Span, operator: &str) -> OxcDiagnostic {
|
||||||
OxcDiagnostic::warn("Unexpected double comparisons.")
|
OxcDiagnostic::warn("Unexpected double comparisons.")
|
||||||
|
|
@ -69,8 +69,8 @@ impl Rule for DoubleComparisons {
|
||||||
};
|
};
|
||||||
|
|
||||||
// check that (LLHS === RLHS && LRHS === RRHS) || (LLHS === RRHS && LRHS === RLHS)
|
// check that (LLHS === RLHS && LRHS === RRHS) || (LLHS === RRHS && LRHS === RLHS)
|
||||||
if !((is_same_reference(llhs, rlhs, ctx) && is_same_reference(lrhs, rrhs, ctx))
|
if !((is_same_expression(llhs, rlhs, ctx) && is_same_expression(lrhs, rrhs, ctx))
|
||||||
|| (is_same_reference(llhs, rrhs, ctx) && is_same_reference(lrhs, rlhs, ctx)))
|
|| (is_same_expression(llhs, rrhs, ctx) && is_same_expression(lrhs, rlhs, ctx)))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ use oxc_syntax::operator::{AssignmentOperator, BinaryOperator};
|
||||||
use crate::{
|
use crate::{
|
||||||
context::LintContext,
|
context::LintContext,
|
||||||
rule::Rule,
|
rule::Rule,
|
||||||
utils::{is_same_member_expression, is_same_reference},
|
utils::{is_same_expression, is_same_member_expression},
|
||||||
AstNode,
|
AstNode,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -121,19 +121,19 @@ fn assignment_target_eq_expr<'a>(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SimpleAssignmentTarget::TSAsExpression(ts_expr) => {
|
SimpleAssignmentTarget::TSAsExpression(ts_expr) => {
|
||||||
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
is_same_expression(&ts_expr.expression, right_expr, ctx)
|
||||||
}
|
}
|
||||||
SimpleAssignmentTarget::TSSatisfiesExpression(ts_expr) => {
|
SimpleAssignmentTarget::TSSatisfiesExpression(ts_expr) => {
|
||||||
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
is_same_expression(&ts_expr.expression, right_expr, ctx)
|
||||||
}
|
}
|
||||||
SimpleAssignmentTarget::TSNonNullExpression(ts_expr) => {
|
SimpleAssignmentTarget::TSNonNullExpression(ts_expr) => {
|
||||||
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
is_same_expression(&ts_expr.expression, right_expr, ctx)
|
||||||
}
|
}
|
||||||
SimpleAssignmentTarget::TSTypeAssertion(ts_expr) => {
|
SimpleAssignmentTarget::TSTypeAssertion(ts_expr) => {
|
||||||
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
is_same_expression(&ts_expr.expression, right_expr, ctx)
|
||||||
}
|
}
|
||||||
SimpleAssignmentTarget::TSInstantiationExpression(ts_expr) => {
|
SimpleAssignmentTarget::TSInstantiationExpression(ts_expr) => {
|
||||||
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
is_same_expression(&ts_expr.expression, right_expr, ctx)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use oxc_macros::declare_oxc_lint;
|
||||||
use oxc_span::{GetSpan, Span};
|
use oxc_span::{GetSpan, Span};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
ast_util::is_method_call, context::LintContext, rule::Rule, utils::is_same_reference, AstNode,
|
ast_util::is_method_call, context::LintContext, rule::Rule, utils::is_same_expression, AstNode,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn no_length_as_slice_end_diagnostic(call_span: Span, arg_span: Span) -> OxcDiagnostic {
|
fn no_length_as_slice_end_diagnostic(call_span: Span, arg_span: Span) -> OxcDiagnostic {
|
||||||
|
|
@ -72,7 +72,7 @@ impl Rule for NoLengthAsSliceEnd {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if !is_same_reference(
|
if !is_same_expression(
|
||||||
call_expr.callee.as_member_expression().unwrap().object(),
|
call_expr.callee.as_member_expression().unwrap().object(),
|
||||||
&second_argument.object,
|
&second_argument.object,
|
||||||
ctx,
|
ctx,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use oxc_macros::declare_oxc_lint;
|
||||||
use oxc_span::{GetSpan, Span};
|
use oxc_span::{GetSpan, Span};
|
||||||
use oxc_syntax::operator::UnaryOperator;
|
use oxc_syntax::operator::UnaryOperator;
|
||||||
|
|
||||||
use crate::{context::LintContext, rule::Rule, utils::is_same_reference, AstNode};
|
use crate::{context::LintContext, rule::Rule, utils::is_same_expression, AstNode};
|
||||||
|
|
||||||
fn prefer_logical_operator_over_ternary_diagnostic(span: Span) -> OxcDiagnostic {
|
fn prefer_logical_operator_over_ternary_diagnostic(span: Span) -> OxcDiagnostic {
|
||||||
OxcDiagnostic::warn("Prefer using a logical operator over a ternary.")
|
OxcDiagnostic::warn("Prefer using a logical operator over a ternary.")
|
||||||
|
|
@ -69,7 +69,7 @@ impl Rule for PreferLogicalOperatorOverTernary {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_same_node(left: &Expression, right: &Expression, ctx: &LintContext) -> bool {
|
fn is_same_node(left: &Expression, right: &Expression, ctx: &LintContext) -> bool {
|
||||||
if is_same_reference(left, right, ctx) {
|
if is_same_expression(left, right, ctx) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
|
||||||
use oxc_ast::{
|
use oxc_ast::{
|
||||||
ast::{BinaryExpression, BinaryOperator, Expression, UnaryOperator},
|
ast::{BinaryExpression, BinaryOperator, Expression},
|
||||||
AstKind,
|
AstKind,
|
||||||
};
|
};
|
||||||
use oxc_diagnostics::OxcDiagnostic;
|
use oxc_diagnostics::OxcDiagnostic;
|
||||||
use oxc_macros::declare_oxc_lint;
|
use oxc_macros::declare_oxc_lint;
|
||||||
use oxc_span::Span;
|
use oxc_span::Span;
|
||||||
|
|
||||||
use crate::{context::LintContext, rule::Rule, utils::is_same_reference, AstNode};
|
use crate::{context::LintContext, rule::Rule, utils::is_same_expression, AstNode};
|
||||||
|
|
||||||
fn prefer_math_min_max_diagnostic(span: Span) -> OxcDiagnostic {
|
fn prefer_math_min_max_diagnostic(span: Span) -> OxcDiagnostic {
|
||||||
OxcDiagnostic::warn(
|
OxcDiagnostic::warn(
|
||||||
|
|
@ -111,21 +111,6 @@ fn get_expr_value(expr: &Expression) -> Option<String> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_same_expression(left: &Expression, right: &Expression, ctx: &LintContext) -> bool {
|
|
||||||
if is_same_reference(left, right, ctx) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
match (left, right) {
|
|
||||||
(Expression::UnaryExpression(left_expr), Expression::UnaryExpression(right_expr)) => {
|
|
||||||
left_expr.operator == UnaryOperator::UnaryNegation
|
|
||||||
&& right_expr.operator == UnaryOperator::UnaryNegation
|
|
||||||
&& is_same_reference(&left_expr.argument, &right_expr.argument, ctx)
|
|
||||||
}
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_min_max(
|
fn is_min_max(
|
||||||
condition: &BinaryExpression,
|
condition: &BinaryExpression,
|
||||||
consequent: &Expression,
|
consequent: &Expression,
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ use oxc_span::Span;
|
||||||
use oxc_syntax::operator::BinaryOperator;
|
use oxc_syntax::operator::BinaryOperator;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
ast_util::is_method_call, context::LintContext, rule::Rule, utils::is_same_reference, AstNode,
|
ast_util::is_method_call, context::LintContext, rule::Rule, utils::is_same_expression, AstNode,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn prefer_math_abs(span: Span) -> OxcDiagnostic {
|
fn prefer_math_abs(span: Span) -> OxcDiagnostic {
|
||||||
|
|
@ -249,7 +249,7 @@ fn is_pow_2_expression(expression: &Expression, ctx: &LintContext<'_>) -> bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BinaryOperator::Multiplication => {
|
BinaryOperator::Multiplication => {
|
||||||
is_same_reference(&bin_expr.left, &bin_expr.right, ctx)
|
is_same_expression(&bin_expr.left, &bin_expr.right, ctx)
|
||||||
}
|
}
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ use oxc_diagnostics::OxcDiagnostic;
|
||||||
use oxc_macros::declare_oxc_lint;
|
use oxc_macros::declare_oxc_lint;
|
||||||
use oxc_span::{GetSpan, Span};
|
use oxc_span::{GetSpan, Span};
|
||||||
|
|
||||||
use crate::{context::LintContext, fixer::Fix, rule::Rule, utils::is_same_reference, AstNode};
|
use crate::{context::LintContext, fixer::Fix, rule::Rule, utils::is_same_expression, AstNode};
|
||||||
|
|
||||||
fn prefer_negative_index_diagnostic(span: Span) -> OxcDiagnostic {
|
fn prefer_negative_index_diagnostic(span: Span) -> OxcDiagnostic {
|
||||||
OxcDiagnostic::warn("Prefer negative index over .length - index when possible").with_label(span)
|
OxcDiagnostic::warn("Prefer negative index over .length - index when possible").with_label(span)
|
||||||
|
|
@ -179,7 +179,7 @@ impl Rule for PreferNegativeIndex {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_same_node(left: &Expression, right: &Expression, ctx: &LintContext) -> bool {
|
fn is_same_node(left: &Expression, right: &Expression, ctx: &LintContext) -> bool {
|
||||||
if is_same_reference(left, right, ctx) {
|
if is_same_expression(left, right, ctx) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,8 @@ pub fn get_return_identifier_name<'a>(body: &'a FunctionBody<'_>) -> Option<&'a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_same_reference(left: &Expression, right: &Expression, ctx: &LintContext) -> bool {
|
/// Compares two expressions to see if they are the same.
|
||||||
|
pub fn is_same_expression(left: &Expression, right: &Expression, ctx: &LintContext) -> bool {
|
||||||
if let Expression::ChainExpression(left_chain_expr) = left {
|
if let Expression::ChainExpression(left_chain_expr) = left {
|
||||||
if let Some(right_member_expr) = right.as_member_expression() {
|
if let Some(right_member_expr) = right.as_member_expression() {
|
||||||
if let Some(v) = left_chain_expr.expression.as_member_expression() {
|
if let Some(v) = left_chain_expr.expression.as_member_expression() {
|
||||||
|
|
@ -190,7 +191,7 @@ pub fn is_same_reference(left: &Expression, right: &Expression, ctx: &LintContex
|
||||||
.expressions
|
.expressions
|
||||||
.iter()
|
.iter()
|
||||||
.zip(right_str.expressions.iter())
|
.zip(right_str.expressions.iter())
|
||||||
.all(|(left, right)| is_same_reference(left, right, ctx));
|
.all(|(left, right)| is_same_expression(left, right, ctx));
|
||||||
}
|
}
|
||||||
(Expression::NumericLiteral(left_num), Expression::NumericLiteral(right_num)) => {
|
(Expression::NumericLiteral(left_num), Expression::NumericLiteral(right_num)) => {
|
||||||
return left_num.raw == right_num.raw;
|
return left_num.raw == right_num.raw;
|
||||||
|
|
@ -209,12 +210,12 @@ pub fn is_same_reference(left: &Expression, right: &Expression, ctx: &LintContex
|
||||||
Expression::BinaryExpression(right_bin_expr),
|
Expression::BinaryExpression(right_bin_expr),
|
||||||
) => {
|
) => {
|
||||||
return left_bin_expr.operator == right_bin_expr.operator
|
return left_bin_expr.operator == right_bin_expr.operator
|
||||||
&& is_same_reference(
|
&& is_same_expression(
|
||||||
left_bin_expr.left.get_inner_expression(),
|
left_bin_expr.left.get_inner_expression(),
|
||||||
right_bin_expr.left.get_inner_expression(),
|
right_bin_expr.left.get_inner_expression(),
|
||||||
ctx,
|
ctx,
|
||||||
)
|
)
|
||||||
&& is_same_reference(
|
&& is_same_expression(
|
||||||
left_bin_expr.right.get_inner_expression(),
|
left_bin_expr.right.get_inner_expression(),
|
||||||
right_bin_expr.right.get_inner_expression(),
|
right_bin_expr.right.get_inner_expression(),
|
||||||
ctx,
|
ctx,
|
||||||
|
|
@ -226,7 +227,7 @@ pub fn is_same_reference(left: &Expression, right: &Expression, ctx: &LintContex
|
||||||
Expression::UnaryExpression(right_unary_expr),
|
Expression::UnaryExpression(right_unary_expr),
|
||||||
) => {
|
) => {
|
||||||
return left_unary_expr.operator == right_unary_expr.operator
|
return left_unary_expr.operator == right_unary_expr.operator
|
||||||
&& is_same_reference(
|
&& is_same_expression(
|
||||||
left_unary_expr.argument.get_inner_expression(),
|
left_unary_expr.argument.get_inner_expression(),
|
||||||
right_unary_expr.argument.get_inner_expression(),
|
right_unary_expr.argument.get_inner_expression(),
|
||||||
ctx,
|
ctx,
|
||||||
|
|
@ -302,7 +303,7 @@ pub fn is_same_member_expression(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
if !is_same_reference(
|
if !is_same_expression(
|
||||||
left.expression.get_inner_expression(),
|
left.expression.get_inner_expression(),
|
||||||
right.expression.get_inner_expression(),
|
right.expression.get_inner_expression(),
|
||||||
ctx,
|
ctx,
|
||||||
|
|
@ -313,7 +314,7 @@ pub fn is_same_member_expression(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is_same_reference(
|
is_same_expression(
|
||||||
left.object().get_inner_expression(),
|
left.object().get_inner_expression(),
|
||||||
right.object().get_inner_expression(),
|
right.object().get_inner_expression(),
|
||||||
ctx,
|
ctx,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue