Skip to content

Commit

Permalink
Remove external use of DataFlowNode::new
Browse files Browse the repository at this point in the history
  • Loading branch information
muglug committed Mar 28, 2024
1 parent b0f8512 commit f87bd85
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -715,19 +715,14 @@ pub(crate) fn add_unspecialized_property_assignment_dataflow(
.data_flow_graph
.add_node(localized_property_node.clone());

let property_id_str = format!(
"{}::${}",
statements_analyzer.get_interner().lookup(&property_id.0),
statements_analyzer.get_interner().lookup(&property_id.1)
);

let removed_taints = if let Some(var_pos) = var_pos {
get_removed_taints_in_comments(statements_analyzer, var_pos)
} else {
vec![]
};

let property_node = DataFlowNode::new(property_id_str.clone(), property_id_str, None, None);
let property_node =
DataFlowNode::get_for_property(*property_id, statements_analyzer.get_interner());

analysis_data
.data_flow_graph
Expand Down Expand Up @@ -755,20 +750,8 @@ pub(crate) fn add_unspecialized_property_assignment_dataflow(

if let Some(declaring_property_class) = declaring_property_class {
if declaring_property_class != fq_class_name {
let declaring_property_id_str = format!(
"{}::${}",
statements_analyzer
.get_interner()
.lookup(declaring_property_class),
statements_analyzer.get_interner().lookup(&property_id.1)
);

let declaring_property_node = DataFlowNode::new(
declaring_property_id_str.clone(),
declaring_property_id_str,
None,
None,
);
let declaring_property_node =
DataFlowNode::get_for_property(*property_id, statements_analyzer.get_interner());

analysis_data.data_flow_graph.add_path(
&property_node,
Expand Down
8 changes: 1 addition & 7 deletions src/analyzer/expr/fetch/atomic_property_fetch_analyzer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -509,13 +509,7 @@ pub(crate) fn add_unspecialized_property_fetch_dataflow(
.data_flow_graph
.add_node(localized_property_node.clone());

let label = format!(
"{}::${}",
interner.lookup(&property_id.0),
interner.lookup(&property_id.1)
);

let property_node = DataFlowNode::new(label.clone(), label, None, None);
let property_node = DataFlowNode::get_for_property(*property_id, interner);

if in_assignment {
analysis_data.data_flow_graph.add_path(
Expand Down
19 changes: 19 additions & 0 deletions src/code_info/data_flow/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,16 @@ impl DataFlowNode {
Self::new(arg_id.clone(), arg_id, arg_location, specialization_key)
}

pub fn get_for_property(property_id: (StrId, StrId), interner: &Interner) -> Self {
let property_id_str = format!(
"{}::${}",
interner.lookup(&property_id.0),
interner.lookup(&property_id.1)
);

Self::new(property_id_str.clone(), property_id_str, None, None)
}

pub fn get_for_method_argument_out(
method_id: String,
argument_offset: usize,
Expand Down Expand Up @@ -297,6 +307,15 @@ impl DataFlowNode {
Self::new(id, var_id, Some(assignment_location), None)
}

pub fn get_for_type(type_name: &StrId, interner: &Interner, def_location: HPos) -> Self {
Self::new(
interner.lookup(type_name).to_string(),
interner.lookup(type_name).to_string(),
Some(def_location),
None,
)
}

pub fn get_for_unspecialized_property(
property_id: (StrId, StrId),
interner: &Interner,
Expand Down
9 changes: 4 additions & 5 deletions src/ttype/type_expander.rs
Original file line number Diff line number Diff line change
Expand Up @@ -383,11 +383,10 @@ fn expand_atomic(
if let (Some(shape_field_taints), Some(interner)) =
(&type_definition.shape_field_taints, interner)
{
let shape_node = DataFlowNode::new(
interner.lookup(type_name).to_string(),
interner.lookup(type_name).to_string(),
Some(type_definition.location),
None,
let shape_node = DataFlowNode::get_for_type(
type_name,
interner,
type_definition.location,
);

for (field_name, taints) in shape_field_taints {
Expand Down

0 comments on commit f87bd85

Please sign in to comment.