Skip to content

Improve `StorageContains`

Konstantin Ivanov requested to merge martoon/fix-storage-contains into master

Description

Problem: in the current implementation of StorageContains I can't write

type StorageC store meta = StorageContains store
  [ "field" := meta
  , ...
  ]

meaning

type StorageC store meta =
  ( StoreHasField store field meta
  , ...
  )

because with polymorphic meta, StorageContains cannot deduce which exactly case do we mean.

Solution: add a special case in the type family for such situations, so that "field" := Identity meta means StoreHasField store field meta.

Related issue(s)

Resolves #

Checklist for your Merge Request

Related changes (conditional)

  • Tests (see short guidelines)

    • If I added new functionality, I added tests covering it.
    • If I fixed a bug, I added a regression test to prevent the bug from silently reappearing again.
  • Documentation

    • I checked whether I should update the docs and did so if necessary:
    • I updated changelog files of all affected packages released to Hackage if my changes are externally visible.

Stylistic guide (mandatory)

Edited by Konstantin Ivanov

Merge request reports