-- SPDX-FileCopyrightText: 2022 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

{-# OPTIONS_HADDOCK not-home #-}

-- | Actual decision implementation for 'HasAnns'.
module Morley.Michelson.Typed.ClassifiedInstr.Internal.Classifiers.HasAnns
  ( module Morley.Michelson.Typed.ClassifiedInstr.Internal.Classifiers.HasAnns
  ) where

import Morley.Michelson.Typed.ClassifiedInstr.Internal.InstrEnum
import Morley.Michelson.Typed.ClassifiedInstr.Internal.Types

-- | Decide whether instruction has annotations or not. All annotated
-- instructions should have @Ann@ prefix.
hasAnns :: InstrEnum -> HasAnns
hasAnns :: InstrEnum -> HasAnns
hasAnns = \case
  InstrEnum
WithLoc -> HasAnns
DoesNotHaveAnns
  InstrEnum
Meta -> HasAnns
DoesNotHaveAnns
  InstrEnum
DocGroup -> HasAnns
DoesNotHaveAnns
  InstrEnum
Nop -> HasAnns
DoesNotHaveAnns
  InstrEnum
Ext -> HasAnns
DoesNotHaveAnns
  InstrEnum
Seq -> HasAnns
DoesNotHaveAnns
  InstrEnum
Nested -> HasAnns
DoesNotHaveAnns
  InstrEnum
IF_NONE -> HasAnns
DoesNotHaveAnns
  InstrEnum
IF_LEFT -> HasAnns
DoesNotHaveAnns
  InstrEnum
IF_CONS -> HasAnns
DoesNotHaveAnns
  InstrEnum
ITER -> HasAnns
DoesNotHaveAnns
  InstrEnum
IF -> HasAnns
DoesNotHaveAnns
  InstrEnum
LOOP -> HasAnns
DoesNotHaveAnns
  InstrEnum
LOOP_LEFT -> HasAnns
DoesNotHaveAnns
  InstrEnum
DIP  -> HasAnns
DoesNotHaveAnns
  InstrEnum
DIPN  -> HasAnns
DoesNotHaveAnns
  InstrEnum
FAILWITH  -> HasAnns
DoesNotHaveAnns
  InstrEnum
NEVER  -> HasAnns
DoesNotHaveAnns
  InstrEnum
DROP -> HasAnns
DoesNotHaveAnns
  InstrEnum
DROPN -> HasAnns
DoesNotHaveAnns
  InstrEnum
SWAP -> HasAnns
DoesNotHaveAnns
  InstrEnum
DIG -> HasAnns
DoesNotHaveAnns
  InstrEnum
DUG -> HasAnns
DoesNotHaveAnns
  InstrEnum
UNPAIRN -> HasAnns
DoesNotHaveAnns
  ------------------------
  InstrEnum
AnnMAP -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCAR -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCDR -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnDUP -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnDUPN -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnPUSH -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSOME -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnNONE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnUNIT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnPAIR -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnUNPAIR -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnPAIRN -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLEFT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnRIGHT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnNIL -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCONS -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSIZE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnEMPTY_SET -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnEMPTY_MAP -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnEMPTY_BIG_MAP -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnMEM -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnGET -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnGETN -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnUPDATE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnUPDATEN -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnGET_AND_UPDATE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLAMBDA -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLAMBDA_REC -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnEXEC -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnAPPLY -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCAST -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnRENAME -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnPACK -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnUNPACK -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCONCAT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCONCAT' -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSLICE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnISNAT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnADD -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSUB -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSUB_MUTEZ -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnMUL -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnEDIV -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnABS -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnNEG -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLSL -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLSR -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnOR -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnAND -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnXOR -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnNOT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCOMPARE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnEQ -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnNEQ -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnGT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnGE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnINT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnNAT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnBYTES -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnVIEW -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSELF -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCONTRACT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnTRANSFER_TOKENS -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSET_DELEGATE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCREATE_CONTRACT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnIMPLICIT_ACCOUNT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnNOW -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnAMOUNT -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnBALANCE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnVOTING_POWER -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnTOTAL_VOTING_POWER -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCHECK_SIGNATURE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSHA256 -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSHA512 -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnBLAKE2B -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSHA3 -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnKECCAK -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnHASH_KEY -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnPAIRING_CHECK -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSOURCE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSENDER -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnADDRESS -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnCHAIN_ID -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnLEVEL -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSELF_ADDRESS -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnTICKET -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnTICKET_DEPRECATED -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnREAD_TICKET -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSPLIT_TICKET -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnJOIN_TICKETS -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnOPEN_CHEST -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSAPLING_EMPTY_STATE -> HasAnns
DoesHaveStandardAnns
  InstrEnum
AnnSAPLING_VERIFY_UPDATE -> HasAnns
DoesHaveStandardAnns
  ------------------------
  InstrEnum
AnnMIN_BLOCK_TIME -> HasAnns
DoesHaveNonStandardAnns
  InstrEnum
AnnEMIT -> HasAnns
DoesHaveNonStandardAnns