Skip to content

persistent-template: Phantom self-reference is an error #729

@lexi-lambda

Description

@lexi-lambda

The following code produces an error:

import Data.Proxy (Proxy(..))

mkPersist sqlSettings [persistLowerCase|
Foo
  bar (Proxy Foo)
|]
error:
    • Exception when trying to run compile-time code:
        Foo: a self reference must be a Maybe
CallStack (from HasCallStack):
  error, called at ./Database/Persist/TH.hs:263:29 in persistent-template-2.5.3-Eo7SLuwZzwzIDXoxvwLBF1:Database.Persist.TH
      Code: template-haskell-2.11.1.0:Language.Haskell.TH.Quote.quoteExp
              persistLowerCase
              "\n\
              \Foo\n\
              \  bar (Proxy Foo)\n"
    • In the quasi-quotation:
        [persistLowerCase|
Foo
  bar (Proxy Foo)
|]

This isn’t really a self-reference, however, because a is phantom in Proxy a.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions