mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef swift swiftc
 | |
| 
 | |
| # swift(1) and swiftc(1) are part of the Swift programming language.
 | |
| # https://swift.org/
 | |
| 
 | |
| local -a common_options swiftc_mode_options swiftc_additional_options
 | |
| local -A swiftc_modes
 | |
| 
 | |
| common_options=(
 | |
|   '-assert-config[specify the assert_configuration replacement]:config:(Debug Release Unchecked DisableReplacement)'
 | |
|   '*-D[marks a conditional compilation flag as true]:flag:'
 | |
|   '*-framework[specifies a framework which should be linked against]:framework:'
 | |
|   '*-F[add directory to framework search path]:path:_files -/'
 | |
|   '(-gnone)-gdwarf-types[emit full DWARF type info]'
 | |
|   '(-gnone)-gline-tables-only[emit minimal debug info for backtraces only]'
 | |
|   '(-gdwarf-types -gline-tables-only -g)-gnone[do not emit debug info]'
 | |
|   '(-gnone)-g[emit debug info]'
 | |
|   '(- : *)-help[display available options]'
 | |
|   '-index-store-path[store indexing data to the specified path]:directory:_files -/'
 | |
|   '*-I[add directory to the import search path]:path:_files -/'
 | |
|   '-j[number of commands to execute in parallel]:count:'
 | |
|   '*-L[add directory to library link search path]:path:_files -/'
 | |
|   '*-l-[specifies a library which should be linked against]:library:'
 | |
|   '-module-cache-path[specifies the Clang module cache path]:path:_files -/'
 | |
|   '-module-link-name[library to link against when using this module]:name:'
 | |
|   '-module-name[name of the module to build]:name:'
 | |
|   '-nostdimport[do not search the standard library import path for modules]'
 | |
|   '-num-threads[enable multi-threading and specify number of threads]:count:'
 | |
|   '(-Ounchecked -O)-Onone[compile without any optimization]'
 | |
|   '(-Onone)-Ounchecked[compile with optimizations and remove runtime safety checks]'
 | |
|   '(-Onone)-O[compile with optimizations]'
 | |
|   '-sdk[compile against SDK]:sdk:_files -/'
 | |
|   '-static-stdlib[statically link the Swift standard library]'
 | |
|   '-suppress-warnings[suppress all warnings]'
 | |
|   '-target-cpu[generate code for a particular CPU variant]:cpu'
 | |
|   '-target[generate code for the given target]:target'
 | |
|   '-use-ld=-[specifies the linker to be used]:linker:_files -/'
 | |
|   '(- : *)-version[print version information and exit]'
 | |
|   '-v[show commands to run and use verbose output]'
 | |
|   '-warnings-as-errors[treat warnings as errors]'
 | |
|   '*-Xcc[pass argument to the C/C++/Objective-C compiler]:arg:'
 | |
|   '*-Xlinker[specifies an option which should be passed to the linker]:option:'
 | |
| )
 | |
| 
 | |
| swiftc_modes=(
 | |
|   -dump-ast        'parse and type-check input file(s) and dump AST(s)'
 | |
|   -dump-parse      'parse input file(s) and dump AST(s)'
 | |
|   -dump-type-refinement-contexts
 | |
|                    'type-check input file(s) and dump type refinement contexts(s)'
 | |
|   -emit-assembly   'emit assembly file(s) (-S)'
 | |
|   -emit-bc         'emit LLVM BC file(s)'
 | |
|   -emit-executable 'emit a linked executable'
 | |
|   -emit-ir         'emit LLVM IR file(s)'
 | |
|   -emit-library    'emit a linked library'
 | |
|   -emit-object     'emit object file(s) (-c)'
 | |
|   -emit-sibgen     'emit serialized AST + raw SIL file(s)'
 | |
|   -emit-sib        'emit serialized AST + canonical SIL file(s)'
 | |
|   -emit-silgen     'emit raw SIL file(s)'
 | |
|   -emit-sil        'emit canonical SIL file(s)'
 | |
|   -parse           'parse input file(s)'
 | |
|   -print-ast       'parse and type-check input file(s) and pretty print AST(s)'
 | |
| )
 | |
| local mode
 | |
| for mode in ${(k)swiftc_modes}; do
 | |
|   # Mode options are mutually exclusive
 | |
|   swiftc_mode_options+=("(${(k)swiftc_modes})${mode}[$swiftc_modes[$mode]]")
 | |
| done
 | |
| 
 | |
| swiftc_additional_options=(
 | |
|   '-application-extension[restrict code to those available for App Extensions]'
 | |
|   '-embed-bitcode-marker[embed placeholder LLVM IR data as a marker]'
 | |
|   '-embed-bitcode[embed LLVM IR bitcode as data]'
 | |
|   '-emit-dependencies[emit basic Make-compatible dependencies files]'
 | |
|   '-emit-module-path[emit an importable module to the specified path]:path:_files -/'
 | |
|   '-emit-module[emit an importable module]'
 | |
|   '-emit-objc-header-path[emit an Objective-C header file to the specified path]:path:_files -/'
 | |
|   '-emit-objc-header[emit an Objective-C header file]'
 | |
|   '-fixit-all[apply all fixits from diagnostics without any filtering]'
 | |
|   '-fixit-code[get compiler fixits as code edits]'
 | |
|   '-import-underlying-module[implicitly imports the Objective-C half of a module]'
 | |
|   '-output-file-map[a file which specifies the location of outputs]:path:_files'
 | |
|   '-o[write output to specified file]:path:_files'
 | |
|   '-parse-as-library[parse the input file(s) as libraries, not scripts]'
 | |
|   '-parse-sil[parse the input file as SIL code, not Swift source]'
 | |
|   '-parseable-output[emit textual output in a parseable format]'
 | |
|   '-profile-coverage-mapping[generate coverage data for use with profiled execution counts]'
 | |
|   '-profile-generate[generate instrumented code to collect execution counts]'
 | |
|   '-sanitize-coverage=-[specify the type of coverage instrumentation for Sanitizers and additional options separated by commas]:type:'
 | |
|   '*-sanitize=-[turn on runtime checks for erroneous behavior]:check:'
 | |
|   '-save-temps[save intermediate compilation results]'
 | |
|   '-serialize-diagnostics[serialize diagnostics in a binary format]'
 | |
|   '-tools-directory[look for external executables (ld, clang, binutils) in the specified directory]:directory:_files -/'
 | |
|   '-whole-module-optimization[optimize input files together instead of individually]'
 | |
| )
 | |
| 
 | |
| case "$words[1]" in
 | |
|   swift)
 | |
|     # The name swift conflicts with the command with the same name from the
 | |
|     # OpenStack project. We delegate completion to _openstack if swift(1) is
 | |
|     # detected to be from OpenStack.
 | |
|     local variant
 | |
|     _pick_variant -r variant openstack=OpenStack swiftlang='Swift compiler' unknown --help
 | |
|     case $variant in
 | |
|       openstack)
 | |
|         _openstack "$@"
 | |
|         ;;
 | |
|       swiftlang)
 | |
|         _arguments \
 | |
|             "$common_options[@]" \
 | |
|             '*:input:_files'
 | |
|         ;;
 | |
|       *)
 | |
|         _default "$@"
 | |
|     esac
 | |
|     ;;
 | |
|   swiftc)
 | |
|     _arguments \
 | |
|         "$swiftc_mode_options[@]" \
 | |
|         "$common_options[@]" \
 | |
|         "$swiftc_additional_options[@]" \
 | |
|         '*:input:_files'
 | |
|     ;;
 | |
| esac
 |