169 похожих чатов

А псалм не умеет паниковать, когда сравнивается null и string?

14 ответов

10 просмотров

странно, phpdoc'у больше доверяет

а с чего бы ему паниковать? Там же сравнение идет коректное ПРосто false всегда будет Но по типам никакой ошибки нет

Дмитрий-Ткаченко Автор вопроса

Ну например то что сравнивать null и string в принципе бессмысленно

почему?

бессмыслено не значит не правильно Это надо другую тулзу PHPshtorm воде умеет такое находить

Дмитрий-Ткаченко Автор вопроса

Потому что это разные типы

приравнивать ошибка А сравнивать типы в пхп не запрещено

А почему нельзя сравнивать то? Ну вот в базе у вас либо null у поля либо строка а в коде вам надо по совпадению строки что-то сделать почему нельзя сравнить с null и пройти дальше?

Дмитрий-Ткаченко Автор вопроса

Ничего странного, в пхп иногда без докблоков никак, и для псалма они имеют наивысший приоритет. Ну типа программист иногда лучше знает что у него там с типами

ты же указал, что там может быть строка https://psalm.dev/r/1188480ba5

Дмитрий-Ткаченко Автор вопроса

хоть string и является подтипом string|null, но это ж разные типы, и как-то это неочевидно, что можно сравнивать разные типы операцией сравнения с учетом типа

звучит будто ты сам не знаешь, чего хочешь. string|null может как совпасть с string(someString), так и нет. Если бы ты сравнивал null с string(someString) тебе бы по делу отстрелили - бесполезное сравнение, оно никогда не будет истинным

Дмитрий-Ткаченко Автор вопроса

я хочу чтобы псалм ругался если я сравниваю разные типы сравнением с учетом типов. Если я сравниваю со строкой, очевидно я предполагаю что там строка, и чисто мысленным инферром могу дальше работать как со строкой, потому что было сравнение несравнимых типов, и стат-анализ на такое не ругнулся

они сравнимые

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
8
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Доброе утро! Не совсем понятно как установить счетчик яндекс метрики на сайт. И потом ещё цели проставить?
Евгения
18
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Гуру, подскажите, меня уже критиковали за неумением, но и в инете я решения не нашел, тем более в доках абракадабры. В 12.1 студии появился новый тип TSQLTimeStampOffset , ест...
Delphi Photo
10
Это фейк @cruppto_newbot?
Antskup
10
Карта сайта