blob: fb624455dfc1492badcc84de31eaf088cd2e7ec0 [file]
#!/usr/bin/env python3
# Copyright 2026 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""An example script to apply successful std::array rewrites.
Prerequisites:
--------------
Populate <scratch>/patch_{}.{out,diff,pass,fail} files by running:
//tools/clang/spanify/evaluate_patches.py
with patch_limit = 9999
"""
import pathlib
import sys
from spanify_utils import apply_collected_edits, scratch_dir
def main():
valid_patches = []
for p in scratch_dir().glob('patch_*.pass'):
index = int(p.name.removeprefix('patch_').removesuffix('.pass'))
diff_file = scratch_dir() / f"patch_{index}.diff"
if diff_file.exists():
valid_patches.append((index, diff_file))
valid_patches.sort(key=lambda x: x[0])
replacements = []
for index, p in valid_patches:
# Check if patch added std::array or std::to_array
has_std_array = False
with p.open("r") as fd:
for line in fd:
if line.startswith('+') and (
'std::array' in line or 'std::to_array' in line
):
has_std_array = True
break
if has_std_array:
print(f"Processing patch_{index}.diff")
txt_file = scratch_dir() / f"patch_{index}.txt"
if txt_file.exists():
replacements.extend(
txt_file.read_text().splitlines(keepends=True)
)
else:
print(f"Warning: {txt_file} does not exist.", file=sys.stderr)
print(f"Found {len(valid_patches)} patches.")
print(f"Collected {len(replacements)} replacements.")
apply_collected_edits(replacements)
return 0
if __name__ == "__main__":
sys.exit(main())