Skip to content
Open
Changes from all commits
Commits
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
9 changes: 8 additions & 1 deletion flake8_async/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,14 @@ def __init__(self, options: Options, module: Module):

def run(self) -> Iterable[Error]:
for v in (*self.utility_visitors, *self.visitors):
self.module = cst.MetadataWrapper(self.module).visit(v)
# The default deepcopy guards against the same CST node object
# appearing at two positions in the tree (metadata is keyed by node
# identity). Parser output and the result of a prior .visit() never
# share nodes, so the copy is wasted work. This stays safe as long
# as no visitor returns a cached CST node from multiple leave_* calls.
self.module = cst.MetadataWrapper(self.module, unsafe_skip_copy=True).visit(
v
)

yield from self.state.problems

Expand Down
Loading