diff options
| author | Helmut Eller | 2023-08-03 08:33:40 +0200 |
|---|---|---|
| committer | Mattias EngdegÄrd | 2023-08-08 18:23:00 +0200 |
| commit | 3e79fd3d4e810c2ef4cf9925a747c93e036fddca (patch) | |
| tree | a978150f0fbeca9823e3d89d54ea1886558cef65 /test | |
| parent | efb3ef0fe07a1fe8c713921ceba74f476c8aa40b (diff) | |
| download | emacs-3e79fd3d4e810c2ef4cf9925a747c93e036fddca.tar.gz emacs-3e79fd3d4e810c2ef4cf9925a747c93e036fddca.zip | |
Check keyword args of make-process
The functions make-process and make-network-process have many
keyword args and it's easy to misspell some of them.
Use a compiler macro to warn about some possible mistakes.
* lisp/emacs-lisp/bytecomp.el (bytecomp--check-keyword-args): New
helper.
(make-process, make-network-process): Define a compiler macro that
performs some checks but doesn't anything else.
* test/lisp/emacs-lisp/bytecomp-tests.el: Add some tests.
* test/lisp/emacs-lisp/bytecomp-resources/:
(warn-make-process-missing-keyword-arg.el,
warn-make-process-missing-keyword-value.el,
warn-make-process-repeated-keyword-arg.el,
warn-make-process-unknown-keyword-arg.el): New test files
Diffstat (limited to 'test')
5 files changed, 29 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-arg.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-arg.el new file mode 100644 index 00000000000..9369e78ff54 --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-arg.el | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | ;;; -*- lexical-binding: t -*- | ||
| 2 | (defun foo () | ||
| 3 | (make-process :name "ls")) | ||
diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-value.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-value.el new file mode 100644 index 00000000000..4226349afef --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-value.el | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | ;;; -*- lexical-binding: t -*- | ||
| 2 | (defun foo () | ||
| 3 | (make-process :name "ls" :command)) | ||
diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-repeated-keyword-arg.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-repeated-keyword-arg.el new file mode 100644 index 00000000000..18250f14ee9 --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-repeated-keyword-arg.el | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | ;;; -*- lexical-binding: t -*- | ||
| 2 | (defun foo () | ||
| 3 | (make-process :name "ls" :command "ls" :name "ls")) | ||
diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-unknown-keyword-arg.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-unknown-keyword-arg.el new file mode 100644 index 00000000000..4721035780b --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-unknown-keyword-arg.el | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | ;;; -*- lexical-binding: t -*- | ||
| 2 | (defun foo () | ||
| 3 | (make-process :name "ls" :command "ls" | ||
| 4 | :coding-system 'binary)) | ||
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index 19e08e8d199..26325c1ef11 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el | |||
| @@ -1204,6 +1204,22 @@ byte-compiled. Run with dynamic binding." | |||
| 1204 | "nowarn-inline-after-defvar.el" | 1204 | "nowarn-inline-after-defvar.el" |
| 1205 | "Lexical argument shadows" 'reverse) | 1205 | "Lexical argument shadows" 'reverse) |
| 1206 | 1206 | ||
| 1207 | (bytecomp--define-warning-file-test | ||
| 1208 | "warn-make-process-missing-keyword-arg.el" | ||
| 1209 | "called without required keyword argument :command") | ||
| 1210 | |||
| 1211 | (bytecomp--define-warning-file-test | ||
| 1212 | "warn-make-process-unknown-keyword-arg.el" | ||
| 1213 | "called with unknown keyword argument :coding-system") | ||
| 1214 | |||
| 1215 | (bytecomp--define-warning-file-test | ||
| 1216 | "warn-make-process-repeated-keyword-arg.el" | ||
| 1217 | "called with repeated keyword argument :name") | ||
| 1218 | |||
| 1219 | (bytecomp--define-warning-file-test | ||
| 1220 | "warn-make-process-missing-keyword-value.el" | ||
| 1221 | "missing value for keyword argument :command") | ||
| 1222 | |||
| 1207 | 1223 | ||
| 1208 | ;;;; Macro expansion. | 1224 | ;;;; Macro expansion. |
| 1209 | 1225 | ||