tvl-depot/configs/shared/emacs/.emacs.d/elpa/haskell-mode-20180601.143/haskell-ghc-support.el

1345 lines
34 KiB
EmacsLisp
Raw Normal View History

;;; haskell-ghc-support.el --- GHC specific code -*- coding: utf-8; lexical-binding: t -*-
;; Copyright © 2016 Haskell Mode
;; Author: 2016 Gracjan Polak
;; This file is not part of GNU Emacs.
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file containt GHC specific constants and information.
;;; Code:
(defvar haskell-ghc-supported-extensions
'(
;;; BEGIN haskell-ghc-supported-extensions
"AllowAmbiguousTypes"
"AlternativeLayoutRule"
"AlternativeLayoutRuleTransitional"
"ApplicativeDo"
"Arrows"
"AutoDeriveTypeable"
"BangPatterns"
"BinaryLiterals"
"CApiFFI"
"CPP"
"ConstrainedClassMethods"
"ConstraintKinds"
"DataKinds"
"DatatypeContexts"
"DefaultSignatures"
"DeriveAnyClass"
"DeriveDataTypeable"
"DeriveFoldable"
"DeriveFunctor"
"DeriveGeneric"
"DeriveLift"
"DeriveTraversable"
"DisambiguateRecordFields"
"DoAndIfThenElse"
"DoRec"
"DuplicateRecordFields"
"EmptyCase"
"EmptyDataDecls"
"ExistentialQuantification"
"ExplicitForAll"
"ExplicitNamespaces"
"ExtendedDefaultRules"
"FlexibleContexts"
"FlexibleInstances"
"ForeignFunctionInterface"
"FunctionalDependencies"
"GADTSyntax"
"GADTs"
"GHCForeignImportPrim"
"GeneralizedNewtypeDeriving"
"Haskell2010"
"Haskell98"
"ImplicitParams"
"ImplicitPrelude"
"ImpredicativeTypes"
"IncoherentInstances"
"InstanceSigs"
"InterruptibleFFI"
"JavaScriptFFI"
"KindSignatures"
"LambdaCase"
"LiberalTypeSynonyms"
"MagicHash"
"MonadComprehensions"
"MonadFailDesugaring"
"MonoLocalBinds"
"MonoPatBinds"
"MonomorphismRestriction"
"MultiParamTypeClasses"
"MultiWayIf"
"NPlusKPatterns"
"NamedFieldPuns"
"NamedWildCards"
"NegativeLiterals"
"NoAllowAmbiguousTypes"
"NoAlternativeLayoutRule"
"NoAlternativeLayoutRuleTransitional"
"NoApplicativeDo"
"NoArrows"
"NoAutoDeriveTypeable"
"NoBangPatterns"
"NoBinaryLiterals"
"NoCApiFFI"
"NoCPP"
"NoConstrainedClassMethods"
"NoConstraintKinds"
"NoDataKinds"
"NoDatatypeContexts"
"NoDefaultSignatures"
"NoDeriveAnyClass"
"NoDeriveDataTypeable"
"NoDeriveFoldable"
"NoDeriveFunctor"
"NoDeriveGeneric"
"NoDeriveLift"
"NoDeriveTraversable"
"NoDisambiguateRecordFields"
"NoDoAndIfThenElse"
"NoDoRec"
"NoDuplicateRecordFields"
"NoEmptyCase"
"NoEmptyDataDecls"
"NoExistentialQuantification"
"NoExplicitForAll"
"NoExplicitNamespaces"
"NoExtendedDefaultRules"
"NoFlexibleContexts"
"NoFlexibleInstances"
"NoForeignFunctionInterface"
"NoFunctionalDependencies"
"NoGADTSyntax"
"NoGADTs"
"NoGHCForeignImportPrim"
"NoGeneralizedNewtypeDeriving"
"NoImplicitParams"
"NoImplicitPrelude"
"NoImpredicativeTypes"
"NoIncoherentInstances"
"NoInstanceSigs"
"NoInterruptibleFFI"
"NoJavaScriptFFI"
"NoKindSignatures"
"NoLambdaCase"
"NoLiberalTypeSynonyms"
"NoMagicHash"
"NoMonadComprehensions"
"NoMonadFailDesugaring"
"NoMonoLocalBinds"
"NoMonoPatBinds"
"NoMonomorphismRestriction"
"NoMultiParamTypeClasses"
"NoMultiWayIf"
"NoNPlusKPatterns"
"NoNamedFieldPuns"
"NoNamedWildCards"
"NoNegativeLiterals"
"NoNondecreasingIndentation"
"NoNullaryTypeClasses"
"NoNumDecimals"
"NoOverlappingInstances"
"NoOverloadedLabels"
"NoOverloadedLists"
"NoOverloadedStrings"
"NoPackageImports"
"NoParallelArrays"
"NoParallelListComp"
"NoPartialTypeSignatures"
"NoPatternGuards"
"NoPatternSignatures"
"NoPatternSynonyms"
"NoPolyKinds"
"NoPolymorphicComponents"
"NoPostfixOperators"
"NoQuasiQuotes"
"NoRank2Types"
"NoRankNTypes"
"NoRebindableSyntax"
"NoRecordPuns"
"NoRecordWildCards"
"NoRecursiveDo"
"NoRelaxedLayout"
"NoRelaxedPolyRec"
"NoRoleAnnotations"
"NoScopedTypeVariables"
"NoStandaloneDeriving"
"NoStaticPointers"
"NoStrict"
"NoStrictData"
"NoTemplateHaskell"
"NoTemplateHaskellQuotes"
"NoTraditionalRecordSyntax"
"NoTransformListComp"
"NoTupleSections"
"NoTypeApplications"
"NoTypeFamilies"
"NoTypeFamilyDependencies"
"NoTypeInType"
"NoTypeOperators"
"NoTypeSynonymInstances"
"NoUnboxedTuples"
"NoUndecidableInstances"
"NoUndecidableSuperClasses"
"NoUnicodeSyntax"
"NoUnliftedFFITypes"
"NoViewPatterns"
"NondecreasingIndentation"
"NullaryTypeClasses"
"NumDecimals"
"OverlappingInstances"
"OverloadedLabels"
"OverloadedLists"
"OverloadedStrings"
"PackageImports"
"ParallelArrays"
"ParallelListComp"
"PartialTypeSignatures"
"PatternGuards"
"PatternSignatures"
"PatternSynonyms"
"PolyKinds"
"PolymorphicComponents"
"PostfixOperators"
"QuasiQuotes"
"Rank2Types"
"RankNTypes"
"RebindableSyntax"
"RecordPuns"
"RecordWildCards"
"RecursiveDo"
"RelaxedLayout"
"RelaxedPolyRec"
"RoleAnnotations"
"Safe"
"ScopedTypeVariables"
"StandaloneDeriving"
"StaticPointers"
"Strict"
"StrictData"
"TemplateHaskell"
"TemplateHaskellQuotes"
"TraditionalRecordSyntax"
"TransformListComp"
"Trustworthy"
"TupleSections"
"TypeApplications"
"TypeFamilies"
"TypeFamilyDependencies"
"TypeInType"
"TypeOperators"
"TypeSynonymInstances"
"UnboxedTuples"
"UndecidableInstances"
"UndecidableSuperClasses"
"UnicodeSyntax"
"UnliftedFFITypes"
"Unsafe"
"ViewPatterns"
;;; END haskell-ghc-supported-extensions
)
"List of language extensions supported by any known version of GHC.
This list should be updated by running `haskell-update-ghc-support'.")
(defvar haskell-ghc-supported-options
'(
;;; BEGIN haskell-ghc-supported-options
"-#include"
"--abi-hash"
"--frontend"
"--help"
"--info"
"--interactive"
"--make"
"--numeric-version"
"--print-booter-version"
"--print-build-platform"
"--print-c-compiler-flags"
"--print-c-compiler-link-flags"
"--print-debug-on"
"--print-gcc-linker-flags"
"--print-global-package-db"
"--print-have-interpreter"
"--print-have-native-code-generator"
"--print-host-platform"
"--print-ld-flags"
"--print-ld-linker-flags"
"--print-leading-underscore"
"--print-libdir"
"--print-object-splitting-supported"
"--print-project-git-commit-id"
"--print-project-version"
"--print-rts-ways"
"--print-stage"
"--print-support-smp"
"--print-tables-next-to-code"
"--print-target-platform"
"--print-unregisterised"
"--show-iface"
"--show-options"
"--show-packages"
"--supported-extensions"
"--supported-languages"
"--version"
"-?"
"-C"
"-D"
"-E"
"-F"
"-H"
"-I"
"-L"
"-M"
"-O"
"-Odph"
"-Onot"
"-Rghc-timing"
"-S"
"-U"
"-V"
"-W"
"-Wall"
"-Wall-missed-specialisations"
"-Walternative-layout-rule-transitional"
"-Wamp"
"-Wauto-orphans"
"-Wcompat"
"-Wcontext-quantification"
"-Wdefault"
"-Wdeferred-type-errors"
"-Wdeprecated-flags"
"-Wdeprecations"
"-Wderiving-typeable"
"-Wdodgy-exports"
"-Wdodgy-foreign-imports"
"-Wdodgy-imports"
"-Wduplicate-constraints"
"-Wduplicate-exports"
"-Wempty-enumerations"
"-Werror"
"-Weverything"
"-Wextra"
"-Whi-shadowing"
"-Widentities"
"-Wimplicit-prelude"
"-Wincomplete-patterns"
"-Wincomplete-record-updates"
"-Wincomplete-uni-patterns"
"-Winline-rule-shadowing"
"-Wmissed-specialisations"
"-Wmissing-exported-signatures"
"-Wmissing-exported-sigs"
"-Wmissing-fields"
"-Wmissing-import-lists"
"-Wmissing-local-signatures"
"-Wmissing-local-sigs"
"-Wmissing-methods"
"-Wmissing-monadfail-instances"
"-Wmissing-pattern-synonym-signatures"
"-Wmissing-signatures"
"-Wmonomorphism-restriction"
"-Wname-shadowing"
"-Wno-all"
"-Wno-all-missed-specialisations"
"-Wno-alternative-layout-rule-transitional"
"-Wno-amp"
"-Wno-auto-orphans"
"-Wno-compat"
"-Wno-context-quantification"
"-Wno-default"
"-Wno-deferred-type-errors"
"-Wno-deprecated-flags"
"-Wno-deprecations"
"-Wno-deriving-typeable"
"-Wno-dodgy-exports"
"-Wno-dodgy-foreign-imports"
"-Wno-dodgy-imports"
"-Wno-duplicate-constraints"
"-Wno-duplicate-exports"
"-Wno-empty-enumerations"
"-Wno-everything"
"-Wno-extra"
"-Wno-hi-shadowing"
"-Wno-identities"
"-Wno-implicit-prelude"
"-Wno-incomplete-patterns"
"-Wno-incomplete-record-updates"
"-Wno-incomplete-uni-patterns"
"-Wno-inline-rule-shadowing"
"-Wno-missed-specialisations"
"-Wno-missing-exported-signatures"
"-Wno-missing-exported-sigs"
"-Wno-missing-fields"
"-Wno-missing-import-lists"
"-Wno-missing-local-signatures"
"-Wno-missing-local-sigs"
"-Wno-missing-methods"
"-Wno-missing-monadfail-instances"
"-Wno-missing-pattern-synonym-signatures"
"-Wno-missing-signatures"
"-Wno-monomorphism-restriction"
"-Wno-name-shadowing"
"-Wno-noncanonical-monad-instances"
"-Wno-noncanonical-monadfail-instances"
"-Wno-noncanonical-monoid-instances"
"-Wno-orphans"
"-Wno-overflowed-literals"
"-Wno-overlapping-patterns"
"-Wno-partial-type-signatures"
"-Wno-redundant-constraints"
"-Wno-safe"
"-Wno-semigroup"
"-Wno-tabs"
"-Wno-trustworthy-safe"
"-Wno-type-defaults"
"-Wno-typed-holes"
"-Wno-unrecognised-pragmas"
"-Wno-unrecognised-warning-flags"
"-Wno-unsafe"
"-Wno-unsupported-calling-conventions"
"-Wno-unsupported-llvm-version"
"-Wno-unticked-promoted-constructors"
"-Wno-unused-binds"
"-Wno-unused-do-bind"
"-Wno-unused-foralls"
"-Wno-unused-imports"
"-Wno-unused-local-binds"
"-Wno-unused-matches"
"-Wno-unused-pattern-binds"
"-Wno-unused-top-binds"
"-Wno-unused-type-patterns"
"-Wno-warnings-deprecations"
"-Wno-wrong-do-bind"
"-Wnoncanonical-monad-instances"
"-Wnoncanonical-monadfail-instances"
"-Wnoncanonical-monoid-instances"
"-Wnot"
"-Worphans"
"-Woverflowed-literals"
"-Woverlapping-patterns"
"-Wpartial-type-signatures"
"-Wredundant-constraints"
"-Wsafe"
"-Wsemigroup"
"-Wtabs"
"-Wtrustworthy-safe"
"-Wtype-defaults"
"-Wtyped-holes"
"-Wunrecognised-pragmas"
"-Wunrecognised-warning-flags"
"-Wunsafe"
"-Wunsupported-calling-conventions"
"-Wunsupported-llvm-version"
"-Wunticked-promoted-constructors"
"-Wunused-binds"
"-Wunused-do-bind"
"-Wunused-foralls"
"-Wunused-imports"
"-Wunused-local-binds"
"-Wunused-matches"
"-Wunused-pattern-binds"
"-Wunused-top-binds"
"-Wunused-type-patterns"
"-Wwarn"
"-Wwarnings-deprecations"
"-Wwrong-do-bind"
"-XAllowAmbiguousTypes"
"-XAlternativeLayoutRule"
"-XAlternativeLayoutRuleTransitional"
"-XApplicativeDo"
"-XArrows"
"-XAutoDeriveTypeable"
"-XBangPatterns"
"-XBinaryLiterals"
"-XCApiFFI"
"-XCPP"
"-XConstrainedClassMethods"
"-XConstraintKinds"
"-XDataKinds"
"-XDatatypeContexts"
"-XDefaultSignatures"
"-XDeriveAnyClass"
"-XDeriveDataTypeable"
"-XDeriveFoldable"
"-XDeriveFunctor"
"-XDeriveGeneric"
"-XDeriveLift"
"-XDeriveTraversable"
"-XDisambiguateRecordFields"
"-XDoAndIfThenElse"
"-XDoRec"
"-XDuplicateRecordFields"
"-XEmptyCase"
"-XEmptyDataDecls"
"-XExistentialQuantification"
"-XExplicitForAll"
"-XExplicitNamespaces"
"-XExtendedDefaultRules"
"-XFlexibleContexts"
"-XFlexibleInstances"
"-XForeignFunctionInterface"
"-XFunctionalDependencies"
"-XGADTSyntax"
"-XGADTs"
"-XGHCForeignImportPrim"
"-XGeneralizedNewtypeDeriving"
"-XGenerics"
"-XHaskell2010"
"-XHaskell98"
"-XImplicitParams"
"-XImplicitPrelude"
"-XImpredicativeTypes"
"-XIncoherentInstances"
"-XInstanceSigs"
"-XInterruptibleFFI"
"-XJavaScriptFFI"
"-XKindSignatures"
"-XLambdaCase"
"-XLiberalTypeSynonyms"
"-XMagicHash"
"-XMonadComprehensions"
"-XMonadFailDesugaring"
"-XMonoLocalBinds"
"-XMonoPatBinds"
"-XMonomorphismRestriction"
"-XMultiParamTypeClasses"
"-XMultiWayIf"
"-XNPlusKPatterns"
"-XNamedFieldPuns"
"-XNamedWildCards"
"-XNegativeLiterals"
"-XNoAllowAmbiguousTypes"
"-XNoAlternativeLayoutRule"
"-XNoAlternativeLayoutRuleTransitional"
"-XNoApplicativeDo"
"-XNoArrows"
"-XNoAutoDeriveTypeable"
"-XNoBangPatterns"
"-XNoBinaryLiterals"
"-XNoCApiFFI"
"-XNoCPP"
"-XNoConstrainedClassMethods"
"-XNoConstraintKinds"
"-XNoDataKinds"
"-XNoDatatypeContexts"
"-XNoDefaultSignatures"
"-XNoDeriveAnyClass"
"-XNoDeriveDataTypeable"
"-XNoDeriveFoldable"
"-XNoDeriveFunctor"
"-XNoDeriveGeneric"
"-XNoDeriveLift"
"-XNoDeriveTraversable"
"-XNoDisambiguateRecordFields"
"-XNoDoAndIfThenElse"
"-XNoDoRec"
"-XNoDuplicateRecordFields"
"-XNoEmptyCase"
"-XNoEmptyDataDecls"
"-XNoExistentialQuantification"
"-XNoExplicitForAll"
"-XNoExplicitNamespaces"
"-XNoExtendedDefaultRules"
"-XNoFlexibleContexts"
"-XNoFlexibleInstances"
"-XNoForeignFunctionInterface"
"-XNoFunctionalDependencies"
"-XNoGADTSyntax"
"-XNoGADTs"
"-XNoGHCForeignImportPrim"
"-XNoGeneralizedNewtypeDeriving"
"-XNoGenerics"
"-XNoImplicitParams"
"-XNoImplicitPrelude"
"-XNoImpredicativeTypes"
"-XNoIncoherentInstances"
"-XNoInstanceSigs"
"-XNoInterruptibleFFI"
"-XNoJavaScriptFFI"
"-XNoKindSignatures"
"-XNoLambdaCase"
"-XNoLiberalTypeSynonyms"
"-XNoMagicHash"
"-XNoMonadComprehensions"
"-XNoMonadFailDesugaring"
"-XNoMonoLocalBinds"
"-XNoMonoPatBinds"
"-XNoMonomorphismRestriction"
"-XNoMultiParamTypeClasses"
"-XNoMultiWayIf"
"-XNoNPlusKPatterns"
"-XNoNamedFieldPuns"
"-XNoNamedWildCards"
"-XNoNegativeLiterals"
"-XNoNondecreasingIndentation"
"-XNoNullaryTypeClasses"
"-XNoNumDecimals"
"-XNoOverlappingInstances"
"-XNoOverloadedLabels"
"-XNoOverloadedLists"
"-XNoOverloadedStrings"
"-XNoPackageImports"
"-XNoParallelArrays"
"-XNoParallelListComp"
"-XNoPartialTypeSignatures"
"-XNoPatternGuards"
"-XNoPatternSignatures"
"-XNoPatternSynonyms"
"-XNoPolyKinds"
"-XNoPolymorphicComponents"
"-XNoPostfixOperators"
"-XNoQuasiQuotes"
"-XNoRank2Types"
"-XNoRankNTypes"
"-XNoRebindableSyntax"
"-XNoRecordPuns"
"-XNoRecordWildCards"
"-XNoRecursiveDo"
"-XNoRelaxedLayout"
"-XNoRelaxedPolyRec"
"-XNoRoleAnnotations"
"-XNoScopedTypeVariables"
"-XNoStandaloneDeriving"
"-XNoStaticPointers"
"-XNoStrict"
"-XNoStrictData"
"-XNoTemplateHaskell"
"-XNoTemplateHaskellQuotes"
"-XNoTraditionalRecordSyntax"
"-XNoTransformListComp"
"-XNoTupleSections"
"-XNoTypeApplications"
"-XNoTypeFamilies"
"-XNoTypeFamilyDependencies"
"-XNoTypeInType"
"-XNoTypeOperators"
"-XNoTypeSynonymInstances"
"-XNoUnboxedTuples"
"-XNoUndecidableInstances"
"-XNoUndecidableSuperClasses"
"-XNoUnicodeSyntax"
"-XNoUnliftedFFITypes"
"-XNoViewPatterns"
"-XNondecreasingIndentation"
"-XNullaryTypeClasses"
"-XNumDecimals"
"-XOverlappingInstances"
"-XOverloadedLabels"
"-XOverloadedLists"
"-XOverloadedStrings"
"-XPackageImports"
"-XParallelArrays"
"-XParallelListComp"
"-XPartialTypeSignatures"
"-XPatternGuards"
"-XPatternSignatures"
"-XPatternSynonyms"
"-XPolyKinds"
"-XPolymorphicComponents"
"-XPostfixOperators"
"-XQuasiQuotes"
"-XRank2Types"
"-XRankNTypes"
"-XRebindableSyntax"
"-XRecordPuns"
"-XRecordWildCards"
"-XRecursiveDo"
"-XRelaxedLayout"
"-XRelaxedPolyRec"
"-XRoleAnnotations"
"-XSafe"
"-XScopedTypeVariables"
"-XStandaloneDeriving"
"-XStaticPointers"
"-XStrict"
"-XStrictData"
"-XTemplateHaskell"
"-XTemplateHaskellQuotes"
"-XTraditionalRecordSyntax"
"-XTransformListComp"
"-XTrustworthy"
"-XTupleSections"
"-XTypeApplications"
"-XTypeFamilies"
"-XTypeFamilyDependencies"
"-XTypeInType"
"-XTypeOperators"
"-XTypeSynonymInstances"
"-XUnboxedTuples"
"-XUndecidableInstances"
"-XUndecidableSuperClasses"
"-XUnicodeSyntax"
"-XUnliftedFFITypes"
"-XUnsafe"
"-XViewPatterns"
"-auto"
"-auto-all"
"-c"
"-caf-all"
"-clear-package-db"
"-cpp"
"-dannot-lint"
"-dasm-lint"
"-dcmm-lint"
"-dcore-lint"
"-ddump-asm"
"-ddump-asm-conflicts"
"-ddump-asm-expanded"
"-ddump-asm-liveness"
"-ddump-asm-native"
"-ddump-asm-regalloc"
"-ddump-asm-regalloc-stages"
"-ddump-asm-stats"
"-ddump-bcos"
"-ddump-call-arity"
"-ddump-cmm"
"-ddump-cmm-cbe"
"-ddump-cmm-cfg"
"-ddump-cmm-cps"
"-ddump-cmm-info"
"-ddump-cmm-proc"
"-ddump-cmm-procmap"
"-ddump-cmm-raw"
"-ddump-cmm-sink"
"-ddump-cmm-sp"
"-ddump-cmm-split"
"-ddump-cmm-switch"
"-ddump-core-stats"
"-ddump-cs-trace"
"-ddump-cse"
"-ddump-debug"
"-ddump-deriv"
"-ddump-ds"
"-ddump-file-prefix"
"-ddump-foreign"
"-ddump-hi"
"-ddump-hi-diffs"
"-ddump-hpc"
"-ddump-if-trace"
"-ddump-inlinings"
"-ddump-llvm"
"-ddump-minimal-imports"
"-ddump-mod-cycles"
"-ddump-mod-map"
"-ddump-occur-anal"
"-ddump-opt-cmm"
"-ddump-parsed"
"-ddump-prep"
"-ddump-rn"
"-ddump-rn-stats"
"-ddump-rn-trace"
"-ddump-rtti"
"-ddump-rule-firings"
"-ddump-rule-rewrites"
"-ddump-rules"
"-ddump-simpl"
"-ddump-simpl-iterations"
"-ddump-simpl-stats"
"-ddump-simpl-trace"
"-ddump-spec"
"-ddump-splices"
"-ddump-stg"
"-ddump-str-signatures"
"-ddump-stranal"
"-ddump-strsigs"
"-ddump-tc"
"-ddump-tc-trace"
"-ddump-ticked"
"-ddump-to-file"
"-ddump-types"
"-ddump-vect"
"-ddump-view-pattern-commoning"
"-ddump-vt-trace"
"-ddump-worker-wrapper"
"-debug"
"-dep-makefile"
"-dep-suffix"
"-dfaststring-stats"
"-dinitial-unique"
"-distrust"
"-distrust-all-packages"
"-dno-debug-output"
"-dno-llvm-mangler"
"-dno-ppr-case-as-let"
"-dno-ppr-ticks"
"-dno-suppress-coercions"
"-dno-suppress-idinfo"
"-dno-suppress-module-prefixes"
"-dno-suppress-type-applications"
"-dno-suppress-type-signatures"
"-dno-suppress-unfoldings"
"-dno-suppress-uniques"
"-dno-suppress-var-kinds"
"-dppr-case-as-let"
"-dppr-cols"
"-dppr-debug"
"-dppr-ticks"
"-dppr-user-length"
"-dshow-passes"
"-dsource-stats"
"-dstg-lint"
"-dstg-stats"
"-dsuppress-all"
"-dsuppress-coercions"
"-dsuppress-idinfo"
"-dsuppress-module-prefixes"
"-dsuppress-type-applications"
"-dsuppress-type-signatures"
"-dsuppress-unfoldings"
"-dsuppress-uniques"
"-dsuppress-var-kinds"
"-dth-dec-file"
"-dtrace-level"
"-dumpdir"
"-dunique-increment"
"-dverbose-core2core"
"-dverbose-stg2stg"
"-dylib-install-name"
"-dynamic"
"-dynamic-too"
"-dynhisuf"
"-dynload"
"-dyno"
"-dynosuf"
"-e"
"-eventlog"
"-exclude-module"
"-fPArr"
"-fPIC"
"-fallow-incoherent-instances"
"-fallow-overlapping-instances"
"-fallow-undecidable-instances"
"-farrows"
"-fasm"
"-fbang-patterns"
"-fbuilding-cabal-package"
"-fbyte-code"
"-fcall-arity"
"-fcase-merge"
"-fcmm-elim-common-blocks"
"-fcmm-sink"
"-fconstraint-solver-iterations"
"-fcontext-stack"
"-fcpr-anal"
"-fcpr-off"
"-fcross-module-specialise"
"-fcse"
"-fdefer-type-errors"
"-fdefer-typed-holes"
"-fdicts-cheap"
"-fdicts-strict"
"-fdmd-tx-dict-sel"
"-fdo-eta-reduction"
"-fdo-lambda-eta-expansion"
"-feager-blackholing"
"-fembed-manifest"
"-fenable-rewrite-rules"
"-ferror-spans"
"-fexcess-precision"
"-fexpose-all-unfoldings"
"-fext-core"
"-fextended-default-rules"
"-fexternal-interpreter"
"-fffi"
"-ffi"
"-fflat-cache"
"-ffloat-all-lams"
"-ffloat-in"
"-ffloat-lam-args"
"-fforce-recomp"
"-ffrontend-opt"
"-ffull-laziness"
"-ffun-to-thunk"
"-fgen-manifest"
"-fghci-history"
"-fghci-sandbox"
"-fglasgow-exts"
"-fhelpful-errors"
"-fhistory-size"
"-fhpc"
"-fhpc-no-auto"
"-fignore-asserts"
"-fignore-interface-pragmas"
"-fimplicit-params"
"-fimplicit-prelude"
"-firrefutable-tuples"
"-fkill-absence"
"-fkill-one-shot"
"-flate-dmd-anal"
"-fliberate-case"
"-fliberate-case-threshold"
"-fllvm"
"-floopification"
"-fmax-inline-alloc-size"
"-fmax-inline-memcpy-insns"
"-fmax-inline-memset-insns"
"-fmax-pmcheck-iterations"
"-fmax-relevant-binds"
"-fmax-simplifier-iterations"
"-fmax-worker-args"
"-fmono-pat-binds"
"-fmonomorphism-restriction"
"-fno-PArr"
"-fno-PIC"
"-fno-allow-incoherent-instances"
"-fno-allow-overlapping-instances"
"-fno-allow-undecidable-instances"
"-fno-arrows"
"-fno-bang-patterns"
"-fno-building-cabal-package"
"-fno-call-arity"
"-fno-case-merge"
"-fno-cmm-elim-common-blocks"
"-fno-cmm-sink"
"-fno-code"
"-fno-cpr-anal"
"-fno-cross-module-specialise"
"-fno-cse"
"-fno-defer-type-errors"
"-fno-defer-typed-holes"
"-fno-dicts-cheap"
"-fno-dicts-strict"
"-fno-dmd-tx-dict-sel"
"-fno-do-eta-reduction"
"-fno-do-lambda-eta-expansion"
"-fno-eager-blackholing"
"-fno-embed-manifest"
"-fno-enable-rewrite-rules"
"-fno-error-spans"
"-fno-excess-precision"
"-fno-expose-all-unfoldings"
"-fno-ext-core"
"-fno-extended-default-rules"
"-fno-external-interpreter"
"-fno-ffi"
"-fno-fi"
"-fno-flat-cache"
"-fno-float-in"
"-fno-force-recomp"
"-fno-full-laziness"
"-fno-fun-to-thunk"
"-fno-gen-manifest"
"-fno-ghci-history"
"-fno-ghci-sandbox"
"-fno-glasgow-exts"
"-fno-helpful-errors"
"-fno-hpc"
"-fno-hpc-no-auto"
"-fno-ignore-asserts"
"-fno-ignore-interface-pragmas"
"-fno-implicit-params"
"-fno-implicit-prelude"
"-fno-irrefutable-tuples"
"-fno-kill-absence"
"-fno-kill-one-shot"
"-fno-late-dmd-anal"
"-fno-liberate-case"
"-fno-liberate-case-threshold"
"-fno-loopification"
"-fno-max-relevant-binds"
"-fno-mono-pat-binds"
"-fno-monomorphism-restriction"
"-fno-omit-interface-pragmas"
"-fno-omit-yields"
"-fno-opt-coercion"
"-fno-parr"
"-fno-pedantic-bottoms"
"-fno-pre-inlining"
"-fno-print-equality-relations"
"-fno-print-expanded-synonyms"
"-fno-print-explicit-coercions"
"-fno-print-explicit-foralls"
"-fno-print-explicit-kinds"
"-fno-print-explicit-runtime-reps"
"-fno-print-potential-instances"
"-fno-print-typechecker-elaboration"
"-fno-print-unicode-syntax"
"-fno-prof-auto"
"-fno-prof-cafs"
"-fno-prof-count-entries"
"-fno-regs-graph"
"-fno-regs-iterative"
"-fno-reverse-errors"
"-fno-rewrite-rules"
"-fno-safe-infer"
"-fno-scoped-type-variables"
"-fno-shared-implib"
"-fno-show-warning-groups"
"-fno-simple-list-literals"
"-fno-spec-constr"
"-fno-spec-constr-count"
"-fno-spec-constr-threshold"
"-fno-specialise"
"-fno-specialise-aggressively"
"-fno-state-hack"
"-fno-static-argument-transformation"
"-fno-strictness"
"-fno-th"
"-fno-unbox-small-strict-fields"
"-fno-unbox-strict-fields"
"-fno-use-rpaths"
"-fno-vectorisation-avoidance"
"-fno-vectorise"
"-fno-version-macros"
"-fno-warn-"
"-fno-warn-alternative-layout-rule-transitional"
"-fno-warn-amp"
"-fno-warn-auto-orphans"
"-fno-warn-context-quantification"
"-fno-warn-deprecated-flags"
"-fno-warn-deprecations"
"-fno-warn-deriving-typeable"
"-fno-warn-dodgy-exports"
"-fno-warn-dodgy-foreign-imports"
"-fno-warn-dodgy-imports"
"-fno-warn-duplicate-constraints"
"-fno-warn-duplicate-exports"
"-fno-warn-empty-enumerations"
"-fno-warn-hi-shadowing"
"-fno-warn-identities"
"-fno-warn-implicit-prelude"
"-fno-warn-incomplete-patterns"
"-fno-warn-incomplete-record-updates"
"-fno-warn-incomplete-uni-patterns"
"-fno-warn-inline-rule-shadowing"
"-fno-warn-missing-exported-sigs"
"-fno-warn-missing-fields"
"-fno-warn-missing-import-lists"
"-fno-warn-missing-local-sigs"
"-fno-warn-missing-methods"
"-fno-warn-missing-signatures"
"-fno-warn-monomorphism-restriction"
"-fno-warn-name-shadowing"
"-fno-warn-orphans"
"-fno-warn-overflowed-literals"
"-fno-warn-overlapping-patterns"
"-fno-warn-partial-type-signatures"
"-fno-warn-pointless-pragmas"
"-fno-warn-safe"
"-fno-warn-tabs"
"-fno-warn-trustworthy-safe"
"-fno-warn-type-defaults"
"-fno-warn-typed-holes"
"-fno-warn-unrecognised-pragmas"
"-fno-warn-unsafe"
"-fno-warn-unsupported-calling-conventions"
"-fno-warn-unsupported-llvm-version"
"-fno-warn-unticked-promoted-constructors"
"-fno-warn-unused-binds"
"-fno-warn-unused-do-bind"
"-fno-warn-unused-imports"
"-fno-warn-unused-matches"
"-fno-warn-warnings-deprecations"
"-fno-warn-wrong-do-bind"
"-fno-worker-wrapper"
"-fno-write-interface"
"-fobject-code"
"-fomit-interface-pragmas"
"-fomit-yields"
"-fpackage-trust"
"-fparr"
"-fpedantic-bottoms"
"-fplugin"
"-fplugin-opt"
"-fpre-inlining"
"-fprint-equality-relations"
"-fprint-expanded-synonyms"
"-fprint-explicit-coercions"
"-fprint-explicit-foralls"
"-fprint-explicit-kinds"
"-fprint-explicit-runtime-reps"
"-fprint-potential-instances"
"-fprint-typechecker-elaboration"
"-fprint-unicode-syntax"
"-fprof-auto"
"-fprof-auto-calls"
"-fprof-auto-exported"
"-fprof-auto-top"
"-fprof-cafs"
"-fprof-count-entries"
"-framework"
"-framework-path"
"-freduction-depth"
"-fregs-graph"
"-fregs-iterative"
"-freverse-errors"
"-frewrite-rules"
"-frule-check"
"-fscoped-type-variables"
"-fshared-implib"
"-fshow-warning-groups"
"-fsimpl-tick-factor"
"-fsimple-list-literals"
"-fsimplifier-phases"
"-fspec-constr"
"-fspec-constr-count"
"-fspec-constr-recursive"
"-fspec-constr-threshold"
"-fspecialise"
"-fspecialise-aggressively"
"-fstatic-argument-transformation"
"-fstrictness"
"-fstrictness-before"
"-fth"
"-ftype-function-depth"
"-funbox-small-strict-fields"
"-funbox-strict-fields"
"-funfolding-creation-threshold"
"-funfolding-dict-discount"
"-funfolding-fun-discount"
"-funfolding-keeness-factor"
"-funfolding-use-threshold"
"-fuse-rpaths"
"-fvectorisation-avoidance"
"-fvectorise"
"-fversion-macros"
"-fvia-C"
"-fvia-c"
"-fwarn-"
"-fwarn-alternative-layout-rule-transitional"
"-fwarn-amp"
"-fwarn-auto-orphans"
"-fwarn-context-quantification"
"-fwarn-deprecated-flags"
"-fwarn-deprecations"
"-fwarn-deriving-typeable"
"-fwarn-dodgy-exports"
"-fwarn-dodgy-foreign-imports"
"-fwarn-dodgy-imports"
"-fwarn-duplicate-constraints"
"-fwarn-duplicate-exports"
"-fwarn-empty-enumerations"
"-fwarn-hi-shadowing"
"-fwarn-identities"
"-fwarn-implicit-prelude"
"-fwarn-incomplete-patterns"
"-fwarn-incomplete-record-updates"
"-fwarn-incomplete-uni-patterns"
"-fwarn-inline-rule-shadowing"
"-fwarn-missing-exported-sigs"
"-fwarn-missing-fields"
"-fwarn-missing-import-lists"
"-fwarn-missing-local-sigs"
"-fwarn-missing-methods"
"-fwarn-missing-signatures"
"-fwarn-monomorphism-restriction"
"-fwarn-name-shadowing"
"-fwarn-orphans"
"-fwarn-overflowed-literals"
"-fwarn-overlapping-patterns"
"-fwarn-partial-type-signatures"
"-fwarn-pointless-pragmas"
"-fwarn-safe"
"-fwarn-tabs"
"-fwarn-trustworthy-safe"
"-fwarn-type-defaults"
"-fwarn-typed-holes"
"-fwarn-unrecognised-pragmas"
"-fwarn-unsafe"
"-fwarn-unsupported-calling-conventions"
"-fwarn-unsupported-llvm-version"
"-fwarn-unticked-promoted-constructors"
"-fwarn-unused-binds"
"-fwarn-unused-do-bind"
"-fwarn-unused-imports"
"-fwarn-unused-matches"
"-fwarn-warnings-deprecations"
"-fwarn-wrong-do-bind"
"-fworker-wrapper"
"-fwrite-interface"
"-g"
"-global-package-db"
"-gransim"
"-haddock"
"-haddock-opts"
"-hcsuf"
"-hide-all-packages"
"-hide-all-plugin-packages"
"-hide-package"
"-hidir"
"-hisuf"
"-hpcdir"
"-i"
"-ignore-package"
"-include-pkg-deps"
"-j"
"-keep-hc-file"
"-keep-hc-files"
"-keep-llvm-file"
"-keep-llvm-files"
"-keep-s-file"
"-keep-s-files"
"-keep-tmp-files"
"-l"
"-main-is"
"-mavx"
"-mavx2"
"-mavx512cd"
"-mavx512er"
"-mavx512f"
"-mavx512pf"
"-msse"
"-msse2"
"-msse3"
"-msse4"
"-msse4.2"
"-n"
"-ndp"
"-no-auto"
"-no-auto-all"
"-no-auto-link-packages"
"-no-caf-all"
"-no-global-package-db"
"-no-hs-main"
"-no-link"
"-no-recomp"
"-no-rtsopts"
"-no-rtsopts-suggestions"
"-no-user-package-conf"
"-no-user-package-db"
"-o"
"-odir"
"-ohi"
"-optF"
"-optL"
"-optP"
"-opta"
"-optc"
"-opti"
"-optl"
"-optlc"
"-optlo"
"-optwindres"
"-osuf"
"-outputdir"
"-package"
"-package-conf"
"-package-db"
"-package-env"
"-package-id"
"-package-key"
"-package-name"
"-parallel"
"-pgmF"
"-pgmL"
"-pgmP"
"-pgma"
"-pgmc"
"-pgmdll"
"-pgmi"
"-pgml"
"-pgmlc"
"-pgmlibtool"
"-pgmlo"
"-pgms"
"-pgmwindres"
"-plugin-package"
"-plugin-package-id"
"-prof"
"-rdynamic"
"-recomp"
"-relative-dynlib-paths"
"-rtsopts"
"-rtsopts=all"
"-rtsopts=none"
"-rtsopts=some"
"-shared"
"-sig-of"
"-smp"
"-split-objs"
"-split-sections"
"-static"
"-staticlib"
"-stubdir"
"-syslib"
"-this-package-key"
"-this-unit-id"
"-threaded"
"-ticky"
"-ticky-LNE"
"-ticky-allocd"
"-ticky-dyn-thunk"
"-tmpdir"
"-trust"
"-user-package-db"
"-v"
"-w"
"-with-rtsopts"
;;; END haskell-ghc-supported-options
)
"List of options supported by any known version of GHC.
This list should be updated by running `haskell-update-ghc-support'.")
(defun haskell-update-ghc-support (ghc-path)
"Update `haskell-ghc-supported-options' and `haskell-ghc-supported-extensions'.
This command should be run once a GHC is released. It will use
--show-options and --supported-extensions to source the
information from GHC-PATH. Then it will update source code to
include newly found options. Old options are never removed and
are retained to support old versions of the compiler.
Options and extension are kept in ascending order."
(interactive
(list
(read-shell-command "GHC command: " nil nil
(let ((filename
(cond
(buffer-file-name)
((eq major-mode 'dired-mode)
(when (fboundp 'dired-get-filename)
;; silence the checker
(dired-get-filename nil t))))))
(and filename (file-relative-name filename))))))
(let ((extentions (split-string (shell-command-to-string (concat ghc-path " --supported-extensions"))))
(options (split-string (shell-command-to-string (concat ghc-path " --show-options")))))
(with-current-buffer
(find-file-noselect (replace-regexp-in-string "\\.elc$" ".el" (symbol-file 'haskell-ghc-supported-options)))
(save-excursion
(goto-char (point-min))
(re-search-forward "BEGIN haskell-ghc-supported-extensions")
(forward-line 1)
(let ((point (point)))
(re-search-forward "END haskell-ghc-supported-extensions")
(goto-char (line-beginning-position))
(delete-region point (point)))
(setq haskell-ghc-supported-extensions
(delete-dups (sort (append extentions haskell-ghc-supported-extensions) #'string<)))
(dolist (item haskell-ghc-supported-extensions)
(insert " \"" item "\"\n"))
(re-search-forward "BEGIN haskell-ghc-supported-options")
(forward-line 1)
(let ((point (point)))
(re-search-forward "END haskell-ghc-supported-options")
(goto-char (line-beginning-position))
(delete-region point (point)))
(setq haskell-ghc-supported-options
(delete-dups (sort (append options haskell-ghc-supported-options) #'string<)))
(dolist (item haskell-ghc-supported-options)
(insert " \"" item "\"\n"))))))
(provide 'haskell-ghc-support)