aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShohei YOSHIDA <syohex@gmail.com>2025-07-23 16:29:51 +0900
committerShohei YOSHIDA <syohex@gmail.com>2025-11-13 16:33:44 +0900
commitc16614f37ea1113c989084370abcec389fa1d0c9 (patch)
treeb30094752691e6f8b3dcf8193b30a7f1caa6d658
parentMerge pull request #1170 from zsh-users/diskutils (diff)
downloadzsh-completions-c16614f37ea1113c989084370abcec389fa1d0c9.tar
zsh-completions-c16614f37ea1113c989084370abcec389fa1d0c9.tar.gz
zsh-completions-c16614f37ea1113c989084370abcec389fa1d0c9.tar.bz2
zsh-completions-c16614f37ea1113c989084370abcec389fa1d0c9.tar.lz
zsh-completions-c16614f37ea1113c989084370abcec389fa1d0c9.tar.xz
zsh-completions-c16614f37ea1113c989084370abcec389fa1d0c9.tar.zst
zsh-completions-c16614f37ea1113c989084370abcec389fa1d0c9.zip
Apply formatting and refactor ghc-pkg completion
-rw-r--r--src/_ghc1038
1 files changed, 526 insertions, 512 deletions
diff --git a/src/_ghc b/src/_ghc
index 4d01430..c555047 100644
--- a/src/_ghc
+++ b/src/_ghc
@@ -46,573 +46,587 @@ local WORDS
# ghci
#
-_ghc_ghci () { _ghc_compiler }
+_ghc_ghci() {
+ _ghc_compiler
+}
#
# ghc
#
-_ghc_compiler ()
+_ghc_compiler()
{
- _arguments \
- "-no-hs-main[Don't assume this program contains main]" \
- "-no-user-package-conf[Don't load the user's package config file]" \
- '(- *)'{--help,-\?}'[Show help information]' \
- '*-I-[Add directory to path for #include files]:directory:_files -/' \
- '*-X-[Language flags]:flag:_ghc_language_flags' \
- '*-d-[Debugging options]:flag:_ghc_debugging_options' \
- '*-f-[Compiler options]:flag:_ghc_compiler_flags' \
- '*-hide-package[Hide package]:Package:_ghc_pkg_list_packages' \
- '*-trust[Expose package and set it to be trusted]:Package:_ghc_pkg_list_packages' \
- '*-distrust[Expose package and set it to be distrusted]:Package:_ghc_pkg_list_packages' \
- '*-distrust-all[Distrust all packages by default]' \
- '*-i-[Add directory to import path]:directory:->ghc_include_directory' \
- '*-package[Expose package]:Package:_ghc_pkg_list_packages' \
- '*:file:_files -g \*.\{lhs,hs,hc,c,s\}' \
- '--info[Display information about the compiler]' \
- '--show-options[Display the supported command line options]' \
- '--interactive[Interactive mode]' \
- '--make[Compile and link a complete Haskell program]:file:_files -g "*.{lhs,hs,hc,c,s}"' \
- '--numeric-version[Display GHC version (numeric only)]' \
- '--print-libdir[Display GHC library directory]' \
- '--show-iface[Show interface]:file:_files -g "*.hi"' \
- {--supported-languages,--supported-extensions}'[Display the supported language extensions]' \
- '-C[Stop after generating C]' \
- '-E[Stop after generating preprocessed, de-litted Haskell]' \
- '-H[Minimum heap size]:size:' \
- '-M[Output Makefile rules]' \
- '-O-[Enable optimization]:level:(0 1 2)' \
- '-Rghc-timing[Summarise timing stats for GHC]' \
- '-S[Stop after generating assembler]' \
- '-V[Display GHC version]' \
- '-W[Enable normal warnings]' \
- '-Wall[Enable almost all warnings]' \
- '-Werror[Make warnings fatal]' \
- '-Wwarn[Make warnings non-fatal]' \
- '-c[Stop after generating object files]' \
- '-eventlog[Enable runtime event tracing]' \
- '-debug[Use the debugging runtime]' \
- "-dylib-install-name[On Darwin/macOS only, set the install name]" \
- '-dynamic[Use dynamic Haskell libraries]' \
- '-dynamic-too[Build dynamic object files as well as static object files during compilation]' \
- '-dynosuf[Set the output suffix for dynamic object files]' \
- '-dynload[Select one of a number of modes for finding shared libraries at runtime]' \
- '--mk-dll[DLL-creation mode (Windows only)]' \
- '-framework-path[On Darwin/macOS/iOS only, add dir to the list of directories searched for frameworks]' \
- '-shared[Generate a shared library (as opposed to an executable)]' \
- '-staticlib[On Darwin/macOS/iOS only, generate a standalone static library (as opposed to an executable)]' \
- '-e[Evaluate expression]' \
- '-hide-all-packages[Hide all packages by default]' \
- '-hpcdir[Directory to deposit .mix files during compilation (default is .hpc)]' \
- '-n[Do a dry run]' \
- '-o[Set output filename]:file:_files' \
- '-outputdir[Set output directory]:directory:_files -/' \
- '-package-name[Compile to be part of package]' \
- '-hide-all-packages[Hide all packages by default]' \
- '-package-db[Add file to the package db stack]:file:_files' \
- '-clear-package-db[Clear the package db stack]' \
- '-msse2[(x86 only) Use SSE2 for floating point]' \
- '-monly-\[432\]-regs[(x86 only) give some registers back to the C compiler]' \
- '-no-global-package-db[Remove the global package db from the stack]' \
- '-global-package-db[Add the global package db to the stack]' \
- "-no-user-package-db[Remove the user's package db from the stack]" \
- "-user-package-db[Add the user's package db to the stack]" \
- "-no-auto-link-packages[Don't automatically link in the base and rts packages]" \
- '-optL[pass option to the literate pre-processor]' \
- '-optP[pass option to cpp (with -cpp only)]' \
- '-optF[pass option to the custom pre-processor]' \
- '-optc[pass option to the C compiler]' \
- '-optlo[pass option to the LLVM optimiser]' \
- '-optlc[pass option to the LLVM compiler]' \
- '-optm[pass option to the mangler]' \
- '-opta[pass option to the assembler]' \
- '-optl[pass option to the linker]' \
- '-optdll[pass option to the DLL generator]' \
- '-optwindres[pass option to windres.]' \
- '-prof[Turn on profiling]' \
- '-pgmL[Use cmd as the literate pre-processor]' \
- '-pgmP[Use cmd as the C pre-processor (with -cpp only)]' \
- '-pgmc[Use cmd as the C compiler]' \
- '-pgms[Use cmd as the splitter]' \
- '-pgml[Use cmd as the linker]' \
- '-pgmdll[Use cmd as the DLL generator]' \
- '-pgmF[Use cmd as the pre-processor (with -F only)]' \
- '-pgmwindres[Use cmd as the program for embedding manifests on Windows]' \
- '-pgmlibtool[Use cmd as the command for libtool (with -staticlib only)]' \
- '-rtsopts[Only a minimum of safe options can be given to RTS]' \
- '-rtsopts=[Control whether the RTS behavior can be tweaked via command-line flags and the GHCRTS environment variable (none, some, or all)]' \
- '-with-rtsopts=[Set the default RTS options]' \
- '-threaded[Use the threaded runtime]' \
- '-ticky[Turn on ticky-ticky profiling]' \
- '-tmpdir[Set the directory for temporary files]:directory:_files -/' \
- '-v-[Control verbosity]:level:(0 1 2 3 4 5)' \
- '-w[Disable all warnings]' \
- '-x[Override default behaviour for source files]:suffix:(hs lhs hc c s o hspp)' \
- '-hcsuf[Set the suffix to use for intermediate]:suffix:' \
- '-hidir[Set directory for interface files]:directory:_files -/' \
- '-hisuf[Set the suffix to use for interface files]:suffix:' \
- '-odir[Set directory for object files]:directory:_files -/' \
- '-ohi[Set the filename in which to put the interface]:filename:_files -/' \
- '-osuf[Set the output file suffix]:suffix:' \
- '-stubdir[Redirect FFi stub files]:directory:_files -/' \
- '-dumpdir[Redirect dump files]:directory:_files -/' \
- '-outputdir[Set output directory]:directory:_files -/' \
- '-keep-hc-files[Retain intermediate .hc files]' \
- '-keep-llvm-files[Retain intermediate LLVM .ll files]' \
- '-keep-s-files[Retain intermediate .s files]' \
- '-keep-raw-s-files[Retain intermediate .raw_s files]' \
- '-keep-tmp-files[Retain all intermediate temporary files]' \
- '-static[Use static Haskell libraries]' \
- '-split-objs[Split objects (for libraries)]' \
- '-no-link[Omit linking]' \
- '-main-is[Set main module and function]:function:' \
- '*-L-[Add dir to the list of directories searched for libraries]:directory:_files -/' \
- '*-l-[Link in library]:library:->library'
+ _arguments \
+ "-no-hs-main[Don't assume this program contains main]" \
+ "-no-user-package-conf[Don't load the user's package config file]" \
+ '(- *)'{--help,-\?}'[Show help information]' \
+ '*-I-[Add directory to path for #include files]:directory:_files -/' \
+ '*-X-[Language flags]:flag:_ghc_language_flags' \
+ '*-d-[Debugging options]:flag:_ghc_debugging_options' \
+ '*-f-[Compiler options]:flag:_ghc_compiler_flags' \
+ '*-hide-package[Hide package]:Package:_ghc_pkg_list_packages' \
+ '*-trust[Expose package and set it to be trusted]:Package:_ghc_pkg_list_packages' \
+ '*-distrust[Expose package and set it to be distrusted]:Package:_ghc_pkg_list_packages' \
+ '*-distrust-all[Distrust all packages by default]' \
+ '*-i-[Add directory to import path]:directory:->ghc_include_directory' \
+ '*-package[Expose package]:Package:_ghc_pkg_list_packages' \
+ '*:file:_files -g \*.\{lhs,hs,hc,c,s\}' \
+ '--info[Display information about the compiler]' \
+ '--show-options[Display the supported command line options]' \
+ '--interactive[Interactive mode]' \
+ '--make[Compile and link a complete Haskell program]:file:_files -g "*.{lhs,hs,hc,c,s}"' \
+ '--numeric-version[Display GHC version (numeric only)]' \
+ '--print-libdir[Display GHC library directory]' \
+ '--show-iface[Show interface]:file:_files -g "*.hi"' \
+ {--supported-languages,--supported-extensions}'[Display the supported language extensions]' \
+ '-C[Stop after generating C]' \
+ '-E[Stop after generating preprocessed, de-litted Haskell]' \
+ '-H[Minimum heap size]:size:' \
+ '-M[Output Makefile rules]' \
+ '-O-[Enable optimization]:level:(0 1 2)' \
+ '-Rghc-timing[Summarise timing stats for GHC]' \
+ '-S[Stop after generating assembler]' \
+ '-V[Display GHC version]' \
+ '-W[Enable normal warnings]' \
+ '-Wall[Enable almost all warnings]' \
+ '-Werror[Make warnings fatal]' \
+ '-Wwarn[Make warnings non-fatal]' \
+ '-c[Stop after generating object files]' \
+ '-eventlog[Enable runtime event tracing]' \
+ '-debug[Use the debugging runtime]' \
+ "-dylib-install-name[On Darwin/macOS only, set the install name]" \
+ '-dynamic[Use dynamic Haskell libraries]' \
+ '-dynamic-too[Build dynamic object files as well as static object files during compilation]' \
+ '-dynosuf[Set the output suffix for dynamic object files]' \
+ '-dynload[Select one of a number of modes for finding shared libraries at runtime]' \
+ '--mk-dll[DLL-creation mode (Windows only)]' \
+ '-framework-path[On Darwin/macOS/iOS only, add dir to the list of directories searched for frameworks]' \
+ '-shared[Generate a shared library (as opposed to an executable)]' \
+ '-staticlib[On Darwin/macOS/iOS only, generate a standalone static library (as opposed to an executable)]' \
+ '-e[Evaluate expression]' \
+ '-hide-all-packages[Hide all packages by default]' \
+ '-hpcdir[Directory to deposit .mix files during compilation (default is .hpc)]' \
+ '-n[Do a dry run]' \
+ '-o[Set output filename]:file:_files' \
+ '-outputdir[Set output directory]:directory:_files -/' \
+ '-package-name[Compile to be part of package]' \
+ '-hide-all-packages[Hide all packages by default]' \
+ '-package-db[Add file to the package db stack]:file:_files' \
+ '-clear-package-db[Clear the package db stack]' \
+ '-msse2[(x86 only) Use SSE2 for floating point]' \
+ '-monly-\[432\]-regs[(x86 only) give some registers back to the C compiler]' \
+ '-no-global-package-db[Remove the global package db from the stack]' \
+ '-global-package-db[Add the global package db to the stack]' \
+ "-no-user-package-db[Remove the user's package db from the stack]" \
+ "-user-package-db[Add the user's package db to the stack]" \
+ "-no-auto-link-packages[Don't automatically link in the base and rts packages]" \
+ '-optL[pass option to the literate pre-processor]' \
+ '-optP[pass option to cpp (with -cpp only)]' \
+ '-optF[pass option to the custom pre-processor]' \
+ '-optc[pass option to the C compiler]' \
+ '-optlo[pass option to the LLVM optimiser]' \
+ '-optlc[pass option to the LLVM compiler]' \
+ '-optm[pass option to the mangler]' \
+ '-opta[pass option to the assembler]' \
+ '-optl[pass option to the linker]' \
+ '-optdll[pass option to the DLL generator]' \
+ '-optwindres[pass option to windres.]' \
+ '-prof[Turn on profiling]' \
+ '-pgmL[Use cmd as the literate pre-processor]' \
+ '-pgmP[Use cmd as the C pre-processor (with -cpp only)]' \
+ '-pgmc[Use cmd as the C compiler]' \
+ '-pgms[Use cmd as the splitter]' \
+ '-pgml[Use cmd as the linker]' \
+ '-pgmdll[Use cmd as the DLL generator]' \
+ '-pgmF[Use cmd as the pre-processor (with -F only)]' \
+ '-pgmwindres[Use cmd as the program for embedding manifests on Windows]' \
+ '-pgmlibtool[Use cmd as the command for libtool (with -staticlib only)]' \
+ '-rtsopts[Only a minimum of safe options can be given to RTS]' \
+ '-rtsopts=[Control whether the RTS behavior can be tweaked via command-line flags and the GHCRTS environment variable (none, some, or all)]' \
+ '-with-rtsopts=[Set the default RTS options]' \
+ '-threaded[Use the threaded runtime]' \
+ '-ticky[Turn on ticky-ticky profiling]' \
+ '-tmpdir[Set the directory for temporary files]:directory:_files -/' \
+ '-v-[Control verbosity]:level:(0 1 2 3 4 5)' \
+ '-w[Disable all warnings]' \
+ '-x[Override default behaviour for source files]:suffix:(hs lhs hc c s o hspp)' \
+ '-hcsuf[Set the suffix to use for intermediate]:suffix:' \
+ '-hidir[Set directory for interface files]:directory:_files -/' \
+ '-hisuf[Set the suffix to use for interface files]:suffix:' \
+ '-odir[Set directory for object files]:directory:_files -/' \
+ '-ohi[Set the filename in which to put the interface]:filename:_files -/' \
+ '-osuf[Set the output file suffix]:suffix:' \
+ '-stubdir[Redirect FFi stub files]:directory:_files -/' \
+ '-dumpdir[Redirect dump files]:directory:_files -/' \
+ '-outputdir[Set output directory]:directory:_files -/' \
+ '-keep-hc-files[Retain intermediate .hc files]' \
+ '-keep-llvm-files[Retain intermediate LLVM .ll files]' \
+ '-keep-s-files[Retain intermediate .s files]' \
+ '-keep-raw-s-files[Retain intermediate .raw_s files]' \
+ '-keep-tmp-files[Retain all intermediate temporary files]' \
+ '-static[Use static Haskell libraries]' \
+ '-split-objs[Split objects (for libraries)]' \
+ '-no-link[Omit linking]' \
+ '-main-is[Set main module and function]:function:' \
+ '*-L-[Add dir to the list of directories searched for libraries]:directory:_files -/' \
+ '*-l-[Link in library]:library:->library'
- [[ -n "$state" ]] &&
+ [[ -n "$state" ]] &&
case "$state" in
- ghc_include_directory) _ghc_include_directory ;;
- library)
- _wanted libraries expl library \
+ ghc_include_directory) _ghc_include_directory ;;
+ library)
+ _wanted libraries expl library \
compadd - \
${^=LD_LIBRARY_PATH:-/usr/lib /usr/local/lib}/lib*.(a|so*)(:t:fr:s/lib//) \
- && ret=0
+ && ret=0
esac
}
-
-_ghc_include_directory ()
+_ghc_include_directory()
{
- compset -P '*:'
- compset -S ':*'
- _path_files -r': ' -/
+ compset -P '*:'
+ compset -S ':*'
+ _path_files -r': ' -/
}
-_ghc_compiler_flags ()
+_ghc_compiler_flags()
{
- local _ghc_compiler_flags_list
- _ghc_compiler_flags_list=(
- 'ghci-hist-size:Set the number of entries GHCi keeps for \:history'
- 'print-explicit-foralls:Print explicit forall quantification in types'
- 'print-explicit-kinds:Print explicit kind foralls and kind arguments in types'
- {no-,}'break-on-error:Break on uncaught exceptions and errors'
- {no-,}'break-on-exception:Break on any exception thrown'
- {no-,}'case-merge:Enable case-merging'
- {no-,}'defer-type-errors:Defer as many type errors as possible until runtime'
- {no-,}'dicts-strict:Make dictionaries strict'
- {no-,}'do-eta-reduction:Enable eta-reduction'
- {no-,}'do-lambda-eta-expansion:Enable lambda eta-reduction'
- 'eager-blackholing:Turn on eager blackholing'
- {no-,}'enable-rewrite-rules:Switch on all rewrite rules (including rules generated by automatic specialisation of overloaded functions)'
- 'error-spans:Output full span in error messages'
- 'ext-core:Generate .hcr external Core file'
- 'force-recomp:Turn off recompilation checking'
- {no-,}'float-in:Turn on the float-in transformation'
- {no-,}'full-laziness:Turn on full laziness (floating bindings outwards)'
- {no-,}'fun-to-thunk:Allow worker-wrapper to convert a function closure into a thunk if the function does not use any of its arguments. Off by default.'
- {no-,}'glasgow-exts:Enable most language extensions'
- {no-,}'helpful-errors:Make suggestions for mis-spelled names'
- 'history-size:Set simplification history size'
- {no-,}'ignore-asserts:Ignore assertions in the source'
- {no-,}'ignore-interface-pragmas:Ignore pragmas in interface files'
- {no-,}'loopification:Turn saturated self-recursive tail-calls into local jumps in the generated assembly'
- {no-,}'late-dmd-anal:Run demand analysis again, at the end of the simplification pipeline'
- {no-,}'liberate-case:Turn on the liberate-case transformation'
- 'liberate-case-threshold=:Set the size threshold for the liberate-case transformation (default 200)'
- 'no-liberate-case-threshold:Set the size threshold for the liberate-case transformation (default 200)'
- {no-,}'max-relevant-bindings=N:Set the maximum number of bindings to display in type error messages (default 6).'
- 'max-worker-args=:If a worker has that many arguments, none will be unpacked anymore (default 10)'
- 'max-simplifier-iterations=:Set the max iterations for the simplifier'
- 'no-asm-mangling:Turn off assembly mangling'
- 'no-black-holing:Turn off black holing'
- "no-hi-version-check:Don't complain about .hi file mismatches"
- 'no-implicit-import-qualified:Turn off implicit qualified import of everything in GHCi'
- 'no-print-bind-contents:Turn off printing of binding contents in GHCi'
- 'no-opt-coercion:Turn off the coercion optimiser'
- 'no-ghci-history:Do not use the load/store the GHCi command history from/to ghci_history'
- 'no-ghci-sandbox:Turn off the GHCi sandbox. Means computations are run in the main thread, rather than a forked thread'
- 'no-gen-manifest:Do not generate a manifest file (Windows only)'
- 'no-embed-manifest:Do not embed the manifest in the executable (Windows only)'
- "no-shared-implib:Don't generate an import library for a DLL (Windows only)"
- 'no-pre-inlining:Turn off pre-inlining'
- 'no-state-hack:Turn off the "state hack" whereby any lambda with a real-world state token as argument is considered to be single-entry'
- {no-,}'print-bind-result:Turn on printing of binding results in GHCi'
- {no-,}'print-evld-with-show:Enable usage of Show instances in \:print'
- 'unregisterised:Unregisterised compilation'
- 'asm:Use the native code generator'
- 'via-C:Compile via C'
- 'no-code:Omit code generation'
- 'byte-code:Generate byte-code'
- 'object-code:Generate object code'
- 'hpc:Turn on Haskell program coverage instrumentation'
- 'PIC:Generate position-independent code'
- 'plugin=:Load a plugin exported by a given module'
- 'plugin-opt=:Give arguments to a plugin module'
- 'context-stack=:Set the limit for context reduction (default is 20)'
- 'type-function-depth=:Set the limit for type function reductions (default is 200)'
- 'force-recomp:Turn off recompilation checking'
- {no-,}"omit-interface-pragmas:Don't generate interface pragmas"
- 'package-trust:Enable Safe Haskell trusted package requirement for trustworthy modules'
- {no-,}'pedantic-bottoms:Make GHC be more precise about its treatment of bottom'
- {no-,}'disambiguate-record-fields:Enable record field disambiguation'
- {no-,}'irrefutable-tuples:Make tuple pattern matching irrefutable'
- {no-,}'vectorise:Enable vectorisation of nested data parallelism'
- {no-,}'avoid-vect:Enable vectorisation avoidance'
- {no-,}'excess-precision:Enable excess intermediate precision'
- {no-,}'prof-auto:Auto-add SCCs to all bindings not marked INLINE'
- {no-,}'prof-auto-top:Auto-add SCCs to all top-level bindings not marked INLINE'
- {no-,}'prof-auto-exported:Auto-add SCCs to all exported bindings not marked INLINE'
- {no-,}'prof-cafs:Auto-add SCCs to all CAFs'
- {no-,}'prof-count-entries:Collect entry counts'
- 'simplifier-phases:Set the number of phases for the simplifier (default 2)'
- 'simpl-tick-factor=:Set the percentage factor for simplifier ticks (default 100)'
- {no-,}'spec-constr:Turn on the SpecConstr transformation'
- {no-,}'spec-constr-threshold=:Set the size threshold for the SpecConstr transformation (default 200)'
- {no-,}'spec-constr-count=:Set the maximum number of specialisations that will be created for any one function by the SpecConstr transformation (default 3)'
- 'strictness=before=:Run an additional strictness analysis before a simplifier phase'
- {no-,}'static-argument-transformation:Turn on the static argument transformation'
- {no-,}'unbox-strict-fields:Flatten strict constructor fields'
- {no-,}'unbox-small-strict-fields:Flatten strict constructor fields with a pointer-sized representation'
- {no-,}'unfolding-creation-threshold:Tweak unfolding settings'
- {no-,}'unfolding-fun-discount:Tweak unfolding settings'
- {no-,}'unfolding-keeness-factor:Tweak unfolding settings'
- {no-,}'unfolding-use-threshold:Tweak unfolding settings'
- {no-,}'warn-warnings-deprecations:Warn about uses of functions & types that have warnings or deprecated pragmas'
- {no-,}'warn-deprecated-flags:Warn about uses of commandline flags that are deprecated'
- {no-,}'warn-duplicate-exports:Warn when an entity is exported multiple times'
- {no-,}'warn-hi-shadowing:Warn when a .hi file in the current directory shadows a library'
- {no-,}'warn-implicit-prelude:Warn when the Prelude is implicitly imported'
- {no-,}'warn-incomplete-patterns:Warn when a pattern match could fail'
- {no-,}'warn-incomplete-record-updates:Warn when a record update could fail'
- {no-,}'warn-missing-fields:Warn when fields of a record are uninitialised'
- {no-,}'warn-missing-methods:Warn when class methods are undefined'
- {no-,}'warn-missing-signatures:Warn about top-level functions without signatures'
- {no-,}'warn-duplicate-constraints:Warn when a constraint appears duplicated in a type signature'
- {no-,}'warn-identities:Warn about uses of Prelude numeric conversions that are probably the identity (and hence could be omitted)'
- {no-,}'warn-incomplete-uni-patterns:Warn when a pattern match in a lambda expression or pattern binding could fail'
- {no-,}'warn-lazy-unlifted-bindings:(Deprecated) warn when a pattern binding looks lazy but must be strict'
- {no-,}'warn-missing-import-lists:Warn when an import declaration does not explicitly list all the names brought into scope'
- {no-,}'warn-missing-local-sigs:Warn about polymorphic local bindings without signatures'
- {no-,}'warn-monomorphism-restriction:Warn when the Monomorphism Restriction is applied'
- {no-,}'warn-name-shadowing:Warn when names are shadowed'
- {warn-orphans,warn-auto-orphans}':Warn when the module contains orphan instance declarations or rewrite rules'
- {no-,}'warn-overlapping-patterns:Warn about overlapping patterns'
- {no-,}'warn-tabs:Warn if there are tabs in the source file'
- {no-,}'warn-type-defaults:Warn when defaulting happens'
- {no-,}"warn-unrecognised-pragmas:Warn about uses of pragmas that GHC doesn't recognise"
- {no-,}'warn-unused-binds:Warn about bindings that are unused'
- {no-,}'warn-unused-imports:Warn about unnecessary imports'
- {no-,}"warn-unused-matches:Warn about variables in patterns that aren't used"
- {no-,}'warn-unused-do-bind:Warn about do bindings that appear to throw away values of types other than ()'
- {no-,}'warn-wrong-do-bind:Warn about do bindings that appear to throw away monadic values that you should have bound instead'
- {no-,}'warn-unsafe:Warn if the module being compiled is regarded to be unsafe'
- {no-,}'warn-safe:Warn if the module being compiled is regarded to be safe'
- {no-,}'warn-amp:Warn on definitions conflicting with the Applicative-Monad Proposal (AMP)'
- {no-,}'warn-typed-holes:Enable holes in expressions'
- )
- _describe -t flags 'ghc' _ghc_compiler_flags_list || compadd "$@"
+ local _ghc_compiler_flags_list
+ _ghc_compiler_flags_list=(
+ 'ghci-hist-size:Set the number of entries GHCi keeps for \:history'
+ 'print-explicit-foralls:Print explicit forall quantification in types'
+ 'print-explicit-kinds:Print explicit kind foralls and kind arguments in types'
+ {no-,}'break-on-error:Break on uncaught exceptions and errors'
+ {no-,}'break-on-exception:Break on any exception thrown'
+ {no-,}'case-merge:Enable case-merging'
+ {no-,}'defer-type-errors:Defer as many type errors as possible until runtime'
+ {no-,}'dicts-strict:Make dictionaries strict'
+ {no-,}'do-eta-reduction:Enable eta-reduction'
+ {no-,}'do-lambda-eta-expansion:Enable lambda eta-reduction'
+ 'eager-blackholing:Turn on eager blackholing'
+ {no-,}'enable-rewrite-rules:Switch on all rewrite rules (including rules generated by automatic specialisation of overloaded functions)'
+ 'error-spans:Output full span in error messages'
+ 'ext-core:Generate .hcr external Core file'
+ 'force-recomp:Turn off recompilation checking'
+ {no-,}'float-in:Turn on the float-in transformation'
+ {no-,}'full-laziness:Turn on full laziness (floating bindings outwards)'
+ {no-,}'fun-to-thunk:Allow worker-wrapper to convert a function closure into a thunk if the function does not use any of its arguments. Off by default.'
+ {no-,}'glasgow-exts:Enable most language extensions'
+ {no-,}'helpful-errors:Make suggestions for mis-spelled names'
+ 'history-size:Set simplification history size'
+ {no-,}'ignore-asserts:Ignore assertions in the source'
+ {no-,}'ignore-interface-pragmas:Ignore pragmas in interface files'
+ {no-,}'loopification:Turn saturated self-recursive tail-calls into local jumps in the generated assembly'
+ {no-,}'late-dmd-anal:Run demand analysis again, at the end of the simplification pipeline'
+ {no-,}'liberate-case:Turn on the liberate-case transformation'
+ 'liberate-case-threshold=:Set the size threshold for the liberate-case transformation (default 200)'
+ 'no-liberate-case-threshold:Set the size threshold for the liberate-case transformation (default 200)'
+ {no-,}'max-relevant-bindings=N:Set the maximum number of bindings to display in type error messages (default 6).'
+ 'max-worker-args=:If a worker has that many arguments, none will be unpacked anymore (default 10)'
+ 'max-simplifier-iterations=:Set the max iterations for the simplifier'
+ 'no-asm-mangling:Turn off assembly mangling'
+ 'no-black-holing:Turn off black holing'
+ "no-hi-version-check:Don't complain about .hi file mismatches"
+ 'no-implicit-import-qualified:Turn off implicit qualified import of everything in GHCi'
+ 'no-print-bind-contents:Turn off printing of binding contents in GHCi'
+ 'no-opt-coercion:Turn off the coercion optimiser'
+ 'no-ghci-history:Do not use the load/store the GHCi command history from/to ghci_history'
+ 'no-ghci-sandbox:Turn off the GHCi sandbox. Means computations are run in the main thread, rather than a forked thread'
+ 'no-gen-manifest:Do not generate a manifest file (Windows only)'
+ 'no-embed-manifest:Do not embed the manifest in the executable (Windows only)'
+ "no-shared-implib:Don't generate an import library for a DLL (Windows only)"
+ 'no-pre-inlining:Turn off pre-inlining'
+ 'no-state-hack:Turn off the "state hack" whereby any lambda with a real-world state token as argument is considered to be single-entry'
+ {no-,}'print-bind-result:Turn on printing of binding results in GHCi'
+ {no-,}'print-evld-with-show:Enable usage of Show instances in \:print'
+ 'unregisterised:Unregisterised compilation'
+ 'asm:Use the native code generator'
+ 'via-C:Compile via C'
+ 'no-code:Omit code generation'
+ 'byte-code:Generate byte-code'
+ 'object-code:Generate object code'
+ 'hpc:Turn on Haskell program coverage instrumentation'
+ 'PIC:Generate position-independent code'
+ 'plugin=:Load a plugin exported by a given module'
+ 'plugin-opt=:Give arguments to a plugin module'
+ 'context-stack=:Set the limit for context reduction (default is 20)'
+ 'type-function-depth=:Set the limit for type function reductions (default is 200)'
+ 'force-recomp:Turn off recompilation checking'
+ {no-,}"omit-interface-pragmas:Don't generate interface pragmas"
+ 'package-trust:Enable Safe Haskell trusted package requirement for trustworthy modules'
+ {no-,}'pedantic-bottoms:Make GHC be more precise about its treatment of bottom'
+ {no-,}'disambiguate-record-fields:Enable record field disambiguation'
+ {no-,}'irrefutable-tuples:Make tuple pattern matching irrefutable'
+ {no-,}'vectorise:Enable vectorisation of nested data parallelism'
+ {no-,}'avoid-vect:Enable vectorisation avoidance'
+ {no-,}'excess-precision:Enable excess intermediate precision'
+ {no-,}'prof-auto:Auto-add SCCs to all bindings not marked INLINE'
+ {no-,}'prof-auto-top:Auto-add SCCs to all top-level bindings not marked INLINE'
+ {no-,}'prof-auto-exported:Auto-add SCCs to all exported bindings not marked INLINE'
+ {no-,}'prof-cafs:Auto-add SCCs to all CAFs'
+ {no-,}'prof-count-entries:Collect entry counts'
+ 'simplifier-phases:Set the number of phases for the simplifier (default 2)'
+ 'simpl-tick-factor=:Set the percentage factor for simplifier ticks (default 100)'
+ {no-,}'spec-constr:Turn on the SpecConstr transformation'
+ {no-,}'spec-constr-threshold=:Set the size threshold for the SpecConstr transformation (default 200)'
+ {no-,}'spec-constr-count=:Set the maximum number of specialisations that will be created for any one function by the SpecConstr transformation (default 3)'
+ 'strictness=before=:Run an additional strictness analysis before a simplifier phase'
+ {no-,}'static-argument-transformation:Turn on the static argument transformation'
+ {no-,}'unbox-strict-fields:Flatten strict constructor fields'
+ {no-,}'unbox-small-strict-fields:Flatten strict constructor fields with a pointer-sized representation'
+ {no-,}'unfolding-creation-threshold:Tweak unfolding settings'
+ {no-,}'unfolding-fun-discount:Tweak unfolding settings'
+ {no-,}'unfolding-keeness-factor:Tweak unfolding settings'
+ {no-,}'unfolding-use-threshold:Tweak unfolding settings'
+ {no-,}'warn-warnings-deprecations:Warn about uses of functions & types that have warnings or deprecated pragmas'
+ {no-,}'warn-deprecated-flags:Warn about uses of commandline flags that are deprecated'
+ {no-,}'warn-duplicate-exports:Warn when an entity is exported multiple times'
+ {no-,}'warn-hi-shadowing:Warn when a .hi file in the current directory shadows a library'
+ {no-,}'warn-implicit-prelude:Warn when the Prelude is implicitly imported'
+ {no-,}'warn-incomplete-patterns:Warn when a pattern match could fail'
+ {no-,}'warn-incomplete-record-updates:Warn when a record update could fail'
+ {no-,}'warn-missing-fields:Warn when fields of a record are uninitialised'
+ {no-,}'warn-missing-methods:Warn when class methods are undefined'
+ {no-,}'warn-missing-signatures:Warn about top-level functions without signatures'
+ {no-,}'warn-duplicate-constraints:Warn when a constraint appears duplicated in a type signature'
+ {no-,}'warn-identities:Warn about uses of Prelude numeric conversions that are probably the identity (and hence could be omitted)'
+ {no-,}'warn-incomplete-uni-patterns:Warn when a pattern match in a lambda expression or pattern binding could fail'
+ {no-,}'warn-lazy-unlifted-bindings:(Deprecated) warn when a pattern binding looks lazy but must be strict'
+ {no-,}'warn-missing-import-lists:Warn when an import declaration does not explicitly list all the names brought into scope'
+ {no-,}'warn-missing-local-sigs:Warn about polymorphic local bindings without signatures'
+ {no-,}'warn-monomorphism-restriction:Warn when the Monomorphism Restriction is applied'
+ {no-,}'warn-name-shadowing:Warn when names are shadowed'
+ {warn-orphans,warn-auto-orphans}':Warn when the module contains orphan instance declarations or rewrite rules'
+ {no-,}'warn-overlapping-patterns:Warn about overlapping patterns'
+ {no-,}'warn-tabs:Warn if there are tabs in the source file'
+ {no-,}'warn-type-defaults:Warn when defaulting happens'
+ {no-,}"warn-unrecognised-pragmas:Warn about uses of pragmas that GHC doesn't recognise"
+ {no-,}'warn-unused-binds:Warn about bindings that are unused'
+ {no-,}'warn-unused-imports:Warn about unnecessary imports'
+ {no-,}"warn-unused-matches:Warn about variables in patterns that aren't used"
+ {no-,}'warn-unused-do-bind:Warn about do bindings that appear to throw away values of types other than ()'
+ {no-,}'warn-wrong-do-bind:Warn about do bindings that appear to throw away monadic values that you should have bound instead'
+ {no-,}'warn-unsafe:Warn if the module being compiled is regarded to be unsafe'
+ {no-,}'warn-safe:Warn if the module being compiled is regarded to be safe'
+ {no-,}'warn-amp:Warn on definitions conflicting with the Applicative-Monad Proposal (AMP)'
+ {no-,}'warn-typed-holes:Enable holes in expressions'
+ )
+ _describe -t flags 'ghc' _ghc_compiler_flags_list || compadd "$@"
}
_ghc_debugging_options ()
{
- local _ghc_debugging_options_list
- _ghc_debugging_options_list=(
- "dump-hi:Dump the new interface to stdout"
- "dump-hi-diffs:Show the differences vs. the old interface"
- "dump-minimal-imports:Dump a minimal set of imports"
- "core-lint:Turn on internal sanity checking"
- "dump-asm:Dump assembly"
- "dump-bcos:Dump interpreter byte code"
- "dump-cmm:Dump C-- output"
- "dump-cpranal:Dump output from CPR analysis"
- "dump-cse:Dump CSE output"
- "dump-deriv:Dump deriving output"
- "dump-ds:Dump desugarer output"
- 'dump-flatC:Dump "flat" C'
- "dump-foreign:Dump foreign export stubs"
- "dump-hpc:Dump after instrumentation for program coverage"
- "dump-inlinings:Dump inlining info"
- "dump-occur-anal:Dump occurrence analysis output"
- "dump-opt-cmm:Dump the results of C-- to C-- optimising passes"
- "dump-parsed:Dump parse tree"
- "dump-prep:Dump prepared core"
- "dump-rn:Dump renamer output"
- "dump-rules:Dump rules"
- "dump-simpl:Dump final simplifier output"
- "dump-simpl-phases:Dump output from each simplifier phase"
- "dump-simpl-iterations:Dump output from each simplifier iteration"
- "dump-spec:Dump specialiser output"
- "dump-splices:Dump TH spliced expressions"
- "dump-stg:Dump final STG"
- "dump-stranal:Dump strictness analyser output"
- "dump-tc:Dump typechecker output"
- "dump-types:Dump type signatures"
- "dump-worker-wrapper:Dump worker-wrapper output"
- "dump-if-trace:Trace interface files"
- "dump-tc-trace:Trace typechecker"
- "dump-to-file:Dump to files instead of stdout"
- "dump-core-stats:Print a one-line summary of the size of the Core program at the end of the optimisation pipeline"
- "dump-llvm:Dump LLVM intermediate code"
- "dump-rule-firings:Dump rule firing info"
- "dump-rule-rewrites:Dump detailed rule firing info"
- "dump-vect:Dump vectoriser input and output"
- "dump-strsigs:Dump strictness signatures"
- "dump-vt-trace:Trace vectoriser"
- "dump-rn-trace:Trace renamer"
- "dump-rn-stats:Renamer stats"
- "dump-simpl-stats:Dump simplifier stats"
- "suppress-all:In core dumps, suppress everything (except for uniques) that is suppressible"
- "suppress-uniques:Suppress the printing of uniques in debug output (easier to use diff)"
- "suppress-idinfo:Suppress extended information about identifiers where they are bound"
- "suppress-module-prefixes:Suppress the printing of module qualification prefixes"
- "suppress-type-signatures:Suppress type signatures"
- "suppress-type-applications:Suppress type applications"
- "suppress-coercions:Suppress the printing of coercions in Core dumps to make them shorter"
- "no-debug-output:Suppress unsolicited debugging output"
- "ppr-debug:Turn on debug printing (more verbose)"
- "ppr-noprags:Don't output pragma info in dumps"
- "ppr-user-length:Set the depth for printing expressions in error msgs"
- "ppr-colsNNN:Set the width of debugging output. For example -dppr-cols200"
- "ppr-case-as-let:Print single alternative case expressions as strict lets"
- "source-stats:Dump haskell source stats"
- "cmm-lint:C-- pass sanity checking"
- "stg-lint:STG pass sanity checking"
- "stg-stats:Dump STG stats"
- "verbose-core2core:Show output from each core-to-core pass"
- "verbose-stg2stg:Show output from each STG-to-STG pass"
- "show-passes:Print out each pass name as it happens"
- "faststring-stats:Show statistics for fast string usage when finished"
- )
- _describe -t flags 'ghc' _ghc_debugging_options_list || compadd "$@"
+ local _ghc_debugging_options_list
+ _ghc_debugging_options_list=(
+ "dump-hi:Dump the new interface to stdout"
+ "dump-hi-diffs:Show the differences vs. the old interface"
+ "dump-minimal-imports:Dump a minimal set of imports"
+ "core-lint:Turn on internal sanity checking"
+ "dump-asm:Dump assembly"
+ "dump-bcos:Dump interpreter byte code"
+ "dump-cmm:Dump C-- output"
+ "dump-cpranal:Dump output from CPR analysis"
+ "dump-cse:Dump CSE output"
+ "dump-deriv:Dump deriving output"
+ "dump-ds:Dump desugarer output"
+ 'dump-flatC:Dump "flat" C'
+ "dump-foreign:Dump foreign export stubs"
+ "dump-hpc:Dump after instrumentation for program coverage"
+ "dump-inlinings:Dump inlining info"
+ "dump-occur-anal:Dump occurrence analysis output"
+ "dump-opt-cmm:Dump the results of C-- to C-- optimising passes"
+ "dump-parsed:Dump parse tree"
+ "dump-prep:Dump prepared core"
+ "dump-rn:Dump renamer output"
+ "dump-rules:Dump rules"
+ "dump-simpl:Dump final simplifier output"
+ "dump-simpl-phases:Dump output from each simplifier phase"
+ "dump-simpl-iterations:Dump output from each simplifier iteration"
+ "dump-spec:Dump specialiser output"
+ "dump-splices:Dump TH spliced expressions"
+ "dump-stg:Dump final STG"
+ "dump-stranal:Dump strictness analyser output"
+ "dump-tc:Dump typechecker output"
+ "dump-types:Dump type signatures"
+ "dump-worker-wrapper:Dump worker-wrapper output"
+ "dump-if-trace:Trace interface files"
+ "dump-tc-trace:Trace typechecker"
+ "dump-to-file:Dump to files instead of stdout"
+ "dump-core-stats:Print a one-line summary of the size of the Core program at the end of the optimisation pipeline"
+ "dump-llvm:Dump LLVM intermediate code"
+ "dump-rule-firings:Dump rule firing info"
+ "dump-rule-rewrites:Dump detailed rule firing info"
+ "dump-vect:Dump vectoriser input and output"
+ "dump-strsigs:Dump strictness signatures"
+ "dump-vt-trace:Trace vectoriser"
+ "dump-rn-trace:Trace renamer"
+ "dump-rn-stats:Renamer stats"
+ "dump-simpl-stats:Dump simplifier stats"
+ "suppress-all:In core dumps, suppress everything (except for uniques) that is suppressible"
+ "suppress-uniques:Suppress the printing of uniques in debug output (easier to use diff)"
+ "suppress-idinfo:Suppress extended information about identifiers where they are bound"
+ "suppress-module-prefixes:Suppress the printing of module qualification prefixes"
+ "suppress-type-signatures:Suppress type signatures"
+ "suppress-type-applications:Suppress type applications"
+ "suppress-coercions:Suppress the printing of coercions in Core dumps to make them shorter"
+ "no-debug-output:Suppress unsolicited debugging output"
+ "ppr-debug:Turn on debug printing (more verbose)"
+ "ppr-noprags:Don't output pragma info in dumps"
+ "ppr-user-length:Set the depth for printing expressions in error msgs"
+ "ppr-colsNNN:Set the width of debugging output. For example -dppr-cols200"
+ "ppr-case-as-let:Print single alternative case expressions as strict lets"
+ "source-stats:Dump haskell source stats"
+ "cmm-lint:C-- pass sanity checking"
+ "stg-lint:STG pass sanity checking"
+ "stg-stats:Dump STG stats"
+ "verbose-core2core:Show output from each core-to-core pass"
+ "verbose-stg2stg:Show output from each STG-to-STG pass"
+ "show-passes:Print out each pass name as it happens"
+ "faststring-stats:Show statistics for fast string usage when finished"
+ )
+ _describe -t flags 'ghc' _ghc_debugging_options_list || compadd "$@"
}
-
_ghc_language_flags ()
{
- local _ghc_language_flags_list
- _ghc_language_flags_list=(
- "AllowAmbiguousTypes:Allow the user to write ambiguous types, and the type inference engine to infer them"
- "Arrows:Enable arrow notation extension"
- "AutoDeriveTypeable:Automatically derive Typeable instances for every datatype and type class declaration"
- "BangPatterns:Enable bang patterns"
- "ConstraintKinds:Enable a kind of constraints"
- "CPP:Enable the C preprocessor"
- "ConstrainedClassMethods:Enable constrained class methods"
- "DataKinds:Enable datatype promotion"
- "DefaultSignatures:Enable default signatures"
- "DeriveDataTypeable:Enable deriving for the Data and Typeable classes"
- "DeriveGeneric:Enable deriving for the Generic class"
- "DisambiguateRecordFields:Enable record field disambiguation"
- "EmptyCase:Allow empty case alternatives"
- "EmptyDataDecls:Enable empty data declarations"
- "ExistentialQuantification:Enable existential quantification"
- "ExplicitForAll:Enable explicit universal quantification"
- "ExplicitNamespaces:Enable using the keyword type to specify the namespace of entries in imports and exports"
- "ExtendedDefaultRules:Use GHCi's extended default rules in a normal module"
- "FlexibleContexts:Enable flexible contexts"
- "FlexibleInstances:Enable flexible instances"
- "ForeignFunctionInterface:Enable foreign function interface"
- "FunctionalDependencies:Enable functional dependencies"
- "GADTs:Enable generalised algebraic data types"
- "GADTSyntax:Enable generalised algebraic data type syntax"
- "GeneralizedNewtypeDeriving:Enable newtype deriving"
- "Generics:Enable generic classes"
- "ImplicitParams:Enable Implicit Parameters"
- "ImpredicativeTypes:Enable impredicative types"
- "IncoherentInstances:Enable incoherent instances"
- "InterruptibleFFI:Enable interruptible FFI"
- "KindSignatures:Enable kind signatures"
- "LambdaCase:Enable lambda-case expressions"
- "LiberalTypeSynonyms:Enable liberalised type synonyms"
- "MonadComprehensions:Enable monad comprehensions"
- "MonoLocalBinds:Enable do not generalise local bindings"
- "MultiParamTypeClasses:Enable multi parameter type classes"
- "MultiWayIf:Enable multi-way if-expressions"
- "NamedFieldPuns:Enable record puns"
- "NegativeLiterals:Enable support for negative literals"
- "NewQualifiedOperators:Enable new qualified operator syntax"
- "NoImplicitPrelude:Don't implicitly import Prelude"
- "NoMonoPatBinds:Make pattern bindings polymorphic"
- "NoMonomorphismRestriction:Disable the monomorphism"
- "NoNPlusKPatterns:Disable support for n+k patterns"
- "NoTraditionalRecordSyntax:Disable support for traditional record syntax (as supported by Haskell 98) C {f = x}"
- "NullaryTypeClasses:Enable nullary (no parameter) type classes"
- "NumDecimals:Enable support for 'fractional' integer literals"
- "OverlappingInstances:Enable overlapping instances"
- "OverloadedLists:Enable overloaded lists"
- "OverloadedStrings:Enable overloaded string literals"
- "PArr:Enable parallel arrays"
- "PackageImports:Enable package-qualified imports"
- "ParallelArrays:Enable parallel arrays"
- "ParallelListComp:Enable parallel list comprehensions"
- "PatternGuards:Enable pattern guards"
- "PolyKinds:Enable kind polymorphism"
- "PolymorphicComponents:Enable polymorphic components for data constructors"
- "QuasiQuotes:Enable quasiquotation"
- "Rank2Types:Enable rank-2 types"
- "RankNTypes:Enable rank-N types"
- "RebindableSyntax:Employ rebindable syntax"
- "RecordWildCards:Enable record wildcards"
- "RecursiveDo:Enable recursive do (mdo) notation"
- "RelaxedPolyRec:Relaxed checking for mutually-recursive polymorphic functions"
- "Safe:Enable the Safe Haskell Safe mode"
- "ScopedTypeVariables:Enable lexically-scoped type variables"
- "StandaloneDeriving:Enable standalone deriving"
- "TemplateHaskell:Enable Template Haskell"
- "TransformListComp:Enable transform list comprehensions"
- "TypeFamilies:Enable type families"
- "TypeOperators:Enable type operators"
- "TypeSynonymInstances:Enable type synonyms"
- "Trustworthy:Enable the Safe Haskell Trustworthy mode"
- "UnboxedTuples:Enable unboxed tuples"
- "UndecidableInstances:Enable undecidable instances"
- "UnicodeSyntax:Enable unicode syntax"
- "UnliftedFFITypes:Enable unlifted FFI types"
- "Unsafe:Enable Safe Haskell Unsafe mode"
- "ViewPatterns:Enable view patterns"
- 'MagicHash:Allow "#" as a postfix modifier on identifiers'
- )
- _describe -t flags 'ghc' _ghc_language_flags_list || compadd "$@"
+ local _ghc_language_flags_list
+ _ghc_language_flags_list=(
+ "AllowAmbiguousTypes:Allow the user to write ambiguous types, and the type inference engine to infer them"
+ "Arrows:Enable arrow notation extension"
+ "AutoDeriveTypeable:Automatically derive Typeable instances for every datatype and type class declaration"
+ "BangPatterns:Enable bang patterns"
+ "ConstraintKinds:Enable a kind of constraints"
+ "CPP:Enable the C preprocessor"
+ "ConstrainedClassMethods:Enable constrained class methods"
+ "DataKinds:Enable datatype promotion"
+ "DefaultSignatures:Enable default signatures"
+ "DeriveDataTypeable:Enable deriving for the Data and Typeable classes"
+ "DeriveGeneric:Enable deriving for the Generic class"
+ "DisambiguateRecordFields:Enable record field disambiguation"
+ "EmptyCase:Allow empty case alternatives"
+ "EmptyDataDecls:Enable empty data declarations"
+ "ExistentialQuantification:Enable existential quantification"
+ "ExplicitForAll:Enable explicit universal quantification"
+ "ExplicitNamespaces:Enable using the keyword type to specify the namespace of entries in imports and exports"
+ "ExtendedDefaultRules:Use GHCi's extended default rules in a normal module"
+ "FlexibleContexts:Enable flexible contexts"
+ "FlexibleInstances:Enable flexible instances"
+ "ForeignFunctionInterface:Enable foreign function interface"
+ "FunctionalDependencies:Enable functional dependencies"
+ "GADTs:Enable generalised algebraic data types"
+ "GADTSyntax:Enable generalised algebraic data type syntax"
+ "GeneralizedNewtypeDeriving:Enable newtype deriving"
+ "Generics:Enable generic classes"
+ "ImplicitParams:Enable Implicit Parameters"
+ "ImpredicativeTypes:Enable impredicative types"
+ "IncoherentInstances:Enable incoherent instances"
+ "InterruptibleFFI:Enable interruptible FFI"
+ "KindSignatures:Enable kind signatures"
+ "LambdaCase:Enable lambda-case expressions"
+ "LiberalTypeSynonyms:Enable liberalised type synonyms"
+ "MonadComprehensions:Enable monad comprehensions"
+ "MonoLocalBinds:Enable do not generalise local bindings"
+ "MultiParamTypeClasses:Enable multi parameter type classes"
+ "MultiWayIf:Enable multi-way if-expressions"
+ "NamedFieldPuns:Enable record puns"
+ "NegativeLiterals:Enable support for negative literals"
+ "NewQualifiedOperators:Enable new qualified operator syntax"
+ "NoImplicitPrelude:Don't implicitly import Prelude"
+ "NoMonoPatBinds:Make pattern bindings polymorphic"
+ "NoMonomorphismRestriction:Disable the monomorphism"
+ "NoNPlusKPatterns:Disable support for n+k patterns"
+ "NoTraditionalRecordSyntax:Disable support for traditional record syntax (as supported by Haskell 98) C {f = x}"
+ "NullaryTypeClasses:Enable nullary (no parameter) type classes"
+ "NumDecimals:Enable support for 'fractional' integer literals"
+ "OverlappingInstances:Enable overlapping instances"
+ "OverloadedLists:Enable overloaded lists"
+ "OverloadedStrings:Enable overloaded string literals"
+ "PArr:Enable parallel arrays"
+ "PackageImports:Enable package-qualified imports"
+ "ParallelArrays:Enable parallel arrays"
+ "ParallelListComp:Enable parallel list comprehensions"
+ "PatternGuards:Enable pattern guards"
+ "PolyKinds:Enable kind polymorphism"
+ "PolymorphicComponents:Enable polymorphic components for data constructors"
+ "QuasiQuotes:Enable quasiquotation"
+ "Rank2Types:Enable rank-2 types"
+ "RankNTypes:Enable rank-N types"
+ "RebindableSyntax:Employ rebindable syntax"
+ "RecordWildCards:Enable record wildcards"
+ "RecursiveDo:Enable recursive do (mdo) notation"
+ "RelaxedPolyRec:Relaxed checking for mutually-recursive polymorphic functions"
+ "Safe:Enable the Safe Haskell Safe mode"
+ "ScopedTypeVariables:Enable lexically-scoped type variables"
+ "StandaloneDeriving:Enable standalone deriving"
+ "TemplateHaskell:Enable Template Haskell"
+ "TransformListComp:Enable transform list comprehensions"
+ "TypeFamilies:Enable type families"
+ "TypeOperators:Enable type operators"
+ "TypeSynonymInstances:Enable type synonyms"
+ "Trustworthy:Enable the Safe Haskell Trustworthy mode"
+ "UnboxedTuples:Enable unboxed tuples"
+ "UndecidableInstances:Enable undecidable instances"
+ "UnicodeSyntax:Enable unicode syntax"
+ "UnliftedFFITypes:Enable unlifted FFI types"
+ "Unsafe:Enable Safe Haskell Unsafe mode"
+ "ViewPatterns:Enable view patterns"
+ 'MagicHash:Allow "#" as a postfix modifier on identifiers'
+ )
+ _describe -t flags 'ghc' _ghc_language_flags_list || compadd "$@"
}
#
# ghc-pkg
#
-_ghc_pkg ()
-{
- WORDS=()
- for w in $words[1,(($CURRENT - 1))]; do
- if [[ $w != --* ]]; then WORDS+=$w; fi
- done
- _arguments '*:command:_ghc_pkg_command'
-}
-
-_ghc_pkg_command()
-{
- local -a _ghc_pkg_cmds
- _ghc_pkg_cmds=(
- "register:Register the package using package description"
- "update:Register the package (overwriting existing package)"
- "unregister:Unregister the specified package"
- "expose:Expose the specified package"
- "hide:Hide the specified package"
- "list:List registered packages"
- "find-module:List registered packages exposing module"
- "latest:Prints the highest registered version of a package"
- "check:Check the consistency of package dependencies and list broken packages"
- "describe:Give the registered description for the specified package"
- "field:Extract the specified field of the package description"
- "dump:Dump the registered description for every package"
- )
-
- if (( $#WORDS == 1 )); then
- _describe -t commands 'command' _ghc_pkg_cmds || compadd "$@"
- else
- local curcontext="$curcontext"
- cmd="${${_ghc_pkg_cmds[(r)$WORDS[2]:*]%%:*}}"
- if (( $#cmd )); then
- _arguments \
- "--user[Use current user's package database]" \
- '--global[User the global package database]' \
- {-f,--package-conf=}'[Use the specified package config file]:Package config file:_files' \
- '--no-user-package-conf[Never reader the user package config]' \
- {-V,--version}'[Output version information and exit]' \
- '--force[Ignore missing directories and libraries only]' \
- {-g,--auto-ghci-libs}'[Automatically build libs for GHCi]' \
- {-?,--help}'[Display this help and exit]' \
- '--simple-output[Print output in easy-to-parse format for some commands]' \
- '--names-only[Only print package names, not versions]' \
- '--ignore-case[Ignore case for substring matching]' \
- '*:argument:_ghc_pkg_'$cmd
- else
- _message "unknown ghc-pkg command: $WORDS[2]"
- fi
- fi
-}
-
-_ghc_pkg_unregister () { _ghc_pkg_list_packages }
+_ghc_pkg() {
+ typeset -A opt_args
+ local context state line
-_ghc_pkg_expose () { _ghc_pkg_list_packages }
+ local curcontext="$curcontext"
+ local ret=1
-_ghc_pkg_hide () { _ghc_pkg_list_packages }
+ _arguments -C \
+ '(- *)'{-h,--help}'[Print this usage information]' \
+ '1: :_ghc_pkg_subcommands' \
+ '*:: :->arg' \
+ && ret=0
-_ghc_pkg_latest () { _ghc_pkg_list_packages }
+ case $state in
+ (arg)
+ local -a options=(
+ "--user[use current user's package database]"
+ '--global[user the global package database]'
+ {-f,--package-db=}'[use the specified package database]:database:_files'
+ '--global-package-db[location of the global package database]:dir:_files -/'
+ '(--no-user-package-db --user-package-db)--no-user-package-db[never read the user package database]'
+ '(--no-user-package-db --user-package-db)--user-package-db=[location of the user package database]:database:_files'
+ '--force[ignore missing dependencies, directories and libraries]'
+ '--force-files[ignore missing directories and libraries only]'
+ '--enable-multi-instance[allow registering multiple instances of the same package version]'
+ '--expand-env-vars[expand environment variables in input package descriptions]'
+ '(--expand-pkgroot --no-expand-pkgroot)--expand-pkgroot[expand pkgroot-relative paths in output package descriptions]'
+ '(--expand-pkgroot --no-expand-pkgroot)--no-expand-pkgroot[preserve pkgroot-relative paths in output package descriptions]'
+ '(- *)'{-?,--help}'[display this help and exit]'
+ '(- *)'{-V,--version}'[output version information and exit]'
+ '--simple-output[print output in easy-to-parse format for some commands]'
+ '--show-unit-ids[print unit-ids instead of package identifiers]'
+ '--names-only[only print package names, not versions]'
+ '--ignore-case[ignore case for substring matching]'
+ {--ipid,--unit-id}'[interpret package arguments as unit IDs]'
+ {-V,--verbose=-}'[verbosity level]:level:(0 1 2)'
+ )
+ case $words[1] in
+ (init|register|update)
+ options+=('*: :_files')
+ ;;
+ (unregister|expose|hide|trust|distrust|list|latest|describe)
+ options+=('*: :_ghc_pkg_list_packages')
+ ;;
+ (field)
+ options+=('*: :_ghc_pkg_field')
+ ;;
+ (find-module)
+ options+=('*: :_ghc_pkg_find-module')
+ ;;
+ esac
-_ghc_pkg_describe () { _ghc_pkg_list_packages }
+ _arguments $options && ret=0
+ ;;
+ esac
-_ghc_pkg_field ()
-{
- _ghc_pkg_available_packages
- if (( $#WORDS == 2 )); then
- compadd "$@" -a -- _ghc_pkg_packages
- elif (( $#WORDS == 3 )); then
- compset -P '*,'
- compset -S ',*'
- compadd "$@" -S ',' -q -- \
- name version license copyright maintainer \
- stability homepage package-url description \
- category author exposed exposed-modules \
- hidden-modules import-dirs hs-libraries \
- extra-libraries extra-ghci-libraries include-dirs \
- includes depends hugs-options cc-options ld-options \
- framework-dirs frameworks haddock-interfaces \
- haddock-html
- fi
+ return ret
}
-_ghc_pkg_register () { _files }
-
-_ghc_pkg_update () { _files }
+_ghc_pkg_subcommands() {
+ local -a subcommands=(
+ "init:Create and initialize a package database at the given location"
+ "register:Register the package using package description"
+ "update:Register the package (overwriting existing package)"
+ "unregister:Unregister the specified package"
+ "expose:Expose the specified package"
+ "hide:Hide the specified package"
+ "trust:Trust the specified package"
+ "list:List registered packages"
+ "dot:Generate a graph of the package dependencies in a form suitable"
+ "find-module:List registered packages exposing module"
+ "latest:Prints the highest registered version of a package"
+ "check:Check the consistency of package dependencies and list broken packages"
+ "describe:Give the registered description for the specified package"
+ "field:Extract the specified field of the package description"
+ "dump:Dump the registered description for every package"
+ "recache:Regenerate the package database cache"
+ )
+ _describe -t subcommands 'subcommand' subcommands "$@"
+}
-_ghc_pkg_list () { _ghc_pkg_list_packages }
+_ghc_pkg_field() {
+ _ghc_pkg_available_packages
-_ghc_pkg_find-module ()
-{
- if (( $#WORDS == 2)); then
- if ( [[ ${+_ghc_modules} -eq 0 ]] || _cache_invalid GHC_MODULES ) &&
- ! _retrieve_cache GHC_MODULES;
- then
- _ghc_modules=( $(ghc-pkg dump | sed -n '/^exposed-modules:/{s/^exposed-modules:[ ]\+\(.*\)$/\1/;s/ /\n/;p;be};b;:e;n;/^ /{s/^[ ]\+\(.*\)$/\1/;s/ /\n/;p;be}') )
- _store_cache GHC_MODULES _ghc_modules
- fi
- compadd "$@" -a -- _ghc_modules
- fi
+ _arguments \
+ '1:package:_values $_ghc_pkg_packages' \
+ '2:field:_ghc_pkg_field_fields'
}
-_ghc_pkg_dump () {}
+_ghc_pkg_field_fields() {
+ local -a fields=(
+ name version visibility id key license copyright
+ maintainer author homepage synopsis description
+ category abi exposed exposed-modules hidden-modules
+ import-dirs library-dirs library-dirs-static dynamic-library-dirs
+ data-dir hs-libraries depends haddoc-interfaces haddoc-html pkgroot)
-_ghc_pkg_check () {}
+ _values -s ',' $fields
+}
-_ghc_pkg_available_packages ()
+_ghc_pkg_find-module()
{
- if ( [[ ${+_ghc_pkg_packages_pkgs} -eq 0 ]] || _cache_invalid GHC_PACKAGES ) &&
- ! _retrieve_cache GHC_PACKAGES;
+ if (( $#WORDS == 2)); then
+ if ( [[ ${+_ghc_modules} -eq 0 ]] || _cache_invalid GHC_MODULES ) &&
+ ! _retrieve_cache GHC_MODULES;
then
- _ghc_pkg_packages=( $(ghc-pkg list --simple-output --names-only) )
- _store_cache GHC_PACKAGES _ghc_pkg_packages
+ _ghc_modules=( $(ghc-pkg dump | sed -n '/^exposed-modules:/{s/^exposed-modules:[ ]\+\(.*\)$/\1/;s/ /\n/;p;be};b;:e;n;/^ /{s/^[ ]\+\(.*\)$/\1/;s/ /\n/;p;be}') )
+ _store_cache GHC_MODULES _ghc_modules
fi
+ compadd "$@" -a -- _ghc_modules
+ fi
}
-_ghc_pkg_list_packages ()
+_ghc_pkg_available_packages()
{
- _ghc_pkg_available_packages
- compadd "$@" -a -- _ghc_pkg_packages
+ if ( [[ ${+_ghc_pkg_packages_pkgs} -eq 0 ]] || _cache_invalid GHC_PACKAGES ) &&
+ ! _retrieve_cache GHC_PACKAGES;
+ then
+ _ghc_pkg_packages=( $(ghc-pkg list --simple-output --names-only) )
+ _store_cache GHC_PACKAGES _ghc_pkg_packages
+ fi
}
+_ghc_pkg_list_packages()
+{
+ _ghc_pkg_available_packages
+ compadd "$@" -a -- _ghc_pkg_packages
+}
#
# dispatcher
#
-
case $service in
- ghc)
- _ghc_compiler
- ;;
- ghci)
- _ghc_ghci
- ;;
- ghc-pkg)
- _ghc_pkg
- ;;
+ ghc)
+ _ghc_compiler
+ ;;
+ ghci)
+ _ghc_ghci
+ ;;
+ ghc-pkg)
+ _ghc_pkg
+ ;;
esac
+
+# Local Variables:
+# mode: Shell-Script
+# sh-indentation: 2
+# indent-tabs-mode: nil
+# sh-basic-offset: 2
+# End:
+# vim: ft=zsh sw=2 ts=2 et