Skip to content

Commit 0ed7f37

Browse files
cursoragent4ian
andcommitted
Fix eslint/FlowFixMe ordering with multi-FlowFixMe stacks, add final format step
Co-authored-by: Florian Rival <[email protected]>
1 parent 7d68f6f commit 0ed7f37

File tree

1 file changed

+61
-38
lines changed

1 file changed

+61
-38
lines changed

newIDE/app/scripts/fix-flow-errors.sh

Lines changed: 61 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -672,50 +672,65 @@ for root, dirs, files in os.walk(src_dir):
672672
new_lines = []
673673
i = 0
674674
while i < len(lines):
675-
# Pattern: $FlowFixMe[...], then eslint-disable-next-line, then code
675+
# Pattern: eslint-disable-next-line, then one or more $FlowFixMe[...], then code
676676
if (i + 2 < len(lines) and
677-
'$FlowFixMe[' in lines[i] and
678-
'eslint-disable-next-line' in lines[i + 1]):
679-
m = re.search(r'eslint-disable-next-line\s+(.+)', lines[i + 1])
680-
if m:
681-
rule = m.group(1).strip()
682-
indent = ''
683-
for ch in lines[i + 2]:
684-
if ch in (' ', '\t'):
685-
indent += ch
686-
else:
687-
break
688-
# Use eslint-disable/enable block instead
689-
new_lines.append(f'{indent}/* eslint-disable {rule} */\n')
690-
new_lines.append(lines[i]) # Keep $FlowFixMe
691-
new_lines.append(lines[i + 2]) # Keep code
692-
new_lines.append(f'{indent}/* eslint-enable {rule} */\n')
693-
i += 3
694-
modified = True
695-
fixed += 1
696-
continue
697-
# Pattern: eslint-disable-next-line, then $FlowFixMe[...], then code
698-
elif (i + 2 < len(lines) and
699677
'eslint-disable-next-line' in lines[i] and
700678
'$FlowFixMe[' in lines[i + 1]):
701679
m = re.search(r'eslint-disable-next-line\s+(.+)', lines[i])
702680
if m:
703681
rule = m.group(1).strip()
704-
indent = ''
705-
for ch in lines[i + 2]:
706-
if ch in (' ', '\t'):
707-
indent += ch
708-
else:
709-
break
710-
# Use eslint-disable/enable block instead
711-
new_lines.append(f'{indent}/* eslint-disable {rule} */\n')
712-
new_lines.append(lines[i + 1]) # Keep $FlowFixMe
713-
new_lines.append(lines[i + 2]) # Keep code
714-
new_lines.append(f'{indent}/* eslint-enable {rule} */\n')
715-
i += 3
716-
modified = True
717-
fixed += 1
718-
continue
682+
# Collect all consecutive FlowFixMe lines
683+
fixme_lines = []
684+
j = i + 1
685+
while j < len(lines) and '$FlowFixMe[' in lines[j]:
686+
fixme_lines.append(lines[j])
687+
j += 1
688+
if j < len(lines):
689+
code_line = lines[j]
690+
indent = ''
691+
for ch in code_line:
692+
if ch in (' ', '\t'):
693+
indent += ch
694+
else:
695+
break
696+
# Use eslint-disable/enable block wrapping FlowFixMe + code
697+
new_lines.append(f'{indent}/* eslint-disable {rule} */\n')
698+
for fl in fixme_lines:
699+
new_lines.append(fl)
700+
new_lines.append(code_line)
701+
new_lines.append(f'{indent}/* eslint-enable {rule} */\n')
702+
i = j + 1
703+
modified = True
704+
fixed += 1
705+
continue
706+
# Pattern: one or more $FlowFixMe[...], then eslint-disable-next-line, then code
707+
elif (i + 2 < len(lines) and
708+
'$FlowFixMe[' in lines[i] and
709+
'eslint-disable-next-line' in lines[i + 1]):
710+
# Find where the FlowFixMe block starts
711+
fixme_start = i
712+
# The eslint line is after one FlowFixMe; collect FlowFixMe after it too
713+
m = re.search(r'eslint-disable-next-line\s+(.+)', lines[i + 1])
714+
if m:
715+
rule = m.group(1).strip()
716+
j = i + 2
717+
# Code line is right after eslint-disable-next-line
718+
if j < len(lines):
719+
code_line = lines[j]
720+
indent = ''
721+
for ch in code_line:
722+
if ch in (' ', '\t'):
723+
indent += ch
724+
else:
725+
break
726+
new_lines.append(f'{indent}/* eslint-disable {rule} */\n')
727+
new_lines.append(lines[i]) # Keep $FlowFixMe
728+
new_lines.append(code_line)
729+
new_lines.append(f'{indent}/* eslint-enable {rule} */\n')
730+
i = j + 1
731+
modified = True
732+
fixed += 1
733+
continue
719734
720735
new_lines.append(lines[i])
721736
i += 1
@@ -727,6 +742,14 @@ for root, dirs, files in os.walk(src_dir):
727742
print(f" Fixed {fixed} eslint/FlowFixMe orderings")
728743
PYEOF
729744

745+
###############################################################################
746+
# STEP 11: Final format after all fixes
747+
###############################################################################
748+
echo ""
749+
echo "--- Step 11: Final format pass ---"
750+
npm run format 2>&1 || true
751+
echo " Done."
752+
730753
echo ""
731754
echo "=== Flow Migration Fix Script Complete ==="
732755
echo "Run 'npm run flow' and 'npm run build' to verify."

0 commit comments

Comments
 (0)