h$G?;=      !"#$%&'()*+,-./0123456789:;<;None=>?None@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.@ABCNone&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). DEFGHIJKNone'LhlintA comment as a string.Mhlint+The comment string with delimiters removed.LMNOPQRSNone>?'ThlintIs this item lexically requiring no bracketing ever i.e. is totally atomic.UhlintIs the child safe free from brackets in the parent position. Err on the side of caution, True = don't know. VWXYTZ[U\NoneN]^None>?_hlintReturn the variables, erring on the side of more free variables.`hlintReturn the variables, erring on the side of more free variables. a_b`cdefghi None%jhlint 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), k 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.jl None&mnopq None rst None&>8uvwxyz{|}~  Safe-InferreduNone Safe-InferredNone fhlintDon't crash in case ghc gives us a "fake" span, opting instead to show  -1 -1 -1 -1 coordinates.None &>? 4hlintlambda [p0, p1..pn] body makes p1 p1 .. pn -> bodyhlint'paren e' wraps e in parens if e is non-atomic.YTZ[U\None ~None None&5? None& Phlint3The "Line'" thing is because there is already e.g. LMNOPQRSY\U[TZ]^a_b`cdefghijlmnopqrstuvwxyz{|}~NonehlintExtra command-line argumenthlintA  LHS ==> 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.<  None#$ 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 k+ 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.$  None#$.hlint$Returns the number of failing tests.None#$&\None#$~None #$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 CCNone&? yhlint 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 0 , used by 3.'hlint*How the file is preprocessed (defaults to -).(hlint9Base language (e.g. Haskell98, Haskell2010), defaults to k.)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.-hlintNo pre processing is done..hlintLines prefixed with # are stripped./hlintThe cpphs library is used.0hlintDefault value for %.1hlint:Given some fixities, add them to the existing fixities in %.hlint4Extract a list of all of a parsed module's comments.2hlint Create a  from GHC annotations and module tree. It is assumed the incoming parse 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 0;), 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. !"#$%&'()*+,/-.0123None"x4hlint0Functions 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 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.5None#$>6hlint1Get the Cabal configured data directory of HLint.7hlint'The function produces a tuple containg % (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 1 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 k 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.;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).<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))3Following the GHC API, he end column is the column after the end of the error. Lines and columns are 1-based. Returns k- if there is no helpful location information.=   !"#$%&'()*+,/-.0123456789:;<=5;  <678:9432 !"#$0%&'()*+,/-.1<==>?@ABCDEFGBHIJKLMNOPQRSTUVWXXYZ[\\]^_`abcdefghij;klmnopqrstuvwxyz{|z{}z{~z{ z                           zWzj !"#$%&'()*+,-./011112223455666q777789999999999999999999999999999999999999999999:;"hlint-3.2.8-D6BhpPlYl6t3mrk6nZVXiALanguage.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.Util Config.TypeIdea Test.UtilTest.InputOutputReportCCGHC.All Hint.Type Hint.Unsafe Hint.Smell Hint.Restrict Hint.Pragma Hint.Pattern 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.HaskellApplyTest.AnnotationsSummaryCmdLineTest.AllHLint FixityInfoClassifyclassifySeverity classifyHintclassifyModule classifyDeclNoteIncreasesLazinessDecreasesLaziness RemovesError ValidInstanceRequiresExtensionSeverityIgnore SuggestionWarningError ideaModuleideaDecl ideaSeverityideaHintideaSpanideaFromideaToideaNoteideaRefactoring showIdeaANSIModuleEx ParseErrorparseErrorLocationparseErrorMessageparseErrorContents ParseFlagscppFlags baseLanguageenabledExtensionsdisabledExtensionsfixitiesCppFlagsNoCpp CppSimpleCpphsdefaultParseFlagsparseFlagsAddFixitiescreateModuleEx parseModuleExHinthlintgetHLintDataDir autoSettings argsSettingsreadSettingsFile findSettings applyHints unpackSrcSpan hlintYaml defaultYamlreportTemplatedefaultExtensionsconfigExtensionsextensionImpliesextensionImpliedEnabledBybase GHC.Generics AssociativityLeftAssociativeRightAssociativeNotAssociative fromFixitySigtoFixity toFixitySigdefaultFixitiescomment commentTextisCommentMultilinepragmasflagslanguagePragmasmkFlagsmkLanguagePragmasisAtom needBracket2ghc-lib-parser-ex-8.10.0.23-680KGVxJm6IDO1wQ9aLl8c+Language.Haskell.GhclibParserEx.GHC.Hs.ExprisAnyAppisOpAppisAppBracketsremParenaddParenfindType baseDynFlagsinitGlobalDynFlagsfreeVarsallVarsFreeVarsAllVarsVarsfreeboundvarsvarsspvarsdeclName GHC.MaybeNothingbindNameScope scopeCreate scopeMatch scopeMove possModulesSrcSpanD stripLocs LamConst1App2PApp_PVar_Var_RdrName_Viewview SimpleLambda fromParenhsColourConsole hsColourHTMLparallelversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNametoSS substVarstoRefactSrcSpan checkRefactor refactorPathrunRefactoringlambdaparendotAppsuniverseParentExpappsfromApps universeAppstransformAppsM rebracket1 appsBracket simplifyExp niceLambdaallowRightSectionallowLeftSection niceLambdaRreplaceBranchesneedBracketOldtransformBracketOld fromParen1timedtimedIO startTimings printTimings forceList exitMessageexitMessageImpuregetContentsUTF8gzipuniverseParentBiSubst fromSubst validSubst removeParens substituteunifyExpSrcSpanghcSrcLocsrcSpanStartLine2Language.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 restrictAsrestrictWithinrestrictBadIdentsrestrictMessage RestrictTypeRestrictModuleRestrictExtension RestrictFlagRestrictFunction getSeveritygetRestrictTypedefaultHintName isUnifyVar showNotes getSmellType showIdeasJsonrawIdearawIdeaNidea ideaRemovesuggest suggestRemovewarnignoreNoSuggestionignoresuggestN withTestsTestprogresspassedfailedtestInputOutput writeReport printIssueIssuefromIdea ghcCommentsghcAnnotations ghcModuleparseFlagsSetLanguageparseExpGhcWithModeparseImportDeclGhcWithModeparseDeclGhcWithModeGHC.BaseMonoid hintModules hintModulehintDecl CrossHintModuHintDeclHint unsafeHintsmellModuleHint smellHint restrictHint pragmaHint patternHint newtypeHint namingHint monadHint readMatch listRecHintlistHint lambdaHint importHint fixitiesHintextensionsHint exportHint duplicateHint commentHint bracketHint builtinHints resolveHints HintBuiltin hintRulesreadFileConfigYaml ConfigYamlsettingsFromConfigYamlreadFilesConfigcomputeSettings readPragma readComment applyHintFileapplyHintFilesTestCasetestAnnotations parseTestFilegenerateSummarycmdFiles cmdReports cmdGivenHints cmdWithGroupscmdGitcmdColor cmdThreads cmdIgnore cmdShowAll cmdExtension cmdLanguagecmdCross cmdFindHints cmdDataDir cmdDefaultcmdJsoncmdCC cmdNoSummarycmdOnly cmdSerialise cmdRefactorcmdRefactorOptionscmdWithRefactorcmdGenerateSummary cmdHintFiles cmdUseColour resolveFileCmdCmdMaincmdPath cmdCppDefine cmdCppInclude cmdCppFile cmdCppSimple cmdCppAnsi cmdNoExitCode cmdTiming cmdIgnoreGlobcmdTestgetCmd exitWithHelp cmdExtensionscmdCpptestreadAllSettings