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

{-# OPTIONS_HADDOCK not-home #-}

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

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

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