Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
7fa1804
fix(biome-js-analyze): add tests for useReadonlyClassProperties
vladimir-ivanov Aug 24, 2025
c1d20bd
fix(biome-js-analyze): add tests for useReadonlyClassProperties
vladimir-ivanov Aug 24, 2025
5157200
fix(biome-js-analyze): add tests for useReadonlyClassProperties
vladimir-ivanov Aug 24, 2025
807a3dd
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 7, 2025
040ad1a
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
3e6593e
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
d63f2db
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
c375b39
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
c8a71a2
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
edce557
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
0a6e569
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
e75d83e
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 8, 2025
9d45908
eat(biome_js_analyze): extracts class member references in a service)
vladimir-ivanov Sep 9, 2025
5d37a60
feat(biome_js_analyze): extracts class member references in a service
vladimir-ivanov Sep 9, 2025
a53d82b
feat(biome_js_analyze): extracts class member references in a service
vladimir-ivanov Sep 10, 2025
075ce95
feat(biome_js_analyze): extracts class member references in a service
vladimir-ivanov Sep 10, 2025
d57d26a
feat(biome_js_analyze): extracts class member references in a service
vladimir-ivanov Sep 10, 2025
8aae3bc
feat(biome_js_analyze): extracts class member references in a service
vladimir-ivanov Sep 10, 2025
4d87dad
feat(biome-js-analyze): adjusts members update assignments to be mark…
vladimir-ivanov Sep 15, 2025
1ebfaaa
feat(biome-js-analyze): adjusts members update assignments to be mark…
vladimir-ivanov Sep 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion crates/biome_js_analyze/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ use std::sync::{Arc, LazyLock};
mod a11y;
pub mod assist;
mod ast_utils;
mod class_member_references;
mod frameworks;
pub mod globals;
pub mod lint;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use crate::JsRuleAction;
use crate::class_member_references::{
AnyPropertyMember, ClassMemberReference, ClassMemberReferences, class_member_references,
use crate::services::semantic_class::{
AnyPropertyMember, ClassMemberReference, ClassMemberReferences, SemanticClass,
};
use biome_analyze::{
Ast, FixKind, Rule, RuleDiagnostic, RuleSource, context::RuleContext, declare_lint_rule,
FixKind, Rule, RuleDiagnostic, RuleSource, context::RuleContext, declare_lint_rule,
};
use biome_console::markup;
use biome_js_factory::make;
Expand Down Expand Up @@ -124,7 +124,7 @@ declare_lint_rule! {
}

impl Rule for UseReadonlyClassProperties {
type Query = Ast<JsClassDeclaration>;
type Query = SemanticClass<JsClassDeclaration>;
type State = AnyPropertyMember;
type Signals = Box<[Self::State]>;
type Options = UseReadonlyClassPropertiesOptions;
Expand All @@ -137,11 +137,12 @@ impl Rule for UseReadonlyClassProperties {

let root = ctx.query();
let members = root.members();
let private_only = !ctx.options().check_all_properties;
let ClassMemberReferences { writes, .. } = class_member_references(&members);

let ClassMemberReferences { writes, .. } = ctx.model.class_member_references(&members);

let private_only = !ctx.options().check_all_properties;
let constructor_params: Vec<_> =
collect_non_readonly_constructor_parameters(root, private_only);
collect_non_readonly_constructor_parameters(&members, private_only);
let non_readonly_class_property_members =
collect_non_readonly_class_member_properties(&members, private_only);

Expand Down Expand Up @@ -325,15 +326,14 @@ fn collect_non_readonly_class_member_properties(
})
}

/// Collects all all mutable (non-readonly) constructor parameters from a given class declaration. If private_only is true, it only includes parameters with private visibility.
/// Collects all all mutable (non-readonly) constructor parameters from a given class member list. If private_only is true, it only includes parameters with private visibility.
/// It returns a Vec<PropOrParam> representing these parameters, which are candidates for being marked as readonly.
/// e.g. constructor(private paramOne: string, public paramTwo: number) {} makes both paramOne and paramTwo class member properties.
fn collect_non_readonly_constructor_parameters(
class_declaration: &JsClassDeclaration,
class_members: &JsClassMemberList,
private_only: bool,
) -> Vec<AnyPropertyMember> {
class_declaration
.members()
class_members
.iter()
.find_map(|member| match member {
AnyJsClassMember::JsConstructorClassMember(member) => Some(member),
Expand Down
1 change: 1 addition & 0 deletions crates/biome_js_analyze/src/services/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ pub mod control_flow;
pub mod manifest;
pub mod module_graph;
pub mod semantic;
pub mod semantic_class;
pub mod typed;
Loading
Loading