h&g]9=      !"#$%&'()*+,-./0123456789:;<= Safe-Inferred'=>? Safe-Inferred@hlintExtensions we turn on by default when parsing. Aim to parse as many files as we can.AhlintExtensions we turn on when reading config files, don't have to deal with the whole world of variations - in particular, we might require spaces in some places.BhlintThis extension implies the following extensions are enabled/disabled.Chlint(a, bs) means extension a implies all of bs. Uses GHC source at DynFlags.impliedXFlags@ABD Safe-Inferred((hlintA Fixity definition, comprising the name the fixity applies to, the direction and the precedence. As an example, a source file containing: infixr 3 `foo` would create ("foo", RightAssociative, 3). EFGHIJKL Safe-InferredMhlintA comment as a string.Nhlint+The comment string with delimiters removed. MNOPQRSTU Safe-InferredyVhlintIs this item lexically requiring no bracketing ever i.e. is totally atomic.WhlintIs the child safe free from brackets in the parent position. Err on the side of caution, True = don't know.XhlintAm I an HsApp such that having me in an infix doesn't require brackets. Before BlockArguments that was _all_ HsApps. Now, imagine:$(f x -> x) *> ... (f do x) *> ... YZ[\V]^W_ Safe-Inferred`a Safe-Inferred|bhlintReturn the variables, erring on the side of more free variables.chlintReturn the variables, erring on the side of more free variables. dbecfghijkl  Safe-Inferred' 6mhlint declName x returns the "new name" that is created (for example a function declaration) by x. If x isn't a declaration that creates a new name (for example an instance declaration), n is returned instead. This is useful because we don't want to tell users to rename binders that they aren't creating right now and therefore usually cannot change.mo  Safe-Inferred( bpqrst  Safe-Inferred uvwx  Safe-Inferred( yz{|}~  Safe-Inferred  Safe-Inferred 4 Safe-Inferred ^ Safe-Inferred hlintDon't crash in case ghc gives us a "fake" span, opting instead to show  -1 -1 -1 -1 coordinates. Safe-Inferred ( hlint'dotApp a b' makes 'a . b'.hlintlambda [p0, p1..pn] body makes p1 p1 .. pn -> bodyhlint'paren e' wraps e in parens if e is non-atomic.\V]^W_ Safe-Inferred j Safe-Inferred hlint RHS style hint rule.hlintDefault severity for the hint.hlintName for the hint.hlint$Notes about application of the hint.hlintModule scope in which the hint operates (GHC parse tree). We wrap these GHC elements in  in order that we may derive .hlintLHS (GHC parse tree).hlintRHS (GHC parse tree).hlint Side condition (GHC parse tree).hlintHow to classify an Idea. If any matching field is "" then it matches everything.hlintSeverity to set the Idea to.hlint Match on Idea field ideaHint.hlint Match on Idea field  ideaModule.hlint Match on Idea field ideaDecl.hlint0A note describing the impact of the replacement.hlint=The replacement is increases laziness, for example replacing reverse (reverse x) with x makes the code lazier. hlint=The replacement is decreases laziness, for example replacing (fst x, snd x) with x makes the code stricter. hlint6The replacement removes errors, for example replacing  foldr1 (+) with sum removes an error on [], and might contain the text "on []". hlintThe replacement assumes standard type class lemmas, a hint with the note ValidInstance "Eq" "x" might only be valid if the x variable has a reflexive Eq instance. hlint8The replacement requires this extension to be available. hlintAn arbitrary note.hlintHow severe an issue is.hlintThe issue has been explicitly ignored and will usually be hidden (pass --show+ on the command line to see ignored ideas).hlintSuggestions are things that some people may consider improvements, but some may not.hlintWarnings are suggestions that are nearly always a good idea to apply.hlintAvailable as a setting for the user. Only parse errors have this setting by default.   Safe-Inferred%&! hlintAn idea suggest by a Hint.hlint1The modules the idea is for, usually a singleton.hlintThe declarations the idea is for, usually a singleton, typically the function name, but may be a type name.hlintThe severity of the idea, e.g. .hlint3The name of the hint that generated the idea, e.g.  "Use reverse".hlint$The source code the idea relates to.hlint4The contents of the source code the idea relates to.hlintThe suggested replacement, or n+ for no replacement (e.g. on parse errors).hlint3Notes about the effect of applying the replacement.hlintHow to perform this ideahlintShow a list of  values as a JSON string.hlintShow an  with ANSI color codes to give syntax coloring to the Haskell code.$   Safe-Inferred%&hlint$Returns the number of failing tests. Safe-Inferred%&(hlint,First string may have stars in it (the want)Formats hlint ideas in the Statis Analysis Results Interchange Format (SARIF). BSD-3-Clause Safe-Inferred"%&%8 hlint)Print the given ideas to standard output. For example:hlint ["src"] >>= printIdeasFor printing ideas in SARIF without dependent modules having to import  Data.Aeson or Data.ByteString.Lazy.hlint Format the given ideas in SARIF.For converting ideas to SARIF without dependent modules having to import  Data.Aeson.hlintConverts the given ideas to a  Data.Aeson encoding in SARIF.hlint)Converts the given object to a top-level sarifLog object.8See section 3.13 "sarifLog object", SARIF specification.hlintA tool+ object describing what created the output.:Obviously, it will describe that HLint created the output.4See section 3.18 "tool object", SARIF specification.hlintConverts a given idea into a result object.It will describe the hint, the severity, suggestions for fixes, etc.6See section 3.27 "result object", SARIF specification.hlint&Convert HLint severity to SARIF level.9See section 3.58.6 "level property", SARIF specification.hlint7Converts the location information in a given idea to a location object.8See section 3.28 "location object", SARIF specification.hlintConverts a given idea to a fix object.It will suggest how code can be improved to deal with an issue. This includes the file to be changed and how to change it.3See section 3.55 "fix object", SARIF specification.hlintConverts a given idea to a artifactChange object.It will describe the details as to how the code can be changed. I.e., the text to remove and what it should be replaced with.>See section 3.56 "artifactChange object", SARIF specification.hlint6Converts the source span in an idea to a SARIF region..See 3.30 "region object", SARIF specification.hlintURI to SARIF schema definition.hlintURI to HLint home page. Safe-Inferred%&%i Safe-Inferred"%&&hlint Print an * with trailing null-terminator and newlineThe trailing newline will be ignored, but makes the output more readablehlintConvert an hlint , to a datatype more easily serialized for CC Safe-Inferred(.hlint Result of 3, representing a parsed module. hlintA parse error."hlintLocation of the error.#hlint%Message about the cause of the error.$hlint3Snippet of several lines (typically 5) including a >' character pointing at the faulty line.%hlint Created with / , used by 3.'hlint*How the file is preprocessed (defaults to NoCpp).(hlint9Base language (e.g. Haskell98, Haskell2010), defaults to n.)hlintList of extensions enabled for parsing, defaults to many non-conflicting extensions.*hlint7List of extensions disabled for parsing, usually empty.+hlint>List of fixities to be aware of, defaults to those defined in base.,hlint$What C pre processor should be used.-hlintLines prefixed with # are stripped..hlintThe cpphs library is used./hlintDefault value for %.0hlint:Given some fixities, add them to the existing fixities in %.hlint8Extract a complete list of all the comments in a module.hlint?Extract just the list of a modules' leading comments (pragmas).hlintExtract comments associated with the first declaration of a module.hlint6The error handler invoked when GHC parsing has failed.1hlint Create a  from a GHC module. It is assumed the incoming parsed module has not been adjusted to account for operator fixities (it uses the HLint default fixities).3hlintParse a Haskell module. Applies the C pre processor, and uses best-guess fixity resolution if there are ambiguities. The filename - is treated as stdin. Requires some flags (often /;), the filename, and optionally the contents of that file.!Note that certain programs, e.g.  main = do successfully parse with GHC, but then fail with an error in the renamer. These programs will return a successful parse.hlintGiven a line number, and some source code, put bird ticks around the appropriate bit. !"#$%&'()*+,.-/0123  Safe-Inferred04hlint0Functions to generate hints, combined using the  instance.hlintGiven a list of modules (and their scope information) generate some s.hlint>Given a single module and its scope information generate some s.hlint X a- * Single field constructors get newtyped - data X = X Int -> newtype X = X Int4 * Single record field constructors get newtyped - data X = X {getX :: Int} -> newtype X = X {getX :: Int}' * All other declarations are ignored.hlintChecks whether its argument is a "simple" data definition (see =) returning the single thing under its constructor if it is.hlintChecks whether its argument is a "simple" constructor (see criteria in ) returning the type inside the constructor if it is. This is needed for strictness analysis.hlintThe "Bang" here refers to , which notably also includes UNPACK pragmas!( Safe-Inferred(7) Safe-Inferred(8DhlintCall with the name of the declaration, the nearest enclosing `do` expression the nearest enclosing expression the expression of interesthlintRewrite 'do ...; x <- return y; ...' as 'do ...; let x = y; ...'.* Safe-Inferred%&'(8hlint7A list of root expressions, with their associated names+ Safe-Inferred%&(8, Safe-Inferred(9- Safe-Inferred(;hlint>Squash lambdas and replace any repeated pattern variable with _hlintFor each pattern, if it does not contain wildcards, replace it with a variable pattern.The second component of the result is a list of substitution variables, which are guaranteed to not occur in the function name or patterns with wildcards. For example, given 'f (Foo a b _) = ...', f, a and b* are not usable as substitution variables.. Safe-Inferred%&;>/ Safe-Inferred;g0 Safe-Inferred'<hlint+Classes that can't require newtype derivinghlint>Classes that can appear as stock, and can't appear as anyclass1 Safe-InferredhlintA list of the builtin hints wired into HLint. This list is likely to grow over time.hlint=A list of builtin hints, currently including entries such as "List" and  "Bracket".hlintTransform a list of  or  into a 4.hlintTransform a list of  into a 4. 46 Safe-Inferred "%&(@*hlintRead a config file in YAML format. Takes a filename, and optionally the contents. Fails if the YAML doesn't parse or isn't valid HLint YAMLhlintFailed when parsing some value, give an informative error message. 7 Safe-Inferred@e8 Safe-Inferred%&'A9hlintGiven a source file, guess some hints that might apply. Returns the text of the hints (if you want to save it down) along with the settings to be used.9 Safe-Inferred(BhlintRead an {-# ANN #-} pragma and determine if it is intended for HLint. Return Nothing if it is not an HLint pragma, otherwise what it means.: Safe-Inferred6I"hlint.which files to run it on, nothing = none givenhlintwhere to generate reportshlint*which settings files were explicitly givenhlint)groups that are given on the command linehlintuse git ls-files to find fileshlintcolor the resulthlint.Number of threads to use, 0 = whatever GHC hashlintthe hints to ignorehlintdisplay all skipped itemshlintignore suggestionshlint extensionshlint#the extensions (may be prefixed by No)hlintwork between source files, applies to hints such as duplicate code between moduleshlint!source files to look for hints inhlintthe data directoryhlintPrint a default file to stdouthlintdisplay hint data as JSONhlint(display hint data as Code Climate Issueshlintdisplay hint data as SARIFhlintdo not show the summary infohlintspecify which hints explicitlyhlint%Display hints in serialisation formathlintRun the refactor* executable to automatically perform hintshlintOptions to pass to the refactor executable.hlintPath to refactor toolhlint9Generate a summary of available hints, in Markdown formathlint4Generate a summary of built-in hints, in JSON formathlintGenerate a hlint config file with all built-in hints set to the specified levelhlintWhen to colour terminal output.hlint'Terminal output will never be coloured.hlint(Terminal output will always be coloured.hlintTerminal output will be coloured if $TERM and stdout appear to support it, and NO_COLOR is not set.hlintWhere should we find the configuration files? Either we use the implicit search, or we follow the cmdGivenHints We want more important hints to go last, since they overridehlint(Determines whether to use colour or not.hlintTemporary filehlint%File to resolve, may be "-" for stdin2,.-; Safe-InferredNhlintApply hints to a single file, you may have the contents of the file.hlintApply hints to multiple files, allowing cross-file hints to fire.hlint*Given a way of classifying results, and a 41, apply to a set of modules generating a list of  s. The & values will be ordered within a file.9Given a set of modules, it may be faster to pass each to  in a singleton list. When given multiple modules at once this function attempts to find hints between modules, which is slower and often pointless (by default HLint passes modules singularly, using --cross to pass all modules together).hlintGiven a list of settings (a way to classify) and a list of hints, run them over a list of modules.hlintReturn either an idea (a parse error) or the module. In IO because might call the C pre processor.hlint,Find which hints a list of settings implies.hlintGiven some settings, make sure the severity field of the Idea is correct.< Safe-Inferred%&(N= Safe-Inferred%&N> Safe-Inferred%&1;?P=hlintThe summary of built-in hints is generated by running the test cases in srcHint*.hs.hlintGenerate a summary of hints, including built-in hints and YAML-configured hintshlint Render using  code' if it is single-line, otherwise using  pre.? Safe-Inferred%&'R5hlintThis function takes a list of command line arguments, and returns the given hints. To see a list of arguments type  hlint --help at the console. This function writes to the stdout/stderr streams, unless --quiet is specified.As an example: do hints <- hlint ["src", "--ignore=Use map","--quiet"] when (length hints > 3) $ error "Too many hints!"Warning: The flags provided by HLint are relatively stable, but do not have the same API stability guarantees as the rest of the strongly-typed API. Do not run this function on your server with untrusted input.5 Safe-Inferred%&\ 6hlint1Get the Cabal configured data directory of HLint.7hlint)The function produces a tuple containing % (for 3 ), and  and 4 for ;. It approximates the normal HLint configuration steps, roughly: Use : with 9+ to find and load the HLint settings files.Use 0 and  resolveHints to transform the outputs of :.If you want to do anything custom (e.g. using a different data directory, storing intermediate outputs, loading hints from a database) you are expected to copy and paste this function, then change it to your needs.8hlint A version of 7 which respects some of the arguments supported by HLint. If arguments unrecognised by HLint are used it will result in an error. Arguments which have no representation in the return type are silently ignored.9hlintGiven a directory (or n to imply 6), and a module name (e.g.  HLint.Default), find the settings file associated with it, returning the name of the file, and (optionally) the contents.9This function looks for all settings files starting with HLint. in the directory argument, and all other files relative to the current directory.:hlint-Given a function to load a module (typically 9.), and a module to start from (defaults to  hlint.yaml/) find the information from all settings files.hlintSplit a list of 0 for separate use in parsing and hint resolution;hlint*Given a way of classifying results, and a 41, apply to a set of modules generating a list of  s. The & values will be ordered within a file.9Given a set of modules, it may be faster to pass each to ; in a singleton list. When given multiple modules at once this function attempts to find hints between modules, which is slower and often pointless (by default HLint passes modules singularly, using --cross to pass all modules together).hlintSnippet from the documentation, if this changes, update the documentation<hlint Unpack a " value. Useful to allow using the / information without adding a dependency on ghc or ghc-lib-parser. Unpacking gives: 4(filename, (startLine, startCol), (endLine, endCol))0Following the GHC API, end column is the column after the end of the error. Lines and columns are 1-based. Returns n- if there is no helpful location information.=   !"#$%&'()*+,.-/0123456789:;<=5;  <678:94312 !"#$/%&'()*+,.-0@AABCDEFGHIJKFLMNOPQRSTUVWXYZ[\\]^_``abcdefghijklm n?opqrstuvwxyz{|}~                             [    n   !""#$%&''''''()))**+,---./000122345555666666666667899:::::::::::::::::::::::::::::::::::::::::::::::::::;;;u;;;;<<<<=>>>>>? hlint-3.6-KwIgQk74Jg5FXTJv5Jtlw0Language.Haskell.HLint EmbedData ExtensionFixityGHC.Util.ApiAnnotationGHC.Util.BracketsGHC.Util.DynFlagsGHC.Util.FreeVarsGHC.Util.HsDeclGHC.Util.ScopeGHC.Util.SrcLoc GHC.Util.ViewHsColourParallel Paths_hlintRefactGHC.Util.HsExprTimingUtilGHC.Util.UnifyGHC.UtilSrcLocsrcSpanStartLine Config.TypeIdea Test.UtilTest.InputOutputSARIFReportCCGHC.All Hint.Type Hint.Unsafe Hint.Smell Hint.Restrict Hint.Pragma Hint.PatternHint.NumLiteral Hint.NewType Hint.Naming Hint.Monad Hint.Match Hint.ListRec Hint.List Hint.Lambda Hint.Import Hint.FixitiesHint.Extensions Hint.ExportHint.Duplicate Hint.Comment Hint.BracketHint.All Config.Yaml Config.ReadConfig.ComputeConfig.HaskellCmdLineApplyTest.AnnotationsTest.AllSummaryHLint FixityInfoClassifyclassifySeverity classifyHintclassifyModule classifyDeclNoteIncreasesLazinessDecreasesLaziness RemovesError ValidInstanceRequiresExtensionSeverityIgnore SuggestionWarningError ideaModuleideaDecl ideaSeverityideaHintideaSpanideaFromideaToideaNoteideaRefactoring showIdeaANSIModuleEx ParseErrorparseErrorLocationparseErrorMessageparseErrorContents ParseFlagscppFlags baseLanguageenabledExtensionsdisabledExtensionsfixitiesCppFlags CppSimpleCpphsdefaultParseFlagsparseFlagsAddFixitiescreateModuleExcreateModuleExWithFixities parseModuleExHinthlintgetHLintDataDir autoSettings argsSettingsreadSettingsFile findSettings applyHints unpackSrcSpan hlintYaml defaultYamlreportTemplatedefaultExtensionsconfigExtensionsextensionImpliesextensionImplicationsextensionImpliedEnabledBybase GHC.Generics AssociativityNotAssociativeRightAssociativeLeftAssociative fromFixitySigtoFixity toFixitySigdefaultFixitiescomment_ commentTextisCommentMultilinepragmas extensionsflagslanguagePragmasmkFlagsmkLanguagePragmasisAtom needBracket isAtomOrApp0ghc-lib-parser-ex-9.6.0.0-6XTyyZcDU3UJHKw67Nhtuz+Language.Haskell.GhclibParserEx.GHC.Hs.ExprisAnyAppisOpAppisAppBracketsremParenaddParenfindType baseDynFlagsinitGlobalDynFlagsfreeVarsallVarsFreeVarsAllVarsVarsfreeboundvarsvarsspvarsdeclName GHC.MaybeNothingbindNameScope scopeCreate scopeMatch scopeMove possModulesSrcSpanD getAncLoc stripLocs LamConst1App2PApp_PVar_Var_RdrName_Viewview SimpleLambda fromParenhsColourConsole hsColourHTMLparallelversiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirtoSS substVarstoRefactSrcSpantoSSAtoSSAnc checkRefactor refactorPathrunRefactoringdotApplambdaparendotAppsuniverseParentExpappsfromApps universeAppstransformAppsM rebracket1 appsBracket simplifyExp niceLambdaallowRightSectionallowLeftSection niceLambdaRreplaceBranchesneedBracketOldtransformBracketOld fromParen1timedtimedIO startTimings printTimings wildcardMatch forceList exitMessageexitMessageImpuregetContentsUTF8gzipuniverseParentBiunify'noExtraSubst fromSubst validSubst removeParens substituteunifyExpSrcSpan2Language.Haskell.GhclibParserEx.GHC.Driver.SessionparsePragmasIntoDynFlags srcFilenamesrcLine srcColumnsrcSpanFilenamesrcSpanStartLine'srcSpanStartColumnsrcSpanEndLine'srcSpanEndColumn fileToModule showSrcSpanSettingArgumentHintRulehintRuleSeverity hintRuleName hintRuleNotes hintRuleScope6Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstancesHsExtendInstancesGHC.ShowShow hintRuleLHS hintRuleRHS hintRuleSideSettingInfixSettingClassifySettingMatchExpSettingRestrict SettingSmellBuiltin SmellTypeSmellLongFunctionsSmellLongTypeListsSmellManyArgFunctionsSmellManyImportsRestrict restrictTyperestrictDefault restrictName restrictAsrestrictAsRequiredrestrictImportStylerestrictQualifiedStylerestrictWithinrestrictIdentsrestrictMessageQualifiedStyleQualifiedStylePreQualifiedStylePostQualifiedStyleUnrestrictedRestrictImportStyleImportStyleQualifiedImportStyleUnqualifiedImportStyleExplicitImportStyleExplicitOrQualifiedImportStyleUnrestrictedRestrictIdentsNoRestrictIdents ForbidIdents OnlyIdents RestrictTypeRestrictModuleRestrictExtension RestrictFlagRestrictFunction getSeveritygetRestrictTypedefaultHintName isUnifyVar showNotes getSmellType showIdeasJsonrawIdearawIdeaNidea ideaRemovesuggest suggestRemovewarnignoreNoSuggestionignoresuggestN withTestsTestprogresspassedfailed matchStartestInputOutput printIdeas showIdeastoJSONEncodingsariftooltoResult showSeverity toLocationtoFixtoChangetoRegion schemaURIhlintURI writeReport printIssueIssuefromIdea ghcComments modCommentsfirstDeclCommentsghcFailOpParseModuleExcontext ghcModuleparseFlagsSetLanguageparseExpGhcWithModeparseImportDeclGhcWithModeparseDeclGhcWithModeGHC.BaseMonoid hintModules hintModulehintDecl CrossHintModuHintDeclHint unsafeHintsmellModuleHint smellHint restrictHint pragmaHint patternHintnumLiteralHintshouldSuggestStrategiessingleSimpleFieldsimpleHsDataDefn simpleCons dropConsBang4ghc-lib-parser-9.6.2.20230523-71LAxQKBNbw8ebo0dFJz0zGHC.Core.DataCon HsSrcBang newtypeHint namingHintmonadExpmonadLet monadHint findDecls readMatch listRecHintlistHint fromLambda mkOrigPats lambdaHint importHint fixitiesHintnoDeriveNewtype deriveStockextensionsHint exportHintDupe duplicateHint commentHint bracketHint HintBuiltin builtinHints resolveHints hintRulesreadFileConfigYaml parseFailConfigYamlUsergetConfigYamlUserConfigYamlBuiltingetConfigYamlBuiltin ConfigYaml isBuiltinYamlsettingsFromConfigYamlreadFilesConfigcomputeSettings readPragma readCommentcmdFiles cmdReports cmdGivenHints cmdWithGroupscmdGitcmdColor cmdThreads cmdIgnore cmdShowAllcmdIgnoreSuggestions cmdExtension cmdLanguagecmdCross cmdFindHints cmdDataDir cmdDefaultcmdJsoncmdCCcmdSARIF cmdNoSummarycmdOnly cmdSerialise cmdRefactorcmdRefactorOptionscmdWithRefactorcmdGenerateMdSummarycmdGenerateJsonSummarycmdGenerateExhaustiveConf ColorModeNeverAlwaysAuto cmdHintFiles cmdUseColour resolveFileCmdCmdMaincmdPath cmdCppDefine cmdCppInclude cmdCppFile cmdCppSimple cmdCppAnsi cmdNoExitCode cmdTiming cmdIgnoreGlobcmdTestgetCmd exitWithHelp cmdExtensionscmdCpp applyHintFileapplyHintFiles executeHintsparseModuleApplyallHintsclassifyTestCasetestAnnotations parseTestFiletestmkBuiltinSummarygenerateMdSummaryhaskellgenerateJsonSummarygenerateExhaustiveConfigreadAllSettings splitSettings_docsGHC.Types.SrcLoc