Skip to content

Commit

Permalink
Parser: Rename Call to ConditionCall
Browse files Browse the repository at this point in the history
Summary: The existence of `Call` and `CallInfo` are rather confusing. One of them is used in the `Condition` class and is renamed to `ConditionCall` (similar to the existing `ConditionLeaf`. The other reflects the `CallInfo` object emitted by the analysis.

Reviewed By: anwesht

Differential Revision: D51908911

fbshipit-source-id: 268ac8e01ce4c32c644599e992c742d421defa7b
  • Loading branch information
Yuh Shin Ong authored and facebook-github-bot committed Dec 7, 2023
1 parent 1415aaf commit efddea8
Showing 1 changed file with 32 additions and 32 deletions.
64 changes: 32 additions & 32 deletions sapp/pipeline/mariana_trench_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,30 +212,6 @@ def is_propagation_without_trace(self) -> bool:
return "Propagation" == self.call_kind


class Call(NamedTuple):
"""Represents a callee in sapp"""

method: Method
port: Port
position: Position

@staticmethod
def from_call_info(call_info: CallInfo) -> "Call":
if call_info.method is None:
raise sapp.ParseError(
f"Cannot construct a Call without a valid method {call_info}"
)
return Call(call_info.method, call_info.port, call_info.position)

@staticmethod
def from_origin(origin: Origin, call_info: CallInfo) -> "Call":
return Call(
method=origin.callee_name,
port=origin.callee_port,
position=call_info.position,
)


class LocalPositions(NamedTuple):
positions: List[Position]

Expand Down Expand Up @@ -375,9 +351,33 @@ def to_sapp(self) -> Tuple[str, int]:
return (self.kind, self.distance)


class ConditionCall(NamedTuple):
"""Represents a caller/callee in a [pre|post]Condition"""

method: Method
port: Port
position: Position

@staticmethod
def from_call_info(call_info: CallInfo) -> "ConditionCall":
if call_info.method is None:
raise sapp.ParseError(
f"Cannot construct a ConditionCall without a valid method {call_info}"
)
return ConditionCall(call_info.method, call_info.port, call_info.position)

@staticmethod
def from_origin(origin: Origin, call_info: CallInfo) -> "ConditionCall":
return ConditionCall(
method=origin.callee_name,
port=origin.callee_port,
position=call_info.position,
)


class Condition(NamedTuple):
caller: Call
callee: Call
caller: ConditionCall
callee: ConditionCall
leaves: List[ConditionLeaf]
local_positions: LocalPositions
features: Features
Expand Down Expand Up @@ -421,7 +421,7 @@ def to_sapp(self) -> sapp.ParseConditionTuple:


class IssueCondition(NamedTuple):
callee: Call
callee: ConditionCall
leaves: List[ConditionLeaf]
local_positions: LocalPositions
features: Features
Expand Down Expand Up @@ -680,7 +680,7 @@ def _parse_issue_conditions(
for origin in kind.origins:
conditions.append(
IssueCondition(
callee=Call.from_origin(origin, call_info),
callee=ConditionCall.from_origin(origin, call_info),
leaves=condition_leaves,
local_positions=local_positions,
features=features,
Expand All @@ -694,7 +694,7 @@ def _parse_issue_conditions(
extra_traces.update(kind.extra_traces)
conditions.append(
IssueCondition(
callee=Call.from_call_info(call_info),
callee=ConditionCall.from_call_info(call_info),
leaves=condition_leaves,
local_positions=local_positions,
features=features,
Expand Down Expand Up @@ -759,7 +759,7 @@ def _parse_condition(
caller_position = Position.from_json(model["position"], caller_method)

for leaf_model in model.get(condition_model_key, []):
caller = Call(
caller = ConditionCall(
method=caller_method,
port=Port.from_json(leaf_model[port_key], leaf_kind),
position=caller_position,
Expand Down Expand Up @@ -792,7 +792,7 @@ def _parse_condition(
condition_by_callee = {}
for kind in kinds:
for origin in kind.origins:
callee = Call.from_origin(origin, call_info)
callee = ConditionCall.from_origin(origin, call_info)
condition = condition_by_callee.get(
callee,
condition_class(
Expand All @@ -816,7 +816,7 @@ def _parse_condition(

yield condition_class(
caller=caller,
callee=Call.from_call_info(call_info),
callee=ConditionCall.from_call_info(call_info),
leaves=[ConditionLeaf.from_kind(kind) for kind in kinds],
local_positions=local_positions,
features=local_features,
Expand Down

0 comments on commit efddea8

Please sign in to comment.