From 610dad1102cba5fa6111050d30c734b51bcdb77d Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Sun, 7 Jan 2018 14:14:38 +0100 Subject: [PATCH] Revert "Prevent name clashes between CL structures and builtin types" This reverts commit 151496a4b96430924bc148f85b9c8471d1e132b1. That commit breaks bootstrap builds due to a cyclic dependency. --- etc/NEWS | 4 --- lisp/emacs-lisp/cl-macs.el | 4 --- lisp/emacs-lisp/cl-preloaded.el | 8 ------ test/lisp/emacs-lisp/cl-macs-tests.el | 9 ------ test/lisp/emacs-lisp/cl-preloaded-tests.el | 33 ---------------------- 5 files changed, 58 deletions(-) delete mode 100644 test/lisp/emacs-lisp/cl-preloaded-tests.el diff --git a/etc/NEWS b/etc/NEWS index 4eb620105ad..c5a4bc3344b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -190,10 +190,6 @@ calling 'eldoc-message' directly. ** Old-style backquotes now generate an error. They have been generating warnings for a decade. -** Defining a Common Lisp structure using 'cl-defstruct' or -'cl-struct-define' whose name clashes with a builtin type (e.g., -'integer' or 'hash-table') now signals an error. - * Lisp Changes in Emacs 27.1 diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 05cb9b091d9..16f33282bae 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -43,7 +43,6 @@ ;;; Code: -(require 'cl-generic) (require 'cl-lib) (require 'macroexp) ;; `gv' is required here because cl-macs can be loaded before loaddefs.el. @@ -2664,9 +2663,6 @@ non-nil value, that slot cannot be set via `setf'. (forms nil) (docstring (if (stringp (car descs)) (pop descs))) pred-form pred-check) - ;; Can't use `cl-check-type' yet. - (unless (cl--struct-name-p name) - (signal 'wrong-type-argument (list 'cl-struct-name-p name 'name))) (setq descs (cons '(cl-tag-slot) (mapcar (function (lambda (x) (if (consp x) x (list x)))) descs))) diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el index 33a1438f690..4e73a4a31b7 100644 --- a/lisp/emacs-lisp/cl-preloaded.el +++ b/lisp/emacs-lisp/cl-preloaded.el @@ -36,7 +36,6 @@ ;;; Code: -(eval-when-compile (require 'cl-generic)) (eval-when-compile (require 'cl-lib)) (eval-when-compile (require 'cl-macs)) ;For cl--struct-class. @@ -51,12 +50,6 @@ (apply #'error string (append sargs args)) (signal 'cl-assertion-failed `(,form ,@sargs))))) -(defun cl--struct-name-p (name) - "Return t if NAME is a valid structure name for `cl-defstruct'." - (and name (symbolp name) (not (keywordp name)) - (not (memq name (eval-when-compile cl--generic-all-builtin-types))) - t)) - ;; When we load this (compiled) file during pre-loading, the cl--struct-class ;; code below will need to access the `cl-struct' info, since it's considered ;; already as its parent (because `cl-struct' was defined while the file was @@ -117,7 +110,6 @@ ;;;###autoload (defun cl-struct-define (name docstring parent type named slots children-sym tag print) - (cl-check-type name cl--struct-name) (unless type ;; Legacy defstruct, using tagged vectors. Enable backward compatibility. (cl-old-struct-compat-mode 1)) diff --git a/test/lisp/emacs-lisp/cl-macs-tests.el b/test/lisp/emacs-lisp/cl-macs-tests.el index 9236ac73b50..f0bde7af397 100644 --- a/test/lisp/emacs-lisp/cl-macs-tests.el +++ b/test/lisp/emacs-lisp/cl-macs-tests.el @@ -497,13 +497,4 @@ collection clause." vconcat (vector (1+ x))) [2 3 4 5 6]))) - -(ert-deftest cl-defstruct/builtin-type () - (should-error - (macroexpand '(cl-defstruct hash-table)) - :type 'wrong-type-argument) - (should-error - (macroexpand '(cl-defstruct (hash-table (:predicate hash-table-p)))) - :type 'wrong-type-argument)) - ;;; cl-macs-tests.el ends here diff --git a/test/lisp/emacs-lisp/cl-preloaded-tests.el b/test/lisp/emacs-lisp/cl-preloaded-tests.el deleted file mode 100644 index 008a6e629f5..00000000000 --- a/test/lisp/emacs-lisp/cl-preloaded-tests.el +++ /dev/null @@ -1,33 +0,0 @@ -;;; cl-preloaded-tests.el --- unit tests for cl-preloaded.el -*- lexical-binding: t; -*- - -;; Copyright (C) 2017 Free Software Foundation, Inc. -;; Author: Philipp Stephani - -;; This file is part of GNU Emacs. - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; Unit tests for lisp/emacs-lisp/cl-preloaded.el. - -;;; Code: - -(ert-deftest cl-struct-define/builtin-type () - (should-error - (cl-struct-define 'hash-table nil nil 'record nil nil - 'cl-preloaded-tests-tag 'cl-preloaded-tests nil) - :type 'wrong-type-argument)) - -;;; cl-preloaded-tests.el ends here -- 2.39.2