Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix COMPLETE for all type class based pattern synonyms #4613

Open
2 tasks
lehins opened this issue Sep 9, 2024 · 1 comment
Open
2 tasks

Fix COMPLETE for all type class based pattern synonyms #4613

lehins opened this issue Sep 9, 2024 · 1 comment
Labels
💳 technical-debt Issues related to technical debt we introduced

Comments

@lehins
Copy link
Collaborator

lehins commented Sep 9, 2024

We have a few type class based pattern synonyms:

  • - TxCerts
  • - NativeScripts

All of these cannot have a COMPLETE pragma implemented for them, since ghc-8.10 does not support new syntax with the type. For example that is why we had to reject this RP: https://github.com/IntersectMBO/cardano-ledger/pull/4481/files

Which tried to add an incorrect pattern:

{-# COMPLETE
  RequireSignature
  , RequireAllOf
  , RequireAnyOf
  , RequireMOf
  #-}

since it would disregard timelock's RequireTimeStart and RequireTimeExpire.

Therefore, the correct way to solve this is to specify COMPELTE pragma for each era:

{-# COMPLETE
  RequireSignature
  , RequireAllOf
  , RequireAnyOf
  , RequireMOf :: Shelley
  #-}
{-# COMPLETE
  RequireSignature
  , RequireAllOf
  , RequireAnyOf
  , RequireMOf
  , RequireTimeStart
  , RequireTimeExpire :: Allegra
  #-}

etc.

@lehins
Copy link
Collaborator Author

lehins commented Sep 9, 2024

This could be done before we deprecate usage of GHC-8.10 with some CPP

@lehins lehins added the 💳 technical-debt Issues related to technical debt we introduced label Sep 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💳 technical-debt Issues related to technical debt we introduced
Projects
None yet
Development

No branches or pull requests

1 participant