1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 02:20:21 -08:00

* lisp/emacs-lisp/testcover.el: Don't use edebug--read (bug#20487)

* lisp/emacs-lisp/testcover.el: Use lexical-binding.
(testcover--read): Rename from testcover-read.  Change calling convention.
Use edebug-read-and-maybe-wrap-form now that edebug-read is gone.
(testcover-start): Use add-function.  Move edebug-all-defs binding to
testcover--read.
(testcover-this-defun): Tighten scope of edebug-all-defs binding.
(testcover-mark): Remove unused var `item'.

* src/lread.c (syms_of_lread): Default load-read-function to `read'.
This commit is contained in:
Stefan Monnier 2015-05-06 10:50:48 -04:00
parent 1f052a5f26
commit 1340aefd96
3 changed files with 21 additions and 14 deletions

View file

@ -1,4 +1,4 @@
;;;; testcover.el -- Visual code-coverage tool
;;;; testcover.el -- Visual code-coverage tool -*- lexical-binding:t -*-
;; Copyright (C) 2002-2015 Free Software Foundation, Inc.
@ -191,8 +191,9 @@ problems with type-ahead or post-command-hook, etc. If BYTE-COMPILE is
non-nil, byte-compiles each function after instrumenting."
(interactive "fStart covering file: ")
(let ((buf (find-file filename))
(load-read-function 'testcover-read)
(edebug-all-defs t))
(load-read-function load-read-function))
(add-function :around load-read-function
#'testcover--read)
(setq edebug-form-data nil
testcover-module-constants nil
testcover-module-1value-functions nil)
@ -207,22 +208,26 @@ non-nil, byte-compiles each function after instrumenting."
(defun testcover-this-defun ()
"Start coverage on function under point."
(interactive)
(let* ((edebug-all-defs t)
(x (symbol-function (eval-defun nil))))
(let ((x (let ((edebug-all-defs t))
(symbol-function (eval-defun nil)))))
(testcover-reinstrument x)
x))
(defun testcover-read (&optional stream)
(defun testcover--read (orig &optional stream)
"Read a form using edebug, changing edebug callbacks to testcover callbacks."
(let ((x (edebug-read stream)))
(testcover-reinstrument x)
x))
(or stream (setq stream standard-input))
(if (eq stream (current-buffer))
(let ((x (let ((edebug-all-defs t))
(edebug-read-and-maybe-wrap-form))))
(testcover-reinstrument x)
x)
(funcall (or orig #'read) stream)))
(defun testcover-reinstrument (form)
"Reinstruments FORM to use testcover instead of edebug. This
function modifies the list that FORM points to. Result is nil if
FORM should return multiple values, t if should always return same
value, 'maybe if either is acceptable."
value, `maybe' if either is acceptable."
(let ((fun (car-safe form))
id val)
(cond
@ -495,7 +500,7 @@ eliminated by adding more test cases."
(len (length points))
(changed (buffer-modified-p))
(coverage (get def 'edebug-coverage))
ov j item)
ov j)
(or (and def-mark points coverage)
(error "Missing edebug data for function %s" def))
(when (> len 0)