Îõ³h&Aû×      !"#$%&'()*+,-./0123456789:;<=>?@ABCD E F G H I J K L M N O P Q R S T UV Safe-InferredŽ    Safe-InferredÈ  !"#$%&  !"#$%& Safe-InferredÊ'evoke9Adds a warning, which only causes compilation to fail if -Werror is enabled.(evoke6Throws an error, which will cause compilation to fail.'('( Safe-InferredË)evokeñParses command line options. Adds warnings and throws errors as appropriate. Returns the list of parsed options.Wevoke1Quotes a string using GHC's weird quoting format. quote "thing" "`thing'")) Safe-Inferredó*+,-./*+,-./ Safe-Inferred%0123401234 Safe-InferredU5867958679 Safe-Inferred…<=@>?A<=@>?A  Safe-Inferred·DEFGHIJDEFGHIJ  Safe-Inferred5MevokeÏApplies all the monadic functions in order beginning with some starting value.Xevoke-Converts the first character into upper case.Yevoke-Converts the first character into lower case.Zevoke$Converts the string into kebab case.kebab "DoReMi" "do-re-mi"[evoke$Converts the string into snake case.snake "DoReMi" "do_re_mi"Nevoke4Makes a random variable name using the given prefix.OevokeâMakes a random module name. This will convert any periods to underscores and add a unique suffix.makeRandomModule "Data.Aeson""Data_Aeson_1"KLMNOPQKMLPQON  Safe-InferrediRR  Safe-Inferred‘SS  Safe-Inferred¹TT Safe-InferredáUU Safe-Inferred \]^_`abc Safe-InferredõdevokeæMost GHC types have type aliases for their located versions. For some reason the module type doesn't.VevokeÊThe compiler plugin. You can enable this plugin with the following pragma: "{-# OPTIONS_GHC -fplugin=Evoke #-}'This plugin accepts some options. Pass -fplugin-opt=Evoke:--help$ to see what they are. For example: <{-# OPTIONS_GHC -fplugin=Evoke -fplugin-opt=Evoke:--help #-}ÌOnce this plugin is enabled, you can use it by deriving instances like this: Ödata Person = Person { name :: String , age :: Int } deriving ToJSON via "Evoke"ÉThe GHC user's guide has more detail about compiler plugins in general:  áhttps://downloads.haskell.org/ghc/9.2.4/docs/html/users_guide/extending_ghc.html#compiler-plugins.eevokeÃThis is the main entry point for the plugin. It receives the command line options, module summary, and parsed module from GHC. Ultimately it produces a new parsed module to replace the old one.From a high level, this function parses the command line options to build a config, then hands things off to the next function (f).gevoke*This package's version number as a string.fevokešThis is the start of the plumbing functions. Our goal is to take the parsed module, find any relevant deriving clauses, and replace them with generated instances. This means we need to walk the tree of the parsed module looking for relevant deriving clauses. When we find them, we're going to remove them and emit new declarations (and imports), which need to be inserted back into the parsed module tree.ÙAll of these functions are plumbing. If you want to skip to the interesting part, go to h.ievokeSee f and h.jevokeSee f and h.kevokeSee f and h.levokeSee f and h.mevokeSee f and h.nevokeSee f and h.oevokeSee f and h.pevokeSee f and h.qevokeæThis plugin only fires on specific deriving strategies. In particular it looks for clauses like this: deriving C via "Evoke ..."îThis function is responsible for analyzing a deriving strategy to determine if the plugin should fire or not.revokeSee f and h.hevokeüThis is the main workhorse of the plugin. By the time things get here, everything has already been plumbed correctly. (See f‚ for details.) This function is responsible for actually generating the instance. If we don't know how to generate an instance for the requested class, an error will be thrown. If the user requested verbose output, the generated instance will be printed.sevoke0Extracts the class name out of a type signature.VVô !"#$%&'()*+,-./0123456789:;;<=>?@@<A>BCDEFGHIIJKLMNO P P < Q R > S T U V W X Y Z [ [ [[\] ^ _ ` aLbcdefghijkLlmnopqrstuvwø(evoke-0.2022.8.26-5tdnjLwKo5kFvgg97fQtysEvoke.Constant.ModuleEvoke.Hs Evoke.Hsc Evoke.OptionsEvoke.Type.FieldEvoke.Type.ConstructorEvoke.Type.FlagEvoke.Type.ConfigEvoke.Type.TypeEvoke.Generator.CommonEvoke.Generator.ToSchemaEvoke.Generator.ToJSONEvoke.Generator.FromJSONEvoke.Generator.ArbitraryEvoke Paths_evokecontrolApplicative controlLens dataAesondataHashMapStrictInsOrd dataMaybe dataMonoid dataProxy dataString dataSwaggertestQuickCheckappbindStmtdoExpr explicitList explicitTuplefieldOccfunBindgrhsgrhss importDeclslamlastStmtlitmatchmgopAppparqual qualTyVarqualVar recFieldsrecField recordConstringtupArgtyVarunqualvarvarPat addWarning throwErrorparseFieldnametype_make isOptional ConstructorfieldsFlagHelpVerboseVersionoptions$fEqFlag $fShowFlagConfighelpverboseversion fromFlags $fEqConfig $fShowConfigType variables constructors qualifiedName GeneratorfieldNameOptionsapplyAllmakeRandomVariablemakeRandomModulemakeInstanceDeclaration makeLHsBindgeneratepluginquoteupperlowerkebabsnakegetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir LHsModuleparsedResultActionhandleLHsModulehandleLHsSigTypehandleHsModulehandleLHsDecls handleLHsDeclhandleTyClDeclhandleHsDataDefnhandleHsDerivinghandleLHsDerivingClauseshandleLHsDerivingClauseparseDerivingStrategyhandleLHsSigTypes getClassName