-- |
-- Module      :  Language.Thrift.Internal.Reserved
-- Copyright   :  (c) Abhinav Gupta 2016
-- License     :  BSD3
--
-- Maintainer  :  Abhinav Gupta <mail@abhinavg.net>
-- Stability   :  experimental
--
-- This module provides information about reserved Thrift identifiers.
module Language.Thrift.Internal.Reserved
    ( isReserved
    ) where

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

isReserved :: String -> Bool
isReserved :: String -> Bool
isReserved = (String -> Set String -> Bool
forall a. Ord a => a -> Set a -> Bool
`Set.member` Set String
reservedKeywords)

reservedKeywords :: Set String
reservedKeywords :: Set String
reservedKeywords = [String] -> Set String
forall a. Ord a => [a] -> Set a
Set.fromList
    [ String
"include"
    , String
"namespace"
    , String
"cpp_namespace"
    , String
"php_namespace"
    , String
"py_module"
    , String
"perl_package"
    , String
"ruby_namespace"
    , String
"java_package"
    , String
"cocoa_package"
    , String
"csharp_namespace"
    , String
"typedef"
    , String
"enum"
    , String
"struct"
    , String
"union"
    , String
"exception"
    , String
"required"
    , String
"optional"
    , String
"senum"
    , String
"const"
    , String
"string"
    , String
"binary"
    , String
"slist"
    , String
"bool"
    , String
"byte"
    , String
"i8"
    , String
"i16"
    , String
"i32"
    , String
"i64"
    , String
"double"
    , String
"map"
    , String
"set"
    , String
"list"
    , String
"service"
    , String
"extends"
    , String
"oneway"
    , String
"void"
    , String
"throws"
    ]