#compdef zcompile

local state line expl curcontext="$curcontext" ret=1
typeset -A opt_args

_arguments -C -s -A "-*" -S \
    '(-t -c -m -a)-U[don'\''t expand aliases]' \
    '(-t -M)-R[mark as read]' \
    '(-t -R)-M[mark as mapped]' \
    '(-t -c -z -m -a)-k[ksh-style autoloading]' \
    '(-t -c -k -m -a)-z[zsh-style autoloading]' \
    '(-t -U -z -k)-c[currently defined functions]' \
    '(-t -U -z -k)-m[use names as patterns]' \
    '(-t -U -z -k)-a[write autoload functions]' \
    '(-M -R -U -z -k -a -c -m)-t[show table of contents]' \
    ':zwc file:_files' \
    '*:function:->function' && ret=0

if (( $+opt_args[-c] )); then
  _wanted functions expl 'function to write' compadd -k functions && ret=0
else
  _description files expl 'zsh source file'
  _files "$expl[@]" && ret=0
fi

return ret
