Skip to content

fix: единый мост modify для всех эпох стабов анализаторов#7

Merged
Zorin-Alexey merged 1 commit into
mainfrom
fix/phpstan-epochs
Jul 14, 2026
Merged

fix: единый мост modify для всех эпох стабов анализаторов#7
Zorin-Alexey merged 1 commit into
mainfrom
fix/phpstan-epochs

Conversation

@Zorin-Alexey

Copy link
Copy Markdown
Member

Стабы 8.5 требуют убрать false из типа сырого modify-моста (return.unusedType), стабы 8.1 — иметь его; Elvis запрещён strict-правилом, чистые конверсии сворачиваются инференсом. Решение: рефлексивный вызов с mixed-результатом и instanceof-гейтом — обе эпохи зелёные (phpVersion-лаборатория 80134/80500, src+tests), путь не горячий (только строковые модификаторы). Мутации 202/202 killed, покрытие 100%.

Тип возврата родного modify различается между стабами PHP 8.1 и 8.3+
(union с false против чистого момента), из-за чего строгий анализ
не проходил одновременно на краях матрицы: на новых стабах union
объявлялся избыточным, на старых был обязателен. Сырой вызов проведён
через рефлексию с mixed-результатом и обязательной проверкой на выходе:
обе ветки провала честно достижимы и покрыты на любой версии, путь
не горячий. Мутационное тестирование: 202 из 202 без выживших.
@Zorin-Alexey Zorin-Alexey merged commit 24a8567 into main Jul 14, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant