feat(inlayhints): составной тип «Тип, Неопределено» показывается как «Тип?» - #4407
Conversation
…«Тип?» Подсказка типа строилась только когда выведенный тип ровно один, а при union'е молча не появлялась. Между тем `Тип, Неопределено` — самый частый union: так выглядит всё, чего может не оказаться (ключ структуры, поиск по имени, ветка с `Неопределено`). Значимый тип там всё равно один, и знак вопроса говорит это короче, чем вторая половина перечисления. Правило узкое намеренно: два значимых типа знаком вопроса не выразить, а перечислять их подсказкой шумно — там поведение прежнее, хинта нет. Попутно `TypeRef.UNDEFINED` встал рядом с `ANY` и `UNKNOWN`: константа была продублирована в четырёх местах, и это стало бы пятым. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughVariable type inference accepts one significant type with optional ChangesNullable variable type hints
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- скобки в тернарнике со склейкой строк (java:S864); - объявление метки перенесено к месту использования (java:S1941); - размер union'а вынесен в именованную константу (java:S109). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Замечания Sonar разобраны. Исправлено: скобки в тернарнике со склейкой строк ( Оставлено осознанно — Три теста — Правило сработало только потому, что мой тест стал третьим по счёту: два других лежат в develop. Гейт зелёный. 🤖 Generated with Claude Code |
|



Проблема
Подсказка типа переменной строилась только когда выведенный тип ровно один. При union'е
она молча не появлялась — и
Число, Неопределеноне показывалось никогда.Между тем это самый частый union: так выглядит всё, чего может не оказаться — ключ структуры,
поиск по имени, ветвление с
Неопределенов одной из ветвей. Значимый тип там всё равно один.Решение
Знак вопроса говорит «значения может не быть» короче, чем вторая половина перечисления.
Правило узкое намеренно: два значимых типа знаком вопроса не выразить, а перечислять их
подсказкой шумно — там ничего не изменилось.
Попутно
TypeRef.UNDEFINEDвстал рядом сANYиUNKNOWN: константа была продублированав четырёх местах, и это стало бы пятым.
Проверка
Два теста: пара с
Неопределенодаёт: Число?, два значимых типа — по-прежнему пусто.Оба построены на обычном ветвлении
Если/Иначе, без завязки на другие ветки в работе.Полный
checkзелёный.🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
?suffix, such asЧисло?, when a value may also beНеопределено.Bug Fixes
Неопределено.Tests