Remove read extension support from primitive-read
authorAndy Wingo <wingo@pobox.com>
Wed, 3 Mar 2021 21:30:49 +0000 (22:30 +0100)
committerAndy Wingo <wingo@pobox.com>
Wed, 3 Mar 2021 21:30:49 +0000 (22:30 +0100)
* libguile/read.c (scm_read_sharp_extension): Remove.
(scm_read_sharp): Adapt.

libguile/read.c

index 62a22f81d4deb8391927a6d20fa6e4b642e68456..3030b27ed2c1ddfe33cac76e2225b8844b4e004b 100644 (file)
@@ -1388,32 +1388,14 @@ scm_read_extended_symbol (scm_t_wchar chr, SCM port)
 \f
 /* Top-level token readers, i.e., dispatchers.  */
 
-static SCM
-scm_read_sharp_extension (int chr, SCM port)
-{
-  SCM proc;
-
-  proc = scm_get_hash_procedure (chr);
-  if (scm_is_true (scm_procedure_p (proc)))
-    return scm_call_2 (proc, SCM_MAKE_CHAR (chr), port);
-
-  return SCM_UNSPECIFIED;
-}
-
 /* The reader for the sharp `#' character.  It basically dispatches reads
    among the above token readers.   */
 static SCM
 scm_read_sharp (scm_t_wchar chr, SCM port)
 #define FUNC_NAME "scm_lreadr"
 {
-  SCM result;
-
   chr = scm_getc (port);
 
-  result = scm_read_sharp_extension (chr, port);
-  if (!scm_is_eq (result, SCM_UNSPECIFIED))
-    return result;
-
   switch (chr)
     {
     case '\\':
@@ -1466,27 +1448,13 @@ scm_read_sharp (scm_t_wchar chr, SCM port)
       return scm_read_syntax (chr, port);
     case 'n':
       return scm_read_nil (chr, port);
+    case '|':
+      return scm_read_r6rs_block_comment (chr, port);
     default:
-      result = scm_read_sharp_extension (chr, port);
-      if (scm_is_eq (result, SCM_UNSPECIFIED))
-       {
-         /* To remain compatible with 1.8 and earlier, the following
-            characters have lower precedence than `read-hash-extend'
-            characters.  */
-         switch (chr)
-           {
-           case '|':
-             return scm_read_r6rs_block_comment (chr, port);
-           default:
-             scm_i_input_error (FUNC_NAME, port, "Unknown # object: ~S",
-                                scm_list_1 (SCM_MAKE_CHAR (chr)));
-           }
-       }
-      else
-       return result;
+      scm_i_input_error (FUNC_NAME, port, "Unknown # object: ~S",
+                         scm_list_1 (SCM_MAKE_CHAR (chr)));
+      return SCM_UNSPECIFIED;
     }
-
-  return SCM_UNSPECIFIED;
 }
 #undef FUNC_NAME