summaryrefslogtreecommitdiff
path: root/lisp/progmodes/xref.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/progmodes/xref.el')
-rw-r--r--lisp/progmodes/xref.el14
1 files changed, 14 insertions, 0 deletions
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index f4716fe9a64..0d51019f735 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -74,6 +74,20 @@
(require 'ring)
(require 'project)
+(eval-and-compile
+ (when (version< emacs-version "28")
+ ;; etags.el in Emacs 26 and 27 uses EIEIO, and its location type
+ ;; inherits from `xref-location'.
+ (require 'eieio)
+
+ ;; Suppressing byte-compilation warnings (in Emacs 28+) about
+ ;; `defclass' not being defined, which happens because the
+ ;; `require' statement above is not evaluated either.
+ ;; FIXME: Use `with-suppressed-warnings' when we stop supporting Emacs 26.
+ (with-no-warnings
+ (defclass xref-location () ()
+ :documentation "(Obsolete) location represents a position in a file or buffer."))))
+
(defgroup xref nil "Cross-referencing commands."
:version "25.1"
:group 'tools)