aboutsummaryrefslogtreecommitdiffstats
path: root/test/data
diff options
context:
space:
mode:
authorPhilipp Stephani2020-01-05 16:05:14 +0100
committerPhilipp Stephani2020-01-05 16:07:28 +0100
commitfc92c2d8942cf466aa6dbc422f2e798801b18408 (patch)
treeddf5bc386ba474733db39de3d23f76c8563ebd4b /test/data
parent9d38564cdde8cbe9d4c08a7ffef7f25e9692814a (diff)
downloademacs-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.c5
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
86Fmod_test_sum (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data) 87Fmod_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,