Я столкнулся со следующей ошибкой, что довольно удивительно. Я добавил поле в AppSettings
в приложении Yesod (используя экранную привязку Yesod), и, к моему удивлению, все скомпилировано, хотя я ничего не делал (я ожидал добавить значение по умолчанию для построения AppSettings
, но нет). Вместо этого я получил ошибку времени выполнения, указав мне, что поле отсутствует. Похоже, что единственная конструкция до AppSetting
использует расширение RecordWildCards
и выглядит как AppSettings{..}
. Не определяя новое поле, вы не генерировали ошибку, а предупреждение (я этого не видел, потому что я работал в режиме непрерывной работы с использованием stack test --file-watch
). Как это возможно? Я пытаюсь воспроизвести проблему в простом файле, и я получаю сообщение об ошибке, а не предупреждение. Так почему я предупреждаю Йесода? Это флаг компиляции или что-то еще?Recordwildcards падает во время выполнения в приложении yesod
Редактировать
Это не относится к Йесоду. Я снова сделал тест с помощью простого файла, и он генерирует предупреждение, а не ошибку.
«Это флаг компиляции или что-то в этом роде?» - вероятно. Это похоже на проблему 'stack', какие настройки передаются ей в ghc? – user2407038