diff options
| author | Philipp Stephani | 2020-01-05 16:05:14 +0100 |
|---|---|---|
| committer | Philipp Stephani | 2020-01-05 16:07:28 +0100 |
| commit | fc92c2d8942cf466aa6dbc422f2e798801b18408 (patch) | |
| tree | ddf5bc386ba474733db39de3d23f76c8563ebd4b /test/data | |
| parent | 9d38564cdde8cbe9d4c08a7ffef7f25e9692814a (diff) | |
| download | emacs-fc92c2d8942cf466aa6dbc422f2e798801b18408.tar.gz emacs-fc92c2d8942cf466aa6dbc422f2e798801b18408.zip | |
Also print function data when printing module functions.
This is especially useful in cases where modules only use a single
entry point and use the data to dispatch to the actual function. Such
a design is common for languages such as Go and C++.
* src/emacs-module.c (module_function_data): New function.
* src/print.c (print_vectorlike): Use it to print module function data
if not NULL.
(print_object): Adapt size of buffer.
* test/data/emacs-module/mod-test.c (emacs_module_init): Pass some
non-NULL data to ‘mod-test-sum’.
(Fmod_test_sum): Check that correct data is passed through.
* test/src/emacs-module-tests.el (mod-test-sum-test)
(module-function-object): Adapt unit tests.
Diffstat (limited to 'test/data')
| -rw-r--r-- | test/data/emacs-module/mod-test.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/test/data/emacs-module/mod-test.c b/test/data/emacs-module/mod-test.c index 1a0a879a1bc..ec6948921f2 100644 --- a/test/data/emacs-module/mod-test.c +++ b/test/data/emacs-module/mod-test.c | |||
| @@ -24,6 +24,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | |||
| 24 | 24 | ||
| 25 | #include <errno.h> | 25 | #include <errno.h> |
| 26 | #include <limits.h> | 26 | #include <limits.h> |
| 27 | #include <stdint.h> | ||
| 27 | #include <stdio.h> | 28 | #include <stdio.h> |
| 28 | #include <stdlib.h> | 29 | #include <stdlib.h> |
| 29 | #include <string.h> | 30 | #include <string.h> |
| @@ -86,6 +87,7 @@ static emacs_value | |||
| 86 | Fmod_test_sum (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data) | 87 | Fmod_test_sum (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data) |
| 87 | { | 88 | { |
| 88 | assert (nargs == 2); | 89 | assert (nargs == 2); |
| 90 | assert ((uintptr_t) data == 0x1234); | ||
| 89 | 91 | ||
| 90 | intmax_t a = env->extract_integer (env, args[0]); | 92 | intmax_t a = env->extract_integer (env, args[0]); |
| 91 | intmax_t b = env->extract_integer (env, args[1]); | 93 | intmax_t b = env->extract_integer (env, args[1]); |
| @@ -587,7 +589,8 @@ emacs_module_init (struct emacs_runtime *ert) | |||
| 587 | env->make_function (env, amin, amax, csym, doc, data)) | 589 | env->make_function (env, amin, amax, csym, doc, data)) |
| 588 | 590 | ||
| 589 | DEFUN ("mod-test-return-t", Fmod_test_return_t, 1, 1, NULL, NULL); | 591 | DEFUN ("mod-test-return-t", Fmod_test_return_t, 1, 1, NULL, NULL); |
| 590 | DEFUN ("mod-test-sum", Fmod_test_sum, 2, 2, "Return A + B\n\n(fn a b)", NULL); | 592 | DEFUN ("mod-test-sum", Fmod_test_sum, 2, 2, "Return A + B\n\n(fn a b)", |
| 593 | (void *) (uintptr_t) 0x1234); | ||
| 591 | DEFUN ("mod-test-signal", Fmod_test_signal, 0, 0, NULL, NULL); | 594 | DEFUN ("mod-test-signal", Fmod_test_signal, 0, 0, NULL, NULL); |
| 592 | DEFUN ("mod-test-throw", Fmod_test_throw, 0, 0, NULL, NULL); | 595 | DEFUN ("mod-test-throw", Fmod_test_throw, 0, 0, NULL, NULL); |
| 593 | DEFUN ("mod-test-non-local-exit-funcall", Fmod_test_non_local_exit_funcall, | 596 | DEFUN ("mod-test-non-local-exit-funcall", Fmod_test_non_local_exit_funcall, |