Где начать с "не удалось сопоставить тип MyId с MyId"
Правка: доступно очень маленькое повторение https://github.com/dten/CouldntMatchTypeRepro
stack test
отлично работал на стеке LTS-8.24 (ghc 8.0.2), и я попытался перейти на LTS-10.5 (ghc 8.2.2). Теперь он не выполняет проверку типа, и сообщение об ошибке менее чем полезно.
Типы MyId, перечисленные буквально, являются одним и тем же типом, объявленным в my-model
makeId
находится в пакете testing-help
, который ссылается на my-model
, и этот код находится в пакете test
, который ссылается на оба.
переезд функция для пакета my-model не приводит к ошибке (но я не хочу, и у меня есть проблема с другими типами даже в том же пакете (всегда использование в тестовом пакете)) Я прочитал информацию о миграции в 8.2, но ничего не выделялось. Любой указатель в правильном направлении ценится:) спасибо
testSpec.hs:785:11: error:
* Couldn't match type `my-model-0.0.0:Types.Ids.MyId'
with `MyId'
NB: `MyId'
is defined in `Types.Ids' in package `my-model-0.0.0'
`my-model-0.0.0:Types.Ids.MyId'
is defined in `Types.Ids' in package `my-model-0.0.0'
Expected type: UserId
Actual type: my-model-0.0.0:Types.Ids.MyId
* In the expression: makeId "19186adb-26e5-4901-956c-f3ba11fc016d"
In an equation for `userId':
userId = makeId "19186adb-26e5-4901-956c-f3ba11fc016d"
|
785 | userId = makeId "19186adb-26e5-4901-956c-f3ba11fc016d"
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Правки: я пытался удалить .stack-work
и даже ~/stack-root
Компоновка пакетов выглядит следующим образом:
package: my-model
library
test-suite test
deps: my-model, testing-help
package: testing-help
library
deps: my-model
Никакие требования к версии не установлены (потому что это стиль stack LTS) и все версии моих пакетов являются 0.0.0
Edit2: они все в 1 stack.yaml
Edit3: извините, что получил пакет deps неправильно
1 ответ:
Похоже, это ошибка в Cabal, или, по крайней мере, недостающая функция. Я не знаю, почему это работает со старыми решателями. выпуск 2800 на стеке упоминает об этом. См. выпуск 1575, выпуск 4087 о кабале.