 is only semantic after a semantic trigger."
   :type 'list)
 
-(defvar-local ycmd-eldoc--cache nil)
+(defvar-local ycmd-eldoc--cache (make-vector 2 nil))
 
 (defvar-local ycmd-eldoc--get-type-supported-p t)
 


(defun ycmd-eldoc--teardown ()
  "Reset `ycmd-eldoc--cache'."
  (setq ycmd-eldoc--cache nil)
  (setq ycmd-eldoc--get-type-supported-p t))

;;;###autoload

(defun ycmd-eldoc--info-at-point ()
  "Get function info at point."
  (let ((symbol (ycmd-eldoc--with-point-at-func-name (symbol-at-point))))
    (if (and symbol (eq symbol (aref ycmd-eldoc--cache 0)))
        (aref ycmd-eldoc--cache 1)
      (deferred:$
        (deferred:next
          (lambda ()
