@@ -652,7 +652,8 @@ echo "--- Step 10: Fixing eslint/FlowFixMe comment ordering ---"
652652
653653# When $FlowFixMe is inserted between eslint-disable-next-line and the code,
654654# eslint-disable no longer applies (it targets the FlowFixMe comment instead).
655- # Fix: convert eslint-disable-next-line to eslint-disable-line on the code line.
655+ # Fix: wrap the code with eslint-disable/eslint-enable block comments, so that
656+ # both the FlowFixMe suppression and the eslint suppression work correctly.
656657python3 << 'PYEOF '
657658import os, re
658659
@@ -678,12 +679,17 @@ for root, dirs, files in os.walk(src_dir):
678679 m = re.search(r'eslint-disable-next-line\s+(.+)', lines[i + 1])
679680 if m:
680681 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')
681690 new_lines.append(lines[i]) # Keep $FlowFixMe
682- # Skip eslint-disable-next-line, add as inline on code line
683- code_line = lines[i + 2].rstrip()
684- if 'eslint-disable-line' not in code_line:
685- code_line = code_line + f' // eslint-disable-line {rule}'
686- new_lines.append(code_line + '\n')
691+ new_lines.append(lines[i + 2]) # Keep code
692+ new_lines.append(f'{indent}/* eslint-enable {rule} */\n')
687693 i += 3
688694 modified = True
689695 fixed += 1
@@ -695,12 +701,17 @@ for root, dirs, files in os.walk(src_dir):
695701 m = re.search(r'eslint-disable-next-line\s+(.+)', lines[i])
696702 if m:
697703 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')
698712 new_lines.append(lines[i + 1]) # Keep $FlowFixMe
699- # Skip eslint-disable-next-line, add as inline on code line
700- code_line = lines[i + 2].rstrip()
701- if 'eslint-disable-line' not in code_line:
702- code_line = code_line + f' // eslint-disable-line {rule}'
703- new_lines.append(code_line + '\n')
713+ new_lines.append(lines[i + 2]) # Keep code
714+ new_lines.append(f'{indent}/* eslint-enable {rule} */\n')
704715 i += 3
705716 modified = True
706717 fixed += 1
0 commit comments