{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-redundant-constraints #-}
module Language.Java.Inline.Internal.QQMarker where
import Data.Proxy
import GHC.Stack (HasCallStack, withFrozenCallStack)
import GHC.TypeLits (Nat, Symbol)
import Language.Java
qqMarker
:: forall
k
(args_tys :: k)
tyres
(input :: Symbol)
(mname :: Symbol)
(antiqs :: Symbol)
(line :: Nat)
args_tuple
b
m.
( tyres ~ Ty b
, Coercibles args_tuple args_tys
, Coercible b
, HasCallStack
)
=> Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b
qqMarker :: Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b
qqMarker = (HasCallStack =>
Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b)
-> Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack =>
Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b)
-> Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b)
-> (HasCallStack =>
Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b)
-> Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b
forall a b. (a -> b) -> a -> b
$
[Char]
-> Proxy input
-> Proxy mname
-> Proxy antiqs
-> Proxy line
-> args_tuple
-> Proxy args_tys
-> (args_tuple -> m b)
-> m b
forall a. HasCallStack => [Char] -> a
error
[Char]
"A quasiquotation marker was not removed. Please, report this as a bug."
class Coercibles xs (tys :: k) | xs -> tys
instance Coercibles () ()
instance (ty ~ Ty x, Coercible x, Coercibles xs tys)
=> Coercibles (x, xs) '(ty, tys)