commit a0aac5741ec27465145fbb283bf095352ba19b58 (HEAD, refs/remotes/origin/master) Author: Noam Postavsky Date: Sat Apr 28 20:35:30 2018 -0400 Replace epg--gv-nreverse with (cl-callf nreverse ...) * lisp/epg.el (epg--gv-nreverse): Remove. (epg-list-keys): Replace it with (cl-callf nreverse ...). diff --git a/lisp/epg.el b/lisp/epg.el index dc0e2df583..091021936a 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -174,10 +174,6 @@ (file nil :read-only t) (string nil :read-only t)) -(defmacro epg--gv-nreverse (place) - (gv-letplace (getter setter) place - (funcall setter `(nreverse ,getter)))) - (cl-defstruct (epg-context (:constructor nil) (:constructor epg-context--make @@ -1390,10 +1386,10 @@ NAME is either a string or a list of strings." (setq keys (nreverse keys) pointer keys) (while pointer - (epg--gv-nreverse (epg-key-sub-key-list (car pointer))) - (setq pointer-1 (epg--gv-nreverse (epg-key-user-id-list (car pointer)))) + (cl-callf nreverse (epg-key-sub-key-list (car pointer))) + (setq pointer-1 (cl-callf nreverse (epg-key-user-id-list (car pointer)))) (while pointer-1 - (epg--gv-nreverse (epg-user-id-signature-list (car pointer-1))) + (cl-callf nreverse (epg-user-id-signature-list (car pointer-1))) (setq pointer-1 (cdr pointer-1))) (setq pointer (cdr pointer))) keys)) commit 8c3215e7a47e3caaa005bf573765ed63e0739b89 Author: Paul Eggert Date: Sat Apr 28 16:49:24 2018 -0700 Port --enable-gcc-warnings to GCC 8 * configure.ac: Do not use GCC 8’s new -Wcast-align flag. * lib-src/ebrowse.c (xmalloc): * lib-src/emacsclient.c (xmalloc, xstrdup): * lib-src/etags.c (xmalloc): * lib-src/make-docfile.c (xmalloc): * lib-src/movemail.c (xmalloc): * src/dispnew.c (new_glyph_pool): * src/regex.c (xmalloc): * src/term.c (tty_menu_create): * src/tparam.h (tparam): Use ATTRIBUTE_MALLOC. Also see GCC bug 85562. * lib-src/emacsclient.c (fail): Do not dereference a null pointer. * src/frame.c (delete_frame): Add a decl with UNINIT to work around GCC bug 85563. * src/menu.h (finish_menu_items): Do not use attribute const. * src/regex.c (analyze_first): Use FALLTHROUGH, not a comment. diff --git a/configure.ac b/configure.ac index d2269d6f35..a49b772797 100644 --- a/configure.ac +++ b/configure.ac @@ -952,6 +952,7 @@ AS_IF([test $gl_gcc_warnings = no], AS_IF([test $gl_gcc_warnings = yes], [WERROR_CFLAGS=-Werror]) + nw="$nw -Wcast-align -Wcast-align=strict" # Emacs is tricky with pointers. nw="$nw -Wduplicated-branches" # Too many false alarms nw="$nw -Wformat-overflow=2" # False alarms due to GCC bug 80776 nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c index fa78c35a8b..33af4f02da 100644 --- a/lib-src/ebrowse.c +++ b/lib-src/ebrowse.c @@ -494,7 +494,7 @@ yyerror (const char *format, const char *s) /* Like malloc but print an error and exit if not enough memory is available. */ -static void * +static void * ATTRIBUTE_MALLOC xmalloc (size_t nbytes) { void *p = malloc (nbytes); diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 574bec850f..739e6d5949 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -192,7 +192,7 @@ struct option longopts[] = /* Like malloc but get fatal error if memory is exhausted. */ -static void * +static void * ATTRIBUTE_MALLOC xmalloc (size_t size) { void *result = malloc (size); @@ -219,7 +219,7 @@ xrealloc (void *ptr, size_t size) } /* Like strdup but get a fatal error if memory is exhausted. */ -char *xstrdup (const char *); +char *xstrdup (const char *) ATTRIBUTE_MALLOC; char * xstrdup (const char *s) @@ -261,7 +261,7 @@ get_current_dir_name (void) #endif ) { - buf = (char *) xmalloc (strlen (pwd) + 1); + buf = xmalloc (strlen (pwd) + 1); strcpy (buf, pwd); } else @@ -312,12 +312,15 @@ w32_get_resource (HKEY predefined, const char *key, LPDWORD type) if (RegOpenKeyEx (predefined, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS) { - if (RegQueryValueEx (hrootkey, key, NULL, NULL, NULL, &cbData) == ERROR_SUCCESS) + if (RegQueryValueEx (hrootkey, key, NULL, NULL, NULL, &cbData) + == ERROR_SUCCESS) { - result = (char *) xmalloc (cbData); + result = xmalloc (cbData); - if ((RegQueryValueEx (hrootkey, key, NULL, type, (LPBYTE)result, &cbData) != ERROR_SUCCESS) - || (*result == 0)) + if ((RegQueryValueEx (hrootkey, key, NULL, type, (LPBYTE) result, + &cbData) + != ERROR_SUCCESS) + || *result == 0) { free (result); result = NULL; @@ -369,7 +372,7 @@ w32_getenv (const char *envvar) if ((size = ExpandEnvironmentStrings (value, NULL, 0))) { - char *buffer = (char *) xmalloc (size); + char *buffer = xmalloc (size); if (ExpandEnvironmentStrings (value, buffer, size)) { /* Found and expanded. */ @@ -700,7 +703,7 @@ fail (void) { size_t extra_args_size = (main_argc - optind + 1) * sizeof (char *); size_t new_argv_size = extra_args_size; - char **new_argv = NULL; + char **new_argv = xmalloc (new_argv_size); char *s = xstrdup (alternate_editor); unsigned toks = 0; @@ -833,7 +836,7 @@ send_to_emacs (HSOCKET s, const char *data) static void quote_argument (HSOCKET s, const char *str) { - char *copy = (char *) xmalloc (strlen (str) * 2 + 1); + char *copy = xmalloc (strlen (str) * 2 + 1); const char *p; char *q; @@ -1843,7 +1846,7 @@ main (int argc, char **argv) careful to expand with the default directory corresponding to . */ { - char *filename = (char *) xmalloc (MAX_PATH); + char *filename = xmalloc (MAX_PATH); DWORD size; size = GetFullPathName (argv[i], MAX_PATH, filename, NULL); diff --git a/lib-src/etags.c b/lib-src/etags.c index 588921bc70..b3b4575e0a 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -7304,7 +7304,7 @@ linebuffer_setlen (linebuffer *lbp, int toksize) } /* Like malloc but get fatal error if memory is exhausted. */ -static void * +static void * ATTRIBUTE_MALLOC xmalloc (size_t size) { void *result = malloc (size); diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c index a5ed6e3607..23728e7251 100644 --- a/lib-src/make-docfile.c +++ b/lib-src/make-docfile.c @@ -123,7 +123,7 @@ memory_exhausted (void) /* Like malloc but get fatal error if memory is exhausted. */ -static void * +static void * ATTRIBUTE_MALLOC xmalloc (ptrdiff_t size) { void *result = malloc (size); diff --git a/lib-src/movemail.c b/lib-src/movemail.c index 4495c38f6e..7a37e164dd 100644 --- a/lib-src/movemail.c +++ b/lib-src/movemail.c @@ -145,7 +145,7 @@ static bool mbx_delimit_end (FILE *); || (!defined DISABLE_DIRECT_ACCESS && !defined MAIL_USE_SYSTEM_LOCK)) /* Like malloc but get fatal error if memory is exhausted. */ -static void * +static void * ATTRIBUTE_MALLOC xmalloc (size_t size) { void *result = malloc (size); diff --git a/src/dispnew.c b/src/dispnew.c index 324c05ddc4..b854d179d5 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -1280,7 +1280,7 @@ row_equal_p (struct glyph_row *a, struct glyph_row *b, bool mouse_face_p) with zeros. If GLYPH_DEBUG and ENABLE_CHECKING are in effect, the global variable glyph_pool_count is incremented for each pool allocated. */ -static struct glyph_pool * +static struct glyph_pool * ATTRIBUTE_MALLOC new_glyph_pool (void) { struct glyph_pool *result = xzalloc (sizeof *result); diff --git a/src/frame.c b/src/frame.c index 86caa32615..da82621b8a 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1937,6 +1937,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force) if (f == sf) { Lisp_Object tail; + Lisp_Object frame1 UNINIT; /* This line works around GCC bug 85563. */ eassume (CONSP (Vframe_list)); /* Look for another visible frame on the same terminal. diff --git a/src/menu.h b/src/menu.h index 104f6dc81d..fa32a86d1c 100644 --- a/src/menu.h +++ b/src/menu.h @@ -30,7 +30,7 @@ enum { }; extern void init_menu_items (void); -extern void finish_menu_items (void) ATTRIBUTE_CONST; +extern void finish_menu_items (void); extern void discard_menu_items (void); extern void save_menu_items (void); extern bool parse_single_submenu (Lisp_Object, Lisp_Object, Lisp_Object); diff --git a/src/regex.c b/src/regex.c index a4e6441cce..85e63feea1 100644 --- a/src/regex.c +++ b/src/regex.c @@ -212,7 +212,7 @@ /* When used in Emacs's lib-src, we need xmalloc and xrealloc. */ -static void * +static ATTRIBUTE_MALLOC void * xmalloc (size_t size) { void *val = malloc (size); @@ -4033,8 +4033,7 @@ analyze_first (re_char *p, re_char *pend, char *fastmap, }; /* Keep `p1' to allow the `on_failure_jump' we are jumping to to jump back to "just after here". */ - /* Fallthrough */ - + FALLTHROUGH; case on_failure_jump: case on_failure_keep_string_jump: case on_failure_jump_nastyloop: diff --git a/src/term.c b/src/term.c index 8be5fb319b..08d483f4fa 100644 --- a/src/term.c +++ b/src/term.c @@ -2721,7 +2721,7 @@ typedef struct tty_menu_struct /* Create a brand new menu structure. */ -static tty_menu * +static tty_menu * ATTRIBUTE_MALLOC tty_menu_create (void) { return xzalloc (sizeof *tty_menu_create ()); diff --git a/src/tparam.h b/src/tparam.h index 3a3cb52c17..79c55b94d2 100644 --- a/src/tparam.h +++ b/src/tparam.h @@ -30,7 +30,7 @@ int tgetnum (const char *); char *tgetstr (const char *, char **); char *tgoto (const char *, int, int); -char *tparam (const char *, char *, int, int, int, int, int); +char *tparam (const char *, char *, int, int, int, int, int) ATTRIBUTE_MALLOC; extern char PC; extern char *BC; commit 2b9ab8c8fba849da8bf2aa45e65b122bb937a6b3 Author: Paul Eggert Date: Sat Apr 28 16:49:23 2018 -0700 Update from Gnulib This incorporates: 2018-04-27 manywarnings: port to GCC 8.0 * build-aux/config.sub, m4/manywarnings.m4: Copy from Gnulib. diff --git a/build-aux/config.sub b/build-aux/config.sub index 9ccf09a7a3..ba37cf99e2 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2018-03-08' +timestamp='2018-04-24' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -249,12 +249,12 @@ case $basic_machine in | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ - | c4x | c8051 | clipper \ + | c4x | c8051 | clipper | csky \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ @@ -335,6 +335,10 @@ case $basic_machine in ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) ;; + m9s12z | m68hcs12z | hcs12z | s12z) + basic_machine=s12z-unknown + os=-none + ;; ms1) basic_machine=mt-unknown ;; @@ -378,7 +382,7 @@ case $basic_machine in | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | csky-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4 index 18249b8f2e..60c0e4051c 100644 --- a/m4/manywarnings.m4 +++ b/m4/manywarnings.m4 @@ -1,4 +1,4 @@ -# manywarnings.m4 serial 13 +# manywarnings.m4 serial 14 dnl Copyright (C) 2008-2018 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -106,10 +106,9 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], # To compare this list to your installed GCC's, run this Bash command: # # comm -3 \ - # <(sed -n 's/^ *\(-[^ 0-9][^ ]*\) .*/\1/p' manywarnings.m4 | sort) \ - # <(gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort | - # grep -v -x -F -f <( - # awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec)) + # <((sed -n 's/^ *\(-[^ 0-9][^ ]*\) .*/\1/p' manywarnings.m4; \ + # awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec) | sort) \ + # <(gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort) gl_manywarn_set= for gl_manywarn_item in -fno-common \ @@ -118,6 +117,7 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Waddress \ -Waggressive-loop-optimizations \ -Wall \ + -Wattribute-alias \ -Wattributes \ -Wbad-function-cast \ -Wbool-compare \ @@ -125,6 +125,8 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Wbuiltin-declaration-mismatch \ -Wbuiltin-macro-redefined \ -Wcast-align \ + -Wcast-align=strict \ + -Wcast-function-type \ -Wchar-subscripts \ -Wchkp \ -Wclobbered \ @@ -160,6 +162,7 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Wframe-address \ -Wfree-nonheap-object \ -Whsa \ + -Wif-not-aligned \ -Wignored-attributes \ -Wignored-qualifiers \ -Wimplicit \ @@ -181,6 +184,7 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Wmemset-elt-size \ -Wmemset-transposed-args \ -Wmisleading-indentation \ + -Wmissing-attributes \ -Wmissing-braces \ -Wmissing-declarations \ -Wmissing-field-initializers \ @@ -188,6 +192,7 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Wmissing-parameter-type \ -Wmissing-prototypes \ -Wmultichar \ + -Wmultistatement-macros \ -Wnarrowing \ -Wnested-externs \ -Wnonnull \ @@ -202,6 +207,7 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Woverride-init \ -Wpacked \ -Wpacked-bitfield-compat \ + -Wpacked-not-aligned \ -Wparentheses \ -Wpointer-arith \ -Wpointer-compare \ @@ -219,13 +225,17 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Wshift-count-overflow \ -Wshift-negative-value \ -Wsizeof-array-argument \ + -Wsizeof-pointer-div \ -Wsizeof-pointer-memaccess \ -Wstack-protector \ -Wstrict-aliasing \ -Wstrict-overflow \ -Wstrict-prototypes \ + -Wstringop-truncation \ + -Wsuggest-attribute=cold \ -Wsuggest-attribute=const \ -Wsuggest-attribute=format \ + -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ -Wsuggest-final-methods \ commit bcee1600384e3ef223a90e7e4eac0e1e25f473b7 Author: Juri Linkov Date: Sat Apr 28 23:38:56 2018 +0300 * lisp/vc/add-log.el (change-log-mode-syntax-table): New defvar that redefines syntax of quotes to "expression quote or prefix operator". (Bug#31231) diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el index 4c64ae1f60..4d69aac454 100644 --- a/lisp/vc/add-log.el +++ b/lisp/vc/add-log.el @@ -1024,6 +1024,13 @@ the change log file in another window." (defvar smerge-resolve-function) (defvar copyright-at-end-flag) +(defvar change-log-mode-syntax-table + (let ((table (make-syntax-table))) + (modify-syntax-entry ?` "' " table) + (modify-syntax-entry ?' "' " table) + table) + "Syntax table used while in `change-log-mode'.") + ;;;###autoload (define-derived-mode change-log-mode text-mode "Change Log" "Major mode for editing change logs; like Indented Text mode. commit f4eeb0f5ae448db0f064f6305ab0bc0c3bae071a Author: Juri Linkov Date: Sat Apr 28 23:20:33 2018 +0300 * lisp/subr.el (dotimes): Deprecate RESULT field. (Bug#16206) * doc/lispref/control.texi (Iteration): * doc/misc/cl.texi (Iteration): Document deprecation of its use. * doc/lispintro/emacs-lisp-intro.texi (dotimes): * test/src/emacs-module-tests.el (multiply-string): * test/lisp/filenotify-tests.el (file-notify-test07-many-events): Place RESULT field after the form. diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index b672d7cbee..4d514aab1c 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -11013,9 +11013,8 @@ The @code{dotimes} macro is similar to @code{dolist}, except that it loops a specific number of times. The first argument to @code{dotimes} is assigned the numbers 0, 1, 2 -and so forth each time around the loop, and the value of the third -argument is returned. You need to provide the value of the second -argument, which is how many times the macro loops. +and so forth each time around the loop. You need to provide the value +of the second argument, which is how many times the macro loops. @need 1250 For example, the following binds the numbers from 0 up to, but not @@ -11027,17 +11026,18 @@ three numbers in all, starting with zero as the first number.) @smallexample @group (let (value) ; otherwise a value is a void variable - (dotimes (number 3 value) - (setq value (cons number value)))) + (dotimes (number 3) + (setq value (cons number value))) + value) @result{} (2 1 0) @end group @end smallexample @noindent -@code{dotimes} returns @code{value}, so the way to use -@code{dotimes} is to operate on some expression @var{number} number of -times and then return the result, either as a list or an atom. +The way to use @code{dotimes} is to operate on some expression +@var{number} number of times and then return the result, either as +a list or an atom. @need 1250 Here is an example of a @code{defun} that uses @code{dotimes} to add @@ -11048,8 +11048,9 @@ up the number of pebbles in a triangle. (defun triangle-using-dotimes (number-of-rows) "Using `dotimes', add up the number of pebbles in a triangle." (let ((total 0)) ; otherwise a total is a void variable - (dotimes (number number-of-rows total) - (setq total (+ total (1+ number)))))) + (dotimes (number number-of-rows) + (setq total (+ total (1+ number)))) + total)) (triangle-using-dotimes 4) @end group diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index adec632da6..42aa3c9888 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -703,7 +703,8 @@ This construct executes @var{body} once for each integer from 0 (inclusive) to @var{count} (exclusive), binding the variable @var{var} to the integer for the current iteration. Then it returns the value of evaluating @var{result}, or @code{nil} if @var{result} is omitted. -Here is an example of using @code{dotimes} to do something 100 times: +Use of @var{result} is deprecated. Here is an example of using +@code{dotimes} to do something 100 times: @example (dotimes (i 100) diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index bf85b00e93..5ae0faf255 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -1712,9 +1712,9 @@ but surrounds the loop with an implicit @code{nil} block. The body is executed with @var{var} bound to the integers from zero (inclusive) to @var{count} (exclusive), in turn. Then @c FIXME lispref does not state this part explicitly, could move this there. -the @code{result} form is evaluated with @var{var} bound to the total +the @var{result} form is evaluated with @var{var} bound to the total number of iterations that were done (i.e., @code{(max 0 @var{count})}) -to get the return value for the loop form. +to get the return value for the loop form. Use of @var{result} is deprecated. @end defmac @defmac cl-do-symbols (var [obarray [result]]) forms@dots{} diff --git a/lisp/subr.el b/lisp/subr.el index dd51539fa1..9f6cade0f7 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -223,7 +223,7 @@ Then evaluate RESULT to get return value, default nil. "Loop a certain number of times. Evaluate BODY with VAR bound to successive integers running from 0, inclusive, to COUNT, exclusive. Then evaluate RESULT to get -the return value (nil if RESULT is omitted). +the return value (nil if RESULT is omitted). Its use is deprecated. \(fn (VAR COUNT [RESULT]) BODY...)" (declare (indent 1) (debug dolist)) diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index 219fa74611..56403f4309 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -1129,14 +1129,16 @@ delivered." ;; w32notify fires both `deleted' and `renamed' events. ((string-equal (file-notify--test-library) "w32notify") (let (r) - (dotimes (_i n r) - (setq r (append '(deleted renamed) r))))) + (dotimes (_i n) + (setq r (append '(deleted renamed) r))) + r)) ;; cygwin fires `changed' and `deleted' events, sometimes ;; in random order. ((eq system-type 'cygwin) (let (r) - (dotimes (_i n (cons :random r)) - (setq r (append '(changed deleted) r))))) + (dotimes (_i n) + (setq r (append '(changed deleted) r))) + (cons :random r))) (t (make-list n 'renamed))) (let ((source-file-list source-file-list) (target-file-list target-file-list)) diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el index 8b6328d35a..9ef5a47b15 100644 --- a/test/src/emacs-module-tests.el +++ b/test/src/emacs-module-tests.el @@ -138,8 +138,9 @@ changes." (defun multiply-string (s n) (let ((res "")) - (dotimes (i n res) - (setq res (concat res s))))) + (dotimes (i n) + (setq res (concat res s))) + res)) (ert-deftest mod-test-globref-make-test () (let ((mod-str (mod-test-globref-make))