diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2019-11-27 15:29:44 +0000 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-01-12 21:28:47 -0500 |
commit | 9129210f7e9937c1065330295f06524661575839 (patch) | |
tree | 8eee18f92d23eb2fe39adecda1d547fa8d9fa7cb /testsuite/tests/quotes/TH_localname.stderr | |
parent | 49f83a0de12a7c02f4a6e99d26eaa362a373afa5 (diff) | |
download | haskell-9129210f7e9937c1065330295f06524661575839.tar.gz |
Overloaded Quotation Brackets (#246)
This patch implements overloaded quotation brackets which generalise the
desugaring of all quotation forms in terms of a new minimal interface.
The main change is that a quotation, for example, [e| 5 |], will now
have type `Quote m => m Exp` rather than `Q Exp`. The `Quote` typeclass
contains a single method for generating new names which is used when
desugaring binding structures.
The return type of functions from the `Lift` type class, `lift` and `liftTyped` have
been restricted to `forall m . Quote m => m Exp` rather than returning a
result in a Q monad.
More details about the feature can be read in the GHC proposal.
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0246-overloaded-bracket.rst
Diffstat (limited to 'testsuite/tests/quotes/TH_localname.stderr')
-rw-r--r-- | testsuite/tests/quotes/TH_localname.stderr | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/testsuite/tests/quotes/TH_localname.stderr b/testsuite/tests/quotes/TH_localname.stderr index d872a622b3..6d0ccc91ec 100644 --- a/testsuite/tests/quotes/TH_localname.stderr +++ b/testsuite/tests/quotes/TH_localname.stderr @@ -1,21 +1,23 @@ TH_localname.hs:3:11: error: - • Ambiguous type variable ‘t0’ arising from a use of ‘Language.Haskell.TH.Syntax.lift’ - prevents the constraint ‘(Language.Haskell.TH.Syntax.Lift - t0)’ from being solved. + • Ambiguous type variable ‘m0’ arising from a quotation bracket + prevents the constraint ‘(Language.Haskell.TH.Syntax.Quote + m0)’ from being solved. Relevant bindings include - y :: t0 (bound at TH_localname.hs:3:6) - x :: t0 -> Language.Haskell.TH.Lib.Internal.ExpQ + x :: t0 -> m0 Language.Haskell.TH.Syntax.Exp (bound at TH_localname.hs:3:1) - Probable fix: use a type annotation to specify what ‘t0’ should be. - These potential instances exist: - 29 instances involving out-of-scope types + Probable fix: use a type annotation to specify what ‘m0’ should be. + These potential instance exist: + one instance involving out-of-scope types (use -fprint-potential-instances to see them all) - • In the expression: Language.Haskell.TH.Syntax.lift y - In the expression: + • In the expression: [| y |] pending(rn) [<y, Language.Haskell.TH.Syntax.lift y>] In the expression: \ y -> [| y |] pending(rn) [<y, Language.Haskell.TH.Syntax.lift y>] + In an equation for ‘x’: + x = \ y + -> [| y |] + pending(rn) [<y, Language.Haskell.TH.Syntax.lift y>] |