{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}

#ifdef ONLY_ONE_LANGUAGE
module Cubix.Language.JavaScript.Parametric.Full.Exclusions () where
#else
module Cubix.Language.JavaScript.Parametric.Full.Exclusions (
    jsExcludedNames
  , excludedNamesSet
  ) where

import Data.Set ( Set )
import qualified Data.Set as Set

import Data.Comp.Trans ( standardExcludedNames )

import qualified Language.Haskell.TH.Syntax as TH
import Language.JavaScript.Parser.AST

-- | We handle these specially because they take type arguments

jsExcludedNames :: [TH.Name]
jsExcludedNames :: [Name]
jsExcludedNames = [''JSCommaList, ''JSCommaTrailingList]

excludedNamesSet :: Set TH.Name
excludedNamesSet :: Set Name
excludedNamesSet = Set Name -> Set Name -> Set Name
forall a. Ord a => Set a -> Set a -> Set a
Set.union Set Name
standardExcludedNames (Set Name -> Set Name) -> Set Name -> Set Name
forall a b. (a -> b) -> a -> b
$ [Name] -> Set Name
forall a. Ord a => [a] -> Set a
Set.fromList [Name]
jsExcludedNames

#endif