texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]


From: Patrice Dumas
Date: Fri, 24 Jan 2025 07:11:11 -0500 (EST)

branch: master
commit d7583e3943b0b1dc90a08cfd6560d614a01c7521
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Fri Jan 24 13:09:34 2025 +0100

    * tp/Texinfo/Structuring.pm (check_nodes_are_referenced),
    tp/Texinfo/XS/structuring_transfo/structuring.c
    (check_nodes_are_referenced): check that all the nodes are in a menu
    except for Top, for nodes that are referenced, if
    CHECK_NORMAL_MENU_STRUCTURE is set and there is more than one node.
---
 ChangeLog                                          |   8 ++++
 doc/tp_api/api_includes/Texinfo-Structuring.texi   |   9 ++--
 tp/Texinfo/Structuring.pm                          |  51 +++++++++++++++------
 tp/Texinfo/XS/structuring_transfo/structuring.c    |  23 ++++++++++
 tp/t/results/conditionals/cond.pl                  |  11 ++++-
 tp/t/results/conditionals/cond_ifhtml_ifinfo.pl    |  11 ++++-
 .../conditionals/cond_ifhtml_ifinfo_iftex.pl       |  11 ++++-
 tp/t/results/conditionals/cond_info.pl             |  11 ++++-
 .../conditionals/cond_info_ifhtml_ifinfo_iftex.pl  |  11 ++++-
 .../cond_info_no-ifhtml_no-ifinfo_no-iftex.pl      |  11 ++++-
 .../cond_no-ifhtml_no-ifinfo_no-iftex.pl           |  11 ++++-
 tp/t/results/conditionals/cond_xml.pl              |  11 ++++-
 tp/t/results/converters_tests/form_feeds.pl        |  10 +++-
 .../converters_tests/setfilename_no_extension.pl   |  10 +++-
 tp/t/results/converters_tests/top_in_ref.pl        |   7 +++
 tp/t/results/coverage_braces/test_image.pl         |   7 +++
 .../def/all_commands_delimiters_printindex.pl      |  10 +++-
 tp/t/results/def/all_commands_printindex.pl        |  10 +++-
 tp/t/results/def/omit_def_space.pl                 |  10 +++-
 tp/t/results/def/space_in_def_for_index.pl         |  10 +++-
 tp/t/results/float/anchor_in_caption.pl            |  10 +++-
 tp/t/results/float/cindex_in_caption.pl            |  10 +++-
 .../results/float/comment_space_comand_in_float.pl |  10 +++-
 tp/t/results/float/footnote_in_caption.pl          |  10 +++-
 .../results/float/footnote_in_caption_and_error.pl |   7 +++
 tp/t/results/heading/heading_in_copying.pl         |  10 +++-
 tp/t/results/include/cpp_line_latin1.pl            |   8 ++++
 tp/t/results/include/cpp_lines.pl                  |   8 ++++
 .../macro_and_commands_in_early_commands.pl        |   7 +++
 tp/t/results/include/macro_in_early_commands.pl    |  10 +++-
 tp/t/results/include/value_expansion_in_include.pl |   7 +++
 tp/t/results/indices/complex_recursive_synindex.pl |   7 +++
 ...default_cp_index_and_one_letter_syncodeindex.pl | Bin 10377 -> 10530 bytes
 tp/t/results/indices/double_syncodeindex.pl        |   7 +++
 tp/t/results/indices/empty_added_index_entry.pl    |   7 +++
 tp/t/results/indices/empty_cindex_entry.pl         |   7 +++
 tp/t/results/indices/empty_index_entry.pl          |   7 +++
 tp/t/results/indices/empty_string_index_entry.pl   |   7 +++
 tp/t/results/indices/encoding_index_ascii.pl       |  10 +++-
 .../encoding_index_ascii_enable_encoding.pl        |  10 +++-
 tp/t/results/indices/encoding_index_latin1.pl      |  11 ++++-
 .../encoding_index_latin1_enable_encoding.pl       |  11 ++++-
 tp/t/results/indices/encoding_index_utf8.pl        |  11 ++++-
 .../indices/encoding_index_utf8_enable_encoding.pl |  11 ++++-
 .../indices/encoding_index_utf8_no_use_unicode.pl  |  11 ++++-
 tp/t/results/indices/explicit_sort_key.pl          |   7 +++
 tp/t/results/indices/ftable_vtable.pl              |  10 +++-
 .../indices/ignored_sort_char_empty_entries.pl     |   7 +++
 tp/t/results/indices/index_entries_before_nodes.pl | Bin 11767 -> 11920 bytes
 tp/t/results/indices/index_entries_locations.pl    |  10 +++-
 tp/t/results/indices/nodes_before_top.pl           |  11 ++++-
 .../nodes_before_top_and_sections_chapter.pl       |  11 ++++-
 ...odes_before_top_and_sections_chapter_no_node.pl |  11 ++++-
 ...des_before_top_and_sections_unsplit_no_nodes.pl |  11 ++++-
 .../indices/nodes_before_top_split_chapter.pl      |  11 ++++-
 .../nodes_before_top_split_chapter_no_nodes.pl     |  11 ++++-
 tp/t/results/indices/print_merged_index.pl         |   7 +++
 .../indices/printindex_with_space_before.pl        | Bin 7235 -> 7388 bytes
 tp/t/results/indices/seealso_duplicate.pl          |  10 +++-
 tp/t/results/indices/syncodeindex_to_plain.pl      |  10 +++-
 tp/t/results/indices/transparent_sort_chars.pl     |  10 +++-
 .../init_files_tests/undefined_node_filename.pl    |  10 +++-
 tp/t/results/invalid_nestings/in_table.pl          |   7 +++
 tp/t/results/languages/simple_documentlanguage.pl  |  10 +++-
 tp/t/results/languages/unknown_region.pl           |   7 +++
 tp/t/results/latex_tests/node_before_top.pl        |  10 +++-
 tp/t/results/macro/backslash_in_arg.pl             |  10 +++-
 tp/t/results/macro/macro_in_index_commands.pl      |   7 +++
 tp/t/results/menu/empty_menu_entry_name.pl         |   7 +++
 tp/t/results/menu/sc_in_menu.pl                    |   7 +++
 tp/t/results/misc_commands/test_allowcodebreaks.pl |   7 +++
 .../moresectioning/nodes_before_after_top_xref.pl  |  17 ++++++-
 ...nodes_no_section_footnote_no_top_node_output.pl |  10 +++-
 tp/t/results/plaintext_tests/all_spaces.pl         |  11 ++++-
 tp/t/results/regions/anchor_in_copying.pl          |  10 +++-
 .../regions/anchor_in_copying_in_footnote.pl       |  10 +++-
 tp/t/results/regions/anchor_in_titlepage.pl        |  10 +++-
 .../regions/anchor_in_titlepage_titlepage.pl       |  10 +++-
 tp/t/results/regions/format_in_titlepage.pl        |  10 +++-
 .../regions/format_in_titlepage_titlepage.pl       |  10 +++-
 tp/t/results/regions/today_in_copying.pl           |  10 +++-
 .../sectioning/character_and_spaces_in_node.pl     |  31 ++++++++++++-
 .../results/sectioning/double_node_anchor_float.pl |   7 +++
 ...double_recursive_self_section_node_reference.pl |   7 +++
 ...sive_self_section_node_reference_no_use_node.pl |   7 +++
 tp/t/results/sectioning/equivalent_nodes.pl        |   7 +++
 .../sectioning/equivalent_nodes_novalidate.pl      |  10 +++-
 tp/t/results/sectioning/node_line_arguments.pl     |   7 +++
 tp/t/results/sectioning/node_referenced_in_ref.pl  |  10 +++-
 tp/t/results/sectioning/nodes_before_top.pl        |  10 +++-
 .../nodes_no_node_top_explicit_directions.pl       |  10 +++-
 .../section_before_after_top_node_last_node.pl     |   7 +++
 .../unnumbered_top_without_node_nodes.pl           |   7 +++
 .../unnumbered_top_without_node_sections.pl        |   7 +++
 tp/t/results/value/value_in_index_commands.pl      |   7 +++
 tp/t/results/value/value_in_misc_commands.pl       |   7 +++
 tp/t/results/value/value_node_directions.pl        |  17 ++++++-
 97 files changed, 876 insertions(+), 76 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 62a10ab804..27c584c095 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2025-01-24  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/Structuring.pm (check_nodes_are_referenced),
+       tp/Texinfo/XS/structuring_transfo/structuring.c
+       (check_nodes_are_referenced): check that all the nodes are in a menu
+       except for Top, for nodes that are referenced, if
+       CHECK_NORMAL_MENU_STRUCTURE is set and there is more than one node.
+
 2025-01-20  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/XS/Makefile.am (libtexinfo_main_la_LDFLAGS): remove
diff --git a/doc/tp_api/api_includes/Texinfo-Structuring.texi 
b/doc/tp_api/api_includes/Texinfo-Structuring.texi
index 7cbacec7ee..3baf062b71 100644
--- a/doc/tp_api/api_includes/Texinfo-Structuring.texi
+++ b/doc/tp_api/api_includes/Texinfo-Structuring.texi
@@ -75,14 +75,15 @@ references @code{@@ref} and similar @@-commands.
 Check that all the nodes are referenced (in menu, @@*ref or node direction).
 
 Should be called after @code{complete_node_tree_with_menus} in order to
-have the autogenerated menus available.
+have corresponding autogenerated node directions set.
 
 @item complete_node_tree_with_menus($document)
 @anchor{Texinfo@asis{::}Structuring complete_node_tree_with_menus($document)}
 @cindex @code{complete_node_tree_with_menus}
 
-Complete nodes directions with menu directions.  Check consistency
-of menus, sectionning and nodes direction structures.
+Complete nodes directions with menu directions and @emph{Top} node first node
+directions.  Check consistency of menus, sectionning and nodes direction
+structures.
 
 @item @@children_nodes = get_node_node_childs_from_sectioning($node)
 @anchor{Texinfo@asis{::}Structuring @@children_nodes = 
get_node_node_childs_from_sectioning($node)}
@@ -220,7 +221,7 @@ following the @emph{up} @emph{section_directions}.
 @anchor{Texinfo@asis{::}Structuring set_menus_node_directions($document);}
 @cindex @code{set_menus_node_directions}
 
-Goes through menu and set directions.
+Goes through menu and set directions implied by menus.
 
 This functions sets, in the @code{extra} node element hash reference:
 
diff --git a/tp/Texinfo/Structuring.pm b/tp/Texinfo/Structuring.pm
index 4dcc023757..d80e9efe97 100644
--- a/tp/Texinfo/Structuring.pm
+++ b/tp/Texinfo/Structuring.pm
@@ -491,7 +491,8 @@ sub get_node_node_childs_from_sectioning
 }
 
 # In general should be called only after complete_node_tree_with_menus
-# to try to generate menus automatically before checking.
+# to generate the Top node first node directions automatically when there
+# are no sections nor menus before checking.
 sub check_nodes_are_referenced($)
 {
   my $document = shift;
@@ -560,12 +561,30 @@ sub check_nodes_are_referenced($)
 
   foreach my $node (@{$nodes_list}) {
     # it is normal that a redundant node is not referenced
-    if ($node->{'extra'}->{'is_target'}
-        and not exists($referenced_nodes{$node})) {
-      $registrar->line_warn(sprintf(__("node `%s' unreferenced"),
-                                    target_element_to_texi_label($node)),
-                            $node->{'source_info'}, 0,
-                           $customization_information->get_conf('DEBUG'));
+    if ($node->{'extra'}->{'is_target'}) {
+      if (not exists($referenced_nodes{$node})) {
+        $registrar->line_warn(sprintf(__("node `%s' unreferenced"),
+                                      target_element_to_texi_label($node)),
+                              $node->{'source_info'}, 0,
+                             $customization_information->get_conf('DEBUG'));
+      # if the node is referenced, warn if there is no menu up
+      } elsif ($customization_information->get_conf(
+                                             'CHECK_NORMAL_MENU_STRUCTURE')
+               and $node->{'extra'}->{'normalized'} ne 'Top'
+               and scalar(@{$nodes_list}) > 1) {
+        my $arguments_line = $node->{'contents'}->[0];
+        my $automatic_directions
+          = (not (scalar(@{$arguments_line->{'contents'}}) > 1));
+        my $section = $node->{'extra'}->{'associated_section'};
+        my $menu_directions = $node->{'extra'}->{'menu_directions'};
+        if (not (($section and $automatic_directions)
+                 or ($menu_directions and $menu_directions->{'up'}))) {
+          $registrar->line_warn(sprintf(__("node `%s' not in menu"),
+                                        target_element_to_texi_label($node)),
+                               $node->{'source_info'}, 0,
+                               $customization_information->get_conf('DEBUG'));
+        }
+      }
     }
   }
 }
@@ -704,8 +723,11 @@ sub _section_direction_associated_node($$)
   return undef;
 }
 
-# complete automatic directions with menus (and first node
-# for Top node).
+# Set first node/Top node directions.
+# The checks on structure assume that nodes with automatic directions and
+# associated sections will have the directions set, but the directions are
+# not set according to sections in that function.
+# Complete automatic directions with menus.
 # Checks on structure related to menus.
 sub complete_node_tree_with_menus($)
 {
@@ -878,6 +900,7 @@ sub complete_node_tree_with_menus($)
           }
         }
       }
+
     }
 
     # check for node up / menu up mismatch
@@ -911,7 +934,6 @@ sub complete_node_tree_with_menus($)
                                 $customization_information->get_conf('DEBUG'));
         }
       }
-      # TODO check that the all the nodes are in a menu (except for Top)?
       # TODO check that node_up is not an external node (except for Top)?
     }
   }
@@ -1684,13 +1706,14 @@ X<C<check_nodes_are_referenced>>
 Check that all the nodes are referenced (in menu, @*ref or node direction).
 
 Should be called after C<complete_node_tree_with_menus> in order to
-have the autogenerated menus available.
+have corresponding autogenerated node directions set.
 
 =item complete_node_tree_with_menus($document)
 X<C<complete_node_tree_with_menus>>
 
-Complete nodes directions with menu directions.  Check consistency
-of menus, sectionning and nodes direction structures.
+Complete nodes directions with menu directions and I<Top> node first node
+directions.  Check consistency of menus, sectionning and nodes direction
+structures.
 
 =item @children_nodes = get_node_node_childs_from_sectioning($node)
 X<C<get_node_node_childs_from_sectioning>>
@@ -1814,7 +1837,7 @@ following the I<up> I<section_directions>.
 =item set_menus_node_directions($document);
 X<C<set_menus_node_directions>>
 
-Goes through menu and set directions.
+Goes through menu and set directions implied by menus.
 
 This functions sets, in the C<extra> node element hash reference:
 
diff --git a/tp/Texinfo/XS/structuring_transfo/structuring.c 
b/tp/Texinfo/XS/structuring_transfo/structuring.c
index 0efa8feaf5..3540bf8e66 100644
--- a/tp/Texinfo/XS/structuring_transfo/structuring.c
+++ b/tp/Texinfo/XS/structuring_transfo/structuring.c
@@ -807,6 +807,29 @@ check_nodes_are_referenced (DOCUMENT *document)
                                          node_texi);
               free (node_texi);
             }
+          else if (((!options)
+                    || options->CHECK_NORMAL_MENU_STRUCTURE.o.integer > 0)
+                   && strcmp (normalized, "Top")
+                   && nodes_list->number > 1)
+            {
+              const ELEMENT *arguments_line = node->e.c->contents.list[0];
+              int automatic_directions
+                 = (arguments_line->e.c->contents.number <= 1);
+              const ELEMENT *section = lookup_extra_element (node,
+                                                  AI_key_associated_section);
+              const ELEMENT * const *menu_directions
+                        = lookup_extra_directions (node,
+                                                   AI_key_menu_directions);
+              if (! ((section && automatic_directions) 
+                     || (menu_directions && menu_directions[D_up])))
+                {
+                  char *node_texi = target_element_to_texi_label (node);
+                  message_list_command_warn (error_messages, options, node, 0,
+                                             "node `%s' not in menu",
+                                             node_texi);
+                  free (node_texi);
+                }
+            }
         }
     }
 
diff --git a/tp/t/results/conditionals/cond.pl 
b/tp/t/results/conditionals/cond.pl
index 6f616404c4..1e3ef16524 100644
--- a/tp/t/results/conditionals/cond.pl
+++ b/tp/t/results/conditionals/cond.pl
@@ -906,7 +906,16 @@ $result_menus{'cond'} = [
   }
 ];
 
-$result_errors{'cond'} = [];
+$result_errors{'cond'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond'} = {};
diff --git a/tp/t/results/conditionals/cond_ifhtml_ifinfo.pl 
b/tp/t/results/conditionals/cond_ifhtml_ifinfo.pl
index 11269b5930..9e592c8630 100644
--- a/tp/t/results/conditionals/cond_ifhtml_ifinfo.pl
+++ b/tp/t/results/conditionals/cond_ifhtml_ifinfo.pl
@@ -906,7 +906,16 @@ $result_menus{'cond_ifhtml_ifinfo'} = [
   }
 ];
 
-$result_errors{'cond_ifhtml_ifinfo'} = [];
+$result_errors{'cond_ifhtml_ifinfo'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond_ifhtml_ifinfo'} = {};
diff --git a/tp/t/results/conditionals/cond_ifhtml_ifinfo_iftex.pl 
b/tp/t/results/conditionals/cond_ifhtml_ifinfo_iftex.pl
index aa7e68d9dc..663e09461d 100644
--- a/tp/t/results/conditionals/cond_ifhtml_ifinfo_iftex.pl
+++ b/tp/t/results/conditionals/cond_ifhtml_ifinfo_iftex.pl
@@ -906,7 +906,16 @@ $result_menus{'cond_ifhtml_ifinfo_iftex'} = [
   }
 ];
 
-$result_errors{'cond_ifhtml_ifinfo_iftex'} = [];
+$result_errors{'cond_ifhtml_ifinfo_iftex'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond_ifhtml_ifinfo_iftex'} = {};
diff --git a/tp/t/results/conditionals/cond_info.pl 
b/tp/t/results/conditionals/cond_info.pl
index 6987a5cdf0..6f01d38683 100644
--- a/tp/t/results/conditionals/cond_info.pl
+++ b/tp/t/results/conditionals/cond_info.pl
@@ -906,7 +906,16 @@ $result_menus{'cond_info'} = [
   }
 ];
 
-$result_errors{'cond_info'} = [];
+$result_errors{'cond_info'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond_info'} = {};
diff --git a/tp/t/results/conditionals/cond_info_ifhtml_ifinfo_iftex.pl 
b/tp/t/results/conditionals/cond_info_ifhtml_ifinfo_iftex.pl
index f9d9df387e..d213666bd1 100644
--- a/tp/t/results/conditionals/cond_info_ifhtml_ifinfo_iftex.pl
+++ b/tp/t/results/conditionals/cond_info_ifhtml_ifinfo_iftex.pl
@@ -906,7 +906,16 @@ $result_menus{'cond_info_ifhtml_ifinfo_iftex'} = [
   }
 ];
 
-$result_errors{'cond_info_ifhtml_ifinfo_iftex'} = [];
+$result_errors{'cond_info_ifhtml_ifinfo_iftex'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond_info_ifhtml_ifinfo_iftex'} = {};
diff --git 
a/tp/t/results/conditionals/cond_info_no-ifhtml_no-ifinfo_no-iftex.pl 
b/tp/t/results/conditionals/cond_info_no-ifhtml_no-ifinfo_no-iftex.pl
index b833643f3a..bb6479ffca 100644
--- a/tp/t/results/conditionals/cond_info_no-ifhtml_no-ifinfo_no-iftex.pl
+++ b/tp/t/results/conditionals/cond_info_no-ifhtml_no-ifinfo_no-iftex.pl
@@ -906,7 +906,16 @@ $result_menus{'cond_info_no-ifhtml_no-ifinfo_no-iftex'} = [
   }
 ];
 
-$result_errors{'cond_info_no-ifhtml_no-ifinfo_no-iftex'} = [];
+$result_errors{'cond_info_no-ifhtml_no-ifinfo_no-iftex'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond_info_no-ifhtml_no-ifinfo_no-iftex'} = {};
diff --git a/tp/t/results/conditionals/cond_no-ifhtml_no-ifinfo_no-iftex.pl 
b/tp/t/results/conditionals/cond_no-ifhtml_no-ifinfo_no-iftex.pl
index 7d2aedde63..797abf08f6 100644
--- a/tp/t/results/conditionals/cond_no-ifhtml_no-ifinfo_no-iftex.pl
+++ b/tp/t/results/conditionals/cond_no-ifhtml_no-ifinfo_no-iftex.pl
@@ -906,7 +906,16 @@ $result_menus{'cond_no-ifhtml_no-ifinfo_no-iftex'} = [
   }
 ];
 
-$result_errors{'cond_no-ifhtml_no-ifinfo_no-iftex'} = [];
+$result_errors{'cond_no-ifhtml_no-ifinfo_no-iftex'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond_no-ifhtml_no-ifinfo_no-iftex'} = {};
diff --git a/tp/t/results/conditionals/cond_xml.pl 
b/tp/t/results/conditionals/cond_xml.pl
index db65629fba..3e0af335be 100644
--- a/tp/t/results/conditionals/cond_xml.pl
+++ b/tp/t/results/conditionals/cond_xml.pl
@@ -906,7 +906,16 @@ $result_menus{'cond_xml'} = [
   }
 ];
 
-$result_errors{'cond_xml'} = [];
+$result_errors{'cond_xml'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cond.texi',
+    'line_nr' => 20,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cond_xml'} = {};
diff --git a/tp/t/results/converters_tests/form_feeds.pl 
b/tp/t/results/converters_tests/form_feeds.pl
index 4f4aac4cf4..ca34d13fb4 100644
--- a/tp/t/results/converters_tests/form_feeds.pl
+++ b/tp/t/results/converters_tests/form_feeds.pl
@@ -1494,7 +1494,15 @@ $result_menus{'form_feeds'} = [
   }
 ];
 
-$result_errors{'form_feeds'} = [];
+$result_errors{'form_feeds'} = [
+  {
+    'error_line' => 'warning: node `chapnode\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chapnode\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'form_feeds'} = {
diff --git a/tp/t/results/converters_tests/setfilename_no_extension.pl 
b/tp/t/results/converters_tests/setfilename_no_extension.pl
index 901cdb60fa..0ca39ed64a 100644
--- a/tp/t/results/converters_tests/setfilename_no_extension.pl
+++ b/tp/t/results/converters_tests/setfilename_no_extension.pl
@@ -261,7 +261,15 @@ $result_menus{'setfilename_no_extension'} = [
   }
 ];
 
-$result_errors{'setfilename_no_extension'} = [];
+$result_errors{'setfilename_no_extension'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 6,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'setfilename_no_extension'} = {};
diff --git a/tp/t/results/converters_tests/top_in_ref.pl 
b/tp/t/results/converters_tests/top_in_ref.pl
index f6e969ee76..fd4b325bc6 100644
--- a/tp/t/results/converters_tests/top_in_ref.pl
+++ b/tp/t/results/converters_tests/top_in_ref.pl
@@ -3023,6 +3023,13 @@ $result_errors{'top_in_ref'} = [
     'line_nr' => 38,
     'text' => '@inforef is obsolete',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap refs node\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap refs node\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/coverage_braces/test_image.pl 
b/tp/t/results/coverage_braces/test_image.pl
index 4afe0a2f06..4f459dcbff 100644
--- a/tp/t/results/coverage_braces/test_image.pl
+++ b/tp/t/results/coverage_braces/test_image.pl
@@ -2982,6 +2982,13 @@ $result_errors{'test_image'} = [
     'macro' => 'files-char',
     'text' => '@verb should not appear anywhere inside @image',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chapter\' not in menu
+',
+    'line_nr' => 13,
+    'text' => 'node `chapter\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/def/all_commands_delimiters_printindex.pl 
b/tp/t/results/def/all_commands_delimiters_printindex.pl
index d1499adc31..5886ead061 100644
--- a/tp/t/results/def/all_commands_delimiters_printindex.pl
+++ b/tp/t/results/def/all_commands_delimiters_printindex.pl
@@ -14593,7 +14593,15 @@ $result_menus{'all_commands_delimiters_printindex'} = [
   }
 ];
 
-$result_errors{'all_commands_delimiters_printindex'} = [];
+$result_errors{'all_commands_delimiters_printindex'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'all_commands_delimiters_printindex'} = {};
diff --git a/tp/t/results/def/all_commands_printindex.pl 
b/tp/t/results/def/all_commands_printindex.pl
index e2d9438e06..2fdcc8fb1f 100644
--- a/tp/t/results/def/all_commands_printindex.pl
+++ b/tp/t/results/def/all_commands_printindex.pl
@@ -5399,7 +5399,15 @@ $result_menus{'all_commands_printindex'} = [
   }
 ];
 
-$result_errors{'all_commands_printindex'} = [];
+$result_errors{'all_commands_printindex'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'all_commands_printindex'} = {};
diff --git a/tp/t/results/def/omit_def_space.pl 
b/tp/t/results/def/omit_def_space.pl
index a51028a01f..57477da941 100644
--- a/tp/t/results/def/omit_def_space.pl
+++ b/tp/t/results/def/omit_def_space.pl
@@ -466,7 +466,15 @@ $result_menus{'omit_def_space'} = [
   }
 ];
 
-$result_errors{'omit_def_space'} = [];
+$result_errors{'omit_def_space'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'omit_def_space'} = {};
diff --git a/tp/t/results/def/space_in_def_for_index.pl 
b/tp/t/results/def/space_in_def_for_index.pl
index e49a70c6fb..010dbdfa42 100644
--- a/tp/t/results/def/space_in_def_for_index.pl
+++ b/tp/t/results/def/space_in_def_for_index.pl
@@ -473,7 +473,15 @@ $result_menus{'space_in_def_for_index'} = [
   }
 ];
 
-$result_errors{'space_in_def_for_index'} = [];
+$result_errors{'space_in_def_for_index'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'space_in_def_for_index'} = {};
diff --git a/tp/t/results/float/anchor_in_caption.pl 
b/tp/t/results/float/anchor_in_caption.pl
index 0ecf585319..85ac13446a 100644
--- a/tp/t/results/float/anchor_in_caption.pl
+++ b/tp/t/results/float/anchor_in_caption.pl
@@ -324,7 +324,15 @@ $result_menus{'anchor_in_caption'} = [
   }
 ];
 
-$result_errors{'anchor_in_caption'} = [];
+$result_errors{'anchor_in_caption'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'anchor_in_caption'} = {
diff --git a/tp/t/results/float/cindex_in_caption.pl 
b/tp/t/results/float/cindex_in_caption.pl
index 6ce43061b0..67ba9354b5 100644
--- a/tp/t/results/float/cindex_in_caption.pl
+++ b/tp/t/results/float/cindex_in_caption.pl
@@ -393,7 +393,15 @@ $result_menus{'cindex_in_caption'} = [
   }
 ];
 
-$result_errors{'cindex_in_caption'} = [];
+$result_errors{'cindex_in_caption'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'cindex_in_caption'} = {
diff --git a/tp/t/results/float/comment_space_comand_in_float.pl 
b/tp/t/results/float/comment_space_comand_in_float.pl
index 5859e40c98..4064951ab0 100644
--- a/tp/t/results/float/comment_space_comand_in_float.pl
+++ b/tp/t/results/float/comment_space_comand_in_float.pl
@@ -292,7 +292,15 @@ $result_menus{'comment_space_comand_in_float'} = [
   }
 ];
 
-$result_errors{'comment_space_comand_in_float'} = [];
+$result_errors{'comment_space_comand_in_float'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'comment_space_comand_in_float'} = {
diff --git a/tp/t/results/float/footnote_in_caption.pl 
b/tp/t/results/float/footnote_in_caption.pl
index c30a4e61e7..9876934a95 100644
--- a/tp/t/results/float/footnote_in_caption.pl
+++ b/tp/t/results/float/footnote_in_caption.pl
@@ -326,7 +326,15 @@ $result_menus{'footnote_in_caption'} = [
   }
 ];
 
-$result_errors{'footnote_in_caption'} = [];
+$result_errors{'footnote_in_caption'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'footnote_in_caption'} = {
diff --git a/tp/t/results/float/footnote_in_caption_and_error.pl 
b/tp/t/results/float/footnote_in_caption_and_error.pl
index 82f9d9b152..ec4c475e9e 100644
--- a/tp/t/results/float/footnote_in_caption_and_error.pl
+++ b/tp/t/results/float/footnote_in_caption_and_error.pl
@@ -339,6 +339,13 @@ $result_errors{'footnote_in_caption_and_error'} = [
     'line_nr' => 8,
     'text' => '@error expected braces',
     'type' => 'error'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/heading/heading_in_copying.pl 
b/tp/t/results/heading/heading_in_copying.pl
index 63bc5ad934..6e95ce3183 100644
--- a/tp/t/results/heading/heading_in_copying.pl
+++ b/tp/t/results/heading/heading_in_copying.pl
@@ -365,7 +365,15 @@ $result_menus{'heading_in_copying'} = [
   }
 ];
 
-$result_errors{'heading_in_copying'} = [];
+$result_errors{'heading_in_copying'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 10,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'heading_in_copying'} = {};
diff --git a/tp/t/results/include/cpp_line_latin1.pl 
b/tp/t/results/include/cpp_line_latin1.pl
index 8c5a984a01..0456adaf2b 100644
--- a/tp/t/results/include/cpp_line_latin1.pl
+++ b/tp/t/results/include/cpp_line_latin1.pl
@@ -318,6 +318,14 @@ $result_errors{'cpp_line_latin1'} = [
     'line_nr' => 102,
     'text' => 'unknown command `gggg\'',
     'type' => 'error'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'cpp_line_latin1.texi',
+    'line_nr' => 8,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/include/cpp_lines.pl 
b/tp/t/results/include/cpp_lines.pl
index b9629c6bc8..e629610272 100644
--- a/tp/t/results/include/cpp_lines.pl
+++ b/tp/t/results/include/cpp_lines.pl
@@ -1413,6 +1413,14 @@ $result_errors{'cpp_lines'} = [
     'line_nr' => 7,
     'text' => "l\x{e0}ng is not a valid language code",
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'g_f',
+    'line_nr' => 71,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/include/macro_and_commands_in_early_commands.pl 
b/tp/t/results/include/macro_and_commands_in_early_commands.pl
index 505c36f619..372d8d7b39 100644
--- a/tp/t/results/include/macro_and_commands_in_early_commands.pl
+++ b/tp/t/results/include/macro_and_commands_in_early_commands.pl
@@ -836,6 +836,13 @@ $result_errors{'macro_and_commands_in_early_commands'} = [
     'line_nr' => 11,
     'text' => 'encoding `ISO-8859-1@\' is not a canonical texinfo encoding',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 21,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/include/macro_in_early_commands.pl 
b/tp/t/results/include/macro_in_early_commands.pl
index abff2c101a..dcc74d3ca5 100644
--- a/tp/t/results/include/macro_in_early_commands.pl
+++ b/tp/t/results/include/macro_in_early_commands.pl
@@ -1013,7 +1013,15 @@ $result_menus{'macro_in_early_commands'} = [
   }
 ];
 
-$result_errors{'macro_in_early_commands'} = [];
+$result_errors{'macro_in_early_commands'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 28,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'macro_in_early_commands'} = {};
diff --git a/tp/t/results/include/value_expansion_in_include.pl 
b/tp/t/results/include/value_expansion_in_include.pl
index d9bf23685e..6304858f93 100644
--- a/tp/t/results/include/value_expansion_in_include.pl
+++ b/tp/t/results/include/value_expansion_in_include.pl
@@ -869,6 +869,13 @@ $result_errors{'value_expansion_in_include'} = [
     'line_nr' => 25,
     'text' => '@verbatiminclude should only appear at the beginning of a line',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 11,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/indices/complex_recursive_synindex.pl 
b/tp/t/results/indices/complex_recursive_synindex.pl
index 8c4e1a58b4..526e91e36c 100644
--- a/tp/t/results/indices/complex_recursive_synindex.pl
+++ b/tp/t/results/indices/complex_recursive_synindex.pl
@@ -1048,6 +1048,13 @@ $result_errors{'complex_recursive_synindex'} = [
     'line_nr' => 39,
     'text' => 'printing an index `eee\' merged in another one, `bbb\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git 
a/tp/t/results/indices/default_cp_index_and_one_letter_syncodeindex.pl 
b/tp/t/results/indices/default_cp_index_and_one_letter_syncodeindex.pl
index eedfbbb9c3..7b90de3409 100644
Binary files 
a/tp/t/results/indices/default_cp_index_and_one_letter_syncodeindex.pl and 
b/tp/t/results/indices/default_cp_index_and_one_letter_syncodeindex.pl differ
diff --git a/tp/t/results/indices/double_syncodeindex.pl 
b/tp/t/results/indices/double_syncodeindex.pl
index 57d8066699..2d4970df02 100644
--- a/tp/t/results/indices/double_syncodeindex.pl
+++ b/tp/t/results/indices/double_syncodeindex.pl
@@ -376,6 +376,13 @@ $result_errors{'double_syncodeindex'} = [
     'line_nr' => 11,
     'text' => 'printing an index `cp\' merged in another one, `fn\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 5,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/indices/empty_added_index_entry.pl 
b/tp/t/results/indices/empty_added_index_entry.pl
index 01ed517fe0..7f6e783cde 100644
--- a/tp/t/results/indices/empty_added_index_entry.pl
+++ b/tp/t/results/indices/empty_added_index_entry.pl
@@ -212,6 +212,13 @@ $result_errors{'empty_added_index_entry'} = [
     'line_nr' => 6,
     'text' => '@myindex missing argument',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 4,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/indices/empty_cindex_entry.pl 
b/tp/t/results/indices/empty_cindex_entry.pl
index aeae3be3f5..a0cc90f10e 100644
--- a/tp/t/results/indices/empty_cindex_entry.pl
+++ b/tp/t/results/indices/empty_cindex_entry.pl
@@ -163,6 +163,13 @@ $result_errors{'empty_cindex_entry'} = [
     'line_nr' => 3,
     'text' => '@cindex missing argument',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/indices/empty_index_entry.pl 
b/tp/t/results/indices/empty_index_entry.pl
index ef5bcfe059..8a241f2707 100644
--- a/tp/t/results/indices/empty_index_entry.pl
+++ b/tp/t/results/indices/empty_index_entry.pl
@@ -297,6 +297,13 @@ $result_errors{'empty_index_entry'} = [
     'line_nr' => 5,
     'text' => 'missing name for @deffn',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/indices/empty_string_index_entry.pl 
b/tp/t/results/indices/empty_string_index_entry.pl
index 4cecf2ce45..3427798fa4 100644
--- a/tp/t/results/indices/empty_string_index_entry.pl
+++ b/tp/t/results/indices/empty_string_index_entry.pl
@@ -671,6 +671,13 @@ $result_menus{'empty_string_index_entry'} = [
 ];
 
 $result_errors{'empty_string_index_entry'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  },
   {
     'error_line' => 'warning: empty index key in @findex
 ',
diff --git a/tp/t/results/indices/encoding_index_ascii.pl 
b/tp/t/results/indices/encoding_index_ascii.pl
index 2947e011b7..791d0599f0 100644
--- a/tp/t/results/indices/encoding_index_ascii.pl
+++ b/tp/t/results/indices/encoding_index_ascii.pl
@@ -2883,7 +2883,15 @@ $result_menus{'encoding_index_ascii'} = [
   }
 ];
 
-$result_errors{'encoding_index_ascii'} = [];
+$result_errors{'encoding_index_ascii'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 7,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'encoding_index_ascii'} = {};
diff --git a/tp/t/results/indices/encoding_index_ascii_enable_encoding.pl 
b/tp/t/results/indices/encoding_index_ascii_enable_encoding.pl
index 029724a778..da65e2ee47 100644
--- a/tp/t/results/indices/encoding_index_ascii_enable_encoding.pl
+++ b/tp/t/results/indices/encoding_index_ascii_enable_encoding.pl
@@ -2883,7 +2883,15 @@ $result_menus{'encoding_index_ascii_enable_encoding'} = [
   }
 ];
 
-$result_errors{'encoding_index_ascii_enable_encoding'} = [];
+$result_errors{'encoding_index_ascii_enable_encoding'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 7,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'encoding_index_ascii_enable_encoding'} = {};
diff --git a/tp/t/results/indices/encoding_index_latin1.pl 
b/tp/t/results/indices/encoding_index_latin1.pl
index 90ea55a2ca..8a5343be94 100644
--- a/tp/t/results/indices/encoding_index_latin1.pl
+++ b/tp/t/results/indices/encoding_index_latin1.pl
@@ -2828,7 +2828,16 @@ $result_menus{'encoding_index_latin1'} = [
   }
 ];
 
-$result_errors{'encoding_index_latin1'} = [];
+$result_errors{'encoding_index_latin1'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'encoding_index_latin1.texi',
+    'line_nr' => 7,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'encoding_index_latin1'} = {};
diff --git a/tp/t/results/indices/encoding_index_latin1_enable_encoding.pl 
b/tp/t/results/indices/encoding_index_latin1_enable_encoding.pl
index 88af602fbe..c4ab859264 100644
--- a/tp/t/results/indices/encoding_index_latin1_enable_encoding.pl
+++ b/tp/t/results/indices/encoding_index_latin1_enable_encoding.pl
@@ -2828,7 +2828,16 @@ $result_menus{'encoding_index_latin1_enable_encoding'} = 
[
   }
 ];
 
-$result_errors{'encoding_index_latin1_enable_encoding'} = [];
+$result_errors{'encoding_index_latin1_enable_encoding'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'encoding_index_latin1.texi',
+    'line_nr' => 7,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'encoding_index_latin1_enable_encoding'} = {};
diff --git a/tp/t/results/indices/encoding_index_utf8.pl 
b/tp/t/results/indices/encoding_index_utf8.pl
index 2fe8059956..f682cadcaa 100644
--- a/tp/t/results/indices/encoding_index_utf8.pl
+++ b/tp/t/results/indices/encoding_index_utf8.pl
@@ -2828,7 +2828,16 @@ $result_menus{'encoding_index_utf8'} = [
   }
 ];
 
-$result_errors{'encoding_index_utf8'} = [];
+$result_errors{'encoding_index_utf8'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'encoding_index_utf8.texi',
+    'line_nr' => 7,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'encoding_index_utf8'} = {};
diff --git a/tp/t/results/indices/encoding_index_utf8_enable_encoding.pl 
b/tp/t/results/indices/encoding_index_utf8_enable_encoding.pl
index 9477944d10..65e04e1a32 100644
--- a/tp/t/results/indices/encoding_index_utf8_enable_encoding.pl
+++ b/tp/t/results/indices/encoding_index_utf8_enable_encoding.pl
@@ -2828,7 +2828,16 @@ $result_menus{'encoding_index_utf8_enable_encoding'} = [
   }
 ];
 
-$result_errors{'encoding_index_utf8_enable_encoding'} = [];
+$result_errors{'encoding_index_utf8_enable_encoding'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'encoding_index_utf8.texi',
+    'line_nr' => 7,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'encoding_index_utf8_enable_encoding'} = {};
diff --git a/tp/t/results/indices/encoding_index_utf8_no_use_unicode.pl 
b/tp/t/results/indices/encoding_index_utf8_no_use_unicode.pl
index 51ad527c3f..a513fba458 100644
--- a/tp/t/results/indices/encoding_index_utf8_no_use_unicode.pl
+++ b/tp/t/results/indices/encoding_index_utf8_no_use_unicode.pl
@@ -2828,7 +2828,16 @@ $result_menus{'encoding_index_utf8_no_use_unicode'} = [
   }
 ];
 
-$result_errors{'encoding_index_utf8_no_use_unicode'} = [];
+$result_errors{'encoding_index_utf8_no_use_unicode'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'encoding_index_utf8.texi',
+    'line_nr' => 7,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'encoding_index_utf8_no_use_unicode'} = {};
diff --git a/tp/t/results/indices/explicit_sort_key.pl 
b/tp/t/results/indices/explicit_sort_key.pl
index 0998904185..6c31711477 100644
--- a/tp/t/results/indices/explicit_sort_key.pl
+++ b/tp/t/results/indices/explicit_sort_key.pl
@@ -726,6 +726,13 @@ $result_errors{'explicit_sort_key'} = [
     'line_nr' => 16,
     'text' => '@sortas should only appear in an index entry',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 4,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/indices/ftable_vtable.pl 
b/tp/t/results/indices/ftable_vtable.pl
index 758b495405..654c044225 100644
--- a/tp/t/results/indices/ftable_vtable.pl
+++ b/tp/t/results/indices/ftable_vtable.pl
@@ -740,7 +740,15 @@ $result_menus{'ftable_vtable'} = [
   }
 ];
 
-$result_errors{'ftable_vtable'} = [];
+$result_errors{'ftable_vtable'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'ftable_vtable'} = {};
diff --git a/tp/t/results/indices/ignored_sort_char_empty_entries.pl 
b/tp/t/results/indices/ignored_sort_char_empty_entries.pl
index e84c4d57d4..a7c680b95b 100644
--- a/tp/t/results/indices/ignored_sort_char_empty_entries.pl
+++ b/tp/t/results/indices/ignored_sort_char_empty_entries.pl
@@ -445,6 +445,13 @@ $result_menus{'ignored_sort_char_empty_entries'} = [
 ];
 
 $result_errors{'ignored_sort_char_empty_entries'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 6,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  },
   {
     'error_line' => 'warning: empty index key in @findex
 ',
diff --git a/tp/t/results/indices/index_entries_before_nodes.pl 
b/tp/t/results/indices/index_entries_before_nodes.pl
index 415862f106..612700377f 100644
Binary files a/tp/t/results/indices/index_entries_before_nodes.pl and 
b/tp/t/results/indices/index_entries_before_nodes.pl differ
diff --git a/tp/t/results/indices/index_entries_locations.pl 
b/tp/t/results/indices/index_entries_locations.pl
index 04b4bc829c..99d2423741 100644
--- a/tp/t/results/indices/index_entries_locations.pl
+++ b/tp/t/results/indices/index_entries_locations.pl
@@ -442,7 +442,15 @@ $result_menus{'index_entries_locations'} = [
   }
 ];
 
-$result_errors{'index_entries_locations'} = [];
+$result_errors{'index_entries_locations'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'index_entries_locations'} = {};
diff --git a/tp/t/results/indices/nodes_before_top.pl 
b/tp/t/results/indices/nodes_before_top.pl
index d3891b0d47..a67cf02878 100644
--- a/tp/t/results/indices/nodes_before_top.pl
+++ b/tp/t/results/indices/nodes_before_top.pl
@@ -2261,7 +2261,16 @@ 
$result_menus{'nodes_before_top'}[5]{'extra'}{'menu_directions'}{'prev'}{'extra'
 $result_menus{'nodes_before_top'}[5]{'extra'}{'menu_directions'}{'up'} = 
$result_menus{'nodes_before_top'}[4];
 $result_menus{'nodes_before_top'}[6] = 
$result_menus{'nodes_before_top'}[5]{'extra'}{'menu_directions'}{'prev'};
 
-$result_errors{'nodes_before_top'} = [];
+$result_errors{'nodes_before_top'} = [
+  {
+    'error_line' => 'warning: node `first before top\' not in menu
+',
+    'file_name' => 'nodes_before_top.texi',
+    'line_nr' => 6,
+    'text' => 'node `first before top\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_top'} = {};
diff --git a/tp/t/results/indices/nodes_before_top_and_sections_chapter.pl 
b/tp/t/results/indices/nodes_before_top_and_sections_chapter.pl
index 110c77c161..158b6492db 100644
--- a/tp/t/results/indices/nodes_before_top_and_sections_chapter.pl
+++ b/tp/t/results/indices/nodes_before_top_and_sections_chapter.pl
@@ -2920,7 +2920,16 @@ 
$result_menus{'nodes_before_top_and_sections_chapter'}[6] = $result_menus{'nodes
 $result_menus{'nodes_before_top_and_sections_chapter'}[7] = 
$result_menus{'nodes_before_top_and_sections_chapter'}[3]{'extra'}{'menu_directions'}{'next'};
 $result_menus{'nodes_before_top_and_sections_chapter'}[8] = 
$result_menus{'nodes_before_top_and_sections_chapter'}[3]{'extra'}{'menu_directions'}{'next'}{'extra'}{'menu_directions'}{'next'};
 
-$result_errors{'nodes_before_top_and_sections_chapter'} = [];
+$result_errors{'nodes_before_top_and_sections_chapter'} = [
+  {
+    'error_line' => 'warning: node `first before top\' not in menu
+',
+    'file_name' => 'nodes_before_top_and_sections.texi',
+    'line_nr' => 3,
+    'text' => 'node `first before top\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_top_and_sections_chapter'} = {};
diff --git 
a/tp/t/results/indices/nodes_before_top_and_sections_chapter_no_node.pl 
b/tp/t/results/indices/nodes_before_top_and_sections_chapter_no_node.pl
index 3d1b923ff2..4441e6e806 100644
--- a/tp/t/results/indices/nodes_before_top_and_sections_chapter_no_node.pl
+++ b/tp/t/results/indices/nodes_before_top_and_sections_chapter_no_node.pl
@@ -2920,7 +2920,16 @@ 
$result_menus{'nodes_before_top_and_sections_chapter_no_node'}[6] = $result_menu
 $result_menus{'nodes_before_top_and_sections_chapter_no_node'}[7] = 
$result_menus{'nodes_before_top_and_sections_chapter_no_node'}[3]{'extra'}{'menu_directions'}{'next'};
 $result_menus{'nodes_before_top_and_sections_chapter_no_node'}[8] = 
$result_menus{'nodes_before_top_and_sections_chapter_no_node'}[3]{'extra'}{'menu_directions'}{'next'}{'extra'}{'menu_directions'}{'next'};
 
-$result_errors{'nodes_before_top_and_sections_chapter_no_node'} = [];
+$result_errors{'nodes_before_top_and_sections_chapter_no_node'} = [
+  {
+    'error_line' => 'warning: node `first before top\' not in menu
+',
+    'file_name' => 'nodes_before_top_and_sections.texi',
+    'line_nr' => 3,
+    'text' => 'node `first before top\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_top_and_sections_chapter_no_node'} = {};
diff --git 
a/tp/t/results/indices/nodes_before_top_and_sections_unsplit_no_nodes.pl 
b/tp/t/results/indices/nodes_before_top_and_sections_unsplit_no_nodes.pl
index ecf667c8e6..6ff8635dc5 100644
--- a/tp/t/results/indices/nodes_before_top_and_sections_unsplit_no_nodes.pl
+++ b/tp/t/results/indices/nodes_before_top_and_sections_unsplit_no_nodes.pl
@@ -2920,7 +2920,16 @@ 
$result_menus{'nodes_before_top_and_sections_unsplit_no_nodes'}[6] = $result_men
 $result_menus{'nodes_before_top_and_sections_unsplit_no_nodes'}[7] = 
$result_menus{'nodes_before_top_and_sections_unsplit_no_nodes'}[3]{'extra'}{'menu_directions'}{'next'};
 $result_menus{'nodes_before_top_and_sections_unsplit_no_nodes'}[8] = 
$result_menus{'nodes_before_top_and_sections_unsplit_no_nodes'}[3]{'extra'}{'menu_directions'}{'next'}{'extra'}{'menu_directions'}{'next'};
 
-$result_errors{'nodes_before_top_and_sections_unsplit_no_nodes'} = [];
+$result_errors{'nodes_before_top_and_sections_unsplit_no_nodes'} = [
+  {
+    'error_line' => 'warning: node `first before top\' not in menu
+',
+    'file_name' => 'nodes_before_top_and_sections.texi',
+    'line_nr' => 3,
+    'text' => 'node `first before top\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_top_and_sections_unsplit_no_nodes'} = {};
diff --git a/tp/t/results/indices/nodes_before_top_split_chapter.pl 
b/tp/t/results/indices/nodes_before_top_split_chapter.pl
index aa4cafe399..4cd6162e48 100644
--- a/tp/t/results/indices/nodes_before_top_split_chapter.pl
+++ b/tp/t/results/indices/nodes_before_top_split_chapter.pl
@@ -2261,7 +2261,16 @@ 
$result_menus{'nodes_before_top_split_chapter'}[5]{'extra'}{'menu_directions'}{'
 
$result_menus{'nodes_before_top_split_chapter'}[5]{'extra'}{'menu_directions'}{'up'}
 = $result_menus{'nodes_before_top_split_chapter'}[4];
 $result_menus{'nodes_before_top_split_chapter'}[6] = 
$result_menus{'nodes_before_top_split_chapter'}[5]{'extra'}{'menu_directions'}{'prev'};
 
-$result_errors{'nodes_before_top_split_chapter'} = [];
+$result_errors{'nodes_before_top_split_chapter'} = [
+  {
+    'error_line' => 'warning: node `first before top\' not in menu
+',
+    'file_name' => 'nodes_before_top.texi',
+    'line_nr' => 6,
+    'text' => 'node `first before top\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_top_split_chapter'} = {};
diff --git a/tp/t/results/indices/nodes_before_top_split_chapter_no_nodes.pl 
b/tp/t/results/indices/nodes_before_top_split_chapter_no_nodes.pl
index 531ac00817..d3ceb31650 100644
--- a/tp/t/results/indices/nodes_before_top_split_chapter_no_nodes.pl
+++ b/tp/t/results/indices/nodes_before_top_split_chapter_no_nodes.pl
@@ -2261,7 +2261,16 @@ 
$result_menus{'nodes_before_top_split_chapter_no_nodes'}[5]{'extra'}{'menu_direc
 
$result_menus{'nodes_before_top_split_chapter_no_nodes'}[5]{'extra'}{'menu_directions'}{'up'}
 = $result_menus{'nodes_before_top_split_chapter_no_nodes'}[4];
 $result_menus{'nodes_before_top_split_chapter_no_nodes'}[6] = 
$result_menus{'nodes_before_top_split_chapter_no_nodes'}[5]{'extra'}{'menu_directions'}{'prev'};
 
-$result_errors{'nodes_before_top_split_chapter_no_nodes'} = [];
+$result_errors{'nodes_before_top_split_chapter_no_nodes'} = [
+  {
+    'error_line' => 'warning: node `first before top\' not in menu
+',
+    'file_name' => 'nodes_before_top.texi',
+    'line_nr' => 6,
+    'text' => 'node `first before top\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_top_split_chapter_no_nodes'} = {};
diff --git a/tp/t/results/indices/print_merged_index.pl 
b/tp/t/results/indices/print_merged_index.pl
index 9b51c5acaf..3386a19ae0 100644
--- a/tp/t/results/indices/print_merged_index.pl
+++ b/tp/t/results/indices/print_merged_index.pl
@@ -200,6 +200,13 @@ $result_errors{'print_merged_index'} = [
     'line_nr' => 4,
     'text' => 'printing an index `fn\' merged in another one, `cp\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/indices/printindex_with_space_before.pl 
b/tp/t/results/indices/printindex_with_space_before.pl
index dba705e8d9..baedf98d5b 100644
Binary files a/tp/t/results/indices/printindex_with_space_before.pl and 
b/tp/t/results/indices/printindex_with_space_before.pl differ
diff --git a/tp/t/results/indices/seealso_duplicate.pl 
b/tp/t/results/indices/seealso_duplicate.pl
index c89c314050..a6b654ec76 100644
--- a/tp/t/results/indices/seealso_duplicate.pl
+++ b/tp/t/results/indices/seealso_duplicate.pl
@@ -538,7 +538,15 @@ $result_menus{'seealso_duplicate'} = [
   }
 ];
 
-$result_errors{'seealso_duplicate'} = [];
+$result_errors{'seealso_duplicate'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'seealso_duplicate'} = {};
diff --git a/tp/t/results/indices/syncodeindex_to_plain.pl 
b/tp/t/results/indices/syncodeindex_to_plain.pl
index bfbe0b5b6a..c1198a1039 100644
--- a/tp/t/results/indices/syncodeindex_to_plain.pl
+++ b/tp/t/results/indices/syncodeindex_to_plain.pl
@@ -402,7 +402,15 @@ $result_menus{'syncodeindex_to_plain'} = [
   }
 ];
 
-$result_errors{'syncodeindex_to_plain'} = [];
+$result_errors{'syncodeindex_to_plain'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 4,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_indices{'syncodeindex_to_plain'} = {
diff --git a/tp/t/results/indices/transparent_sort_chars.pl 
b/tp/t/results/indices/transparent_sort_chars.pl
index 52b44bff2e..a431aaf4ce 100644
--- a/tp/t/results/indices/transparent_sort_chars.pl
+++ b/tp/t/results/indices/transparent_sort_chars.pl
@@ -416,7 +416,15 @@ $result_menus{'transparent_sort_chars'} = [
   }
 ];
 
-$result_errors{'transparent_sort_chars'} = [];
+$result_errors{'transparent_sort_chars'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 6,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'transparent_sort_chars'} = {};
diff --git a/tp/t/results/init_files_tests/undefined_node_filename.pl 
b/tp/t/results/init_files_tests/undefined_node_filename.pl
index 868dcc5d64..4ce1252f88 100644
--- a/tp/t/results/init_files_tests/undefined_node_filename.pl
+++ b/tp/t/results/init_files_tests/undefined_node_filename.pl
@@ -141,7 +141,15 @@ $result_menus{'undefined_node_filename'} = [
   }
 ];
 
-$result_errors{'undefined_node_filename'} = [];
+$result_errors{'undefined_node_filename'} = [
+  {
+    'error_line' => 'warning: node `chap Other\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap Other\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'undefined_node_filename'} = {};
diff --git a/tp/t/results/invalid_nestings/in_table.pl 
b/tp/t/results/invalid_nestings/in_table.pl
index 83d664d87c..56029ff8c1 100644
--- a/tp/t/results/invalid_nestings/in_table.pl
+++ b/tp/t/results/invalid_nestings/in_table.pl
@@ -1155,6 +1155,13 @@ $result_errors{'in_table'} = [
     'text' => '@cindex should not appear in @item',
     'type' => 'warning'
   },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  },
   {
     'error_line' => 'warning: empty index key in @item
 ',
diff --git a/tp/t/results/languages/simple_documentlanguage.pl 
b/tp/t/results/languages/simple_documentlanguage.pl
index 7f56534a59..66f950c85e 100644
--- a/tp/t/results/languages/simple_documentlanguage.pl
+++ b/tp/t/results/languages/simple_documentlanguage.pl
@@ -398,7 +398,15 @@ $result_menus{'simple_documentlanguage'} = [
   }
 ];
 
-$result_errors{'simple_documentlanguage'} = [];
+$result_errors{'simple_documentlanguage'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 4,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'simple_documentlanguage'} = {};
diff --git a/tp/t/results/languages/unknown_region.pl 
b/tp/t/results/languages/unknown_region.pl
index 411e05a336..32be5e9082 100644
--- a/tp/t/results/languages/unknown_region.pl
+++ b/tp/t/results/languages/unknown_region.pl
@@ -405,6 +405,13 @@ $result_errors{'unknown_region'} = [
     'line_nr' => 1,
     'text' => 'NOWHERE is not a valid region code',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 4,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/latex_tests/node_before_top.pl 
b/tp/t/results/latex_tests/node_before_top.pl
index f55ec3ccd5..1f54820377 100644
--- a/tp/t/results/latex_tests/node_before_top.pl
+++ b/tp/t/results/latex_tests/node_before_top.pl
@@ -373,7 +373,15 @@ $result_menus{'node_before_top'} = [
   }
 ];
 
-$result_errors{'node_before_top'} = [];
+$result_errors{'node_before_top'} = [
+  {
+    'error_line' => 'warning: node `before Top\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `before Top\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'node_before_top'} = {};
diff --git a/tp/t/results/macro/backslash_in_arg.pl 
b/tp/t/results/macro/backslash_in_arg.pl
index 80d09208ab..584dd97888 100644
--- a/tp/t/results/macro/backslash_in_arg.pl
+++ b/tp/t/results/macro/backslash_in_arg.pl
@@ -527,7 +527,15 @@ $result_menus{'backslash_in_arg'} = [
   }
 ];
 
-$result_errors{'backslash_in_arg'} = [];
+$result_errors{'backslash_in_arg'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'backslash_in_arg'} = {};
diff --git a/tp/t/results/macro/macro_in_index_commands.pl 
b/tp/t/results/macro/macro_in_index_commands.pl
index 3708383737..6d6e65f976 100644
--- a/tp/t/results/macro/macro_in_index_commands.pl
+++ b/tp/t/results/macro/macro_in_index_commands.pl
@@ -1409,6 +1409,13 @@ $result_errors{'macro_in_index_commands'} = [
     'line_nr' => 50,
     'text' => 'printing an index `cp\' merged in another one, `fn\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 37,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/menu/empty_menu_entry_name.pl 
b/tp/t/results/menu/empty_menu_entry_name.pl
index 923e3c8a11..3a6b8b6531 100644
--- a/tp/t/results/menu/empty_menu_entry_name.pl
+++ b/tp/t/results/menu/empty_menu_entry_name.pl
@@ -337,6 +337,13 @@ $result_errors{'empty_menu_entry_name'} = [
     'line_nr' => 5,
     'text' => 'empty menu entry name in `* :aaa,\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `first\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `first\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/menu/sc_in_menu.pl b/tp/t/results/menu/sc_in_menu.pl
index 3e04fa3a9d..75f253a953 100644
--- a/tp/t/results/menu/sc_in_menu.pl
+++ b/tp/t/results/menu/sc_in_menu.pl
@@ -808,6 +808,13 @@ $result_errors{'sc_in_menu'} = [
     'line_nr' => 19,
     'text' => '@menu in invalid context',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `first\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `first\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/misc_commands/test_allowcodebreaks.pl 
b/tp/t/results/misc_commands/test_allowcodebreaks.pl
index 68e78ec72a..c098fb6e4f 100644
--- a/tp/t/results/misc_commands/test_allowcodebreaks.pl
+++ b/tp/t/results/misc_commands/test_allowcodebreaks.pl
@@ -2255,6 +2255,13 @@ $result_errors{'test_allowcodebreaks'} = [
     'macro' => 'testallowcodebreakspara',
     'text' => '@anchor should not appear anywhere inside @w',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/moresectioning/nodes_before_after_top_xref.pl 
b/tp/t/results/moresectioning/nodes_before_after_top_xref.pl
index b02d324493..5149bc3369 100644
--- a/tp/t/results/moresectioning/nodes_before_after_top_xref.pl
+++ b/tp/t/results/moresectioning/nodes_before_after_top_xref.pl
@@ -718,7 +718,22 @@ $result_menus{'nodes_before_after_top_xref'} = [
   }
 ];
 
-$result_errors{'nodes_before_after_top_xref'} = [];
+$result_errors{'nodes_before_after_top_xref'} = [
+  {
+    'error_line' => 'warning: node `node before\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `node before\' not in menu',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `after\' not in menu
+',
+    'line_nr' => 12,
+    'text' => 'node `after\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_after_top_xref'} = {};
diff --git 
a/tp/t/results/moresectioning/nodes_no_section_footnote_no_top_node_output.pl 
b/tp/t/results/moresectioning/nodes_no_section_footnote_no_top_node_output.pl
index 4c86003a5d..0fcaed0d60 100644
--- 
a/tp/t/results/moresectioning/nodes_no_section_footnote_no_top_node_output.pl
+++ 
b/tp/t/results/moresectioning/nodes_no_section_footnote_no_top_node_output.pl
@@ -177,7 +177,15 @@ 
$result_menus{'nodes_no_section_footnote_no_top_node_output'} = [
   }
 ];
 
-$result_errors{'nodes_no_section_footnote_no_top_node_output'} = [];
+$result_errors{'nodes_no_section_footnote_no_top_node_output'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_no_section_footnote_no_top_node_output'} = {};
diff --git a/tp/t/results/plaintext_tests/all_spaces.pl 
b/tp/t/results/plaintext_tests/all_spaces.pl
index a55bae2867..376d9d6591 100644
--- a/tp/t/results/plaintext_tests/all_spaces.pl
+++ b/tp/t/results/plaintext_tests/all_spaces.pl
@@ -613,7 +613,16 @@ $result_menus{'all_spaces'} = [
   }
 ];
 
-$result_errors{'all_spaces'} = [];
+$result_errors{'all_spaces'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'file_name' => 'all_spaces.texi',
+    'line_nr' => 4,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'all_spaces'} = {};
diff --git a/tp/t/results/regions/anchor_in_copying.pl 
b/tp/t/results/regions/anchor_in_copying.pl
index 517a75321e..07f5e08c38 100644
--- a/tp/t/results/regions/anchor_in_copying.pl
+++ b/tp/t/results/regions/anchor_in_copying.pl
@@ -360,7 +360,15 @@ $result_menus{'anchor_in_copying'} = [
   }
 ];
 
-$result_errors{'anchor_in_copying'} = [];
+$result_errors{'anchor_in_copying'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 11,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'anchor_in_copying'} = {};
diff --git a/tp/t/results/regions/anchor_in_copying_in_footnote.pl 
b/tp/t/results/regions/anchor_in_copying_in_footnote.pl
index 1e449951fd..6ccf58b3c0 100644
--- a/tp/t/results/regions/anchor_in_copying_in_footnote.pl
+++ b/tp/t/results/regions/anchor_in_copying_in_footnote.pl
@@ -383,7 +383,15 @@ $result_menus{'anchor_in_copying_in_footnote'} = [
   }
 ];
 
-$result_errors{'anchor_in_copying_in_footnote'} = [];
+$result_errors{'anchor_in_copying_in_footnote'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 12,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'anchor_in_copying_in_footnote'} = {};
diff --git a/tp/t/results/regions/anchor_in_titlepage.pl 
b/tp/t/results/regions/anchor_in_titlepage.pl
index 39f92aaf1c..eecdbc1995 100644
--- a/tp/t/results/regions/anchor_in_titlepage.pl
+++ b/tp/t/results/regions/anchor_in_titlepage.pl
@@ -404,7 +404,15 @@ $result_menus{'anchor_in_titlepage'} = [
   }
 ];
 
-$result_errors{'anchor_in_titlepage'} = [];
+$result_errors{'anchor_in_titlepage'} = [
+  {
+    'error_line' => 'warning: node `nchap\' not in menu
+',
+    'line_nr' => 10,
+    'text' => 'node `nchap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'anchor_in_titlepage'} = {};
diff --git a/tp/t/results/regions/anchor_in_titlepage_titlepage.pl 
b/tp/t/results/regions/anchor_in_titlepage_titlepage.pl
index db22e6831e..e24bac8b28 100644
--- a/tp/t/results/regions/anchor_in_titlepage_titlepage.pl
+++ b/tp/t/results/regions/anchor_in_titlepage_titlepage.pl
@@ -404,7 +404,15 @@ $result_menus{'anchor_in_titlepage_titlepage'} = [
   }
 ];
 
-$result_errors{'anchor_in_titlepage_titlepage'} = [];
+$result_errors{'anchor_in_titlepage_titlepage'} = [
+  {
+    'error_line' => 'warning: node `nchap\' not in menu
+',
+    'line_nr' => 10,
+    'text' => 'node `nchap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'anchor_in_titlepage_titlepage'} = {};
diff --git a/tp/t/results/regions/format_in_titlepage.pl 
b/tp/t/results/regions/format_in_titlepage.pl
index 828cc98819..a6909f7b53 100644
--- a/tp/t/results/regions/format_in_titlepage.pl
+++ b/tp/t/results/regions/format_in_titlepage.pl
@@ -280,7 +280,15 @@ $result_menus{'format_in_titlepage'} = [
   }
 ];
 
-$result_errors{'format_in_titlepage'} = [];
+$result_errors{'format_in_titlepage'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 10,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'format_in_titlepage'} = {};
diff --git a/tp/t/results/regions/format_in_titlepage_titlepage.pl 
b/tp/t/results/regions/format_in_titlepage_titlepage.pl
index afadccf7e7..35b7536ac4 100644
--- a/tp/t/results/regions/format_in_titlepage_titlepage.pl
+++ b/tp/t/results/regions/format_in_titlepage_titlepage.pl
@@ -280,7 +280,15 @@ $result_menus{'format_in_titlepage_titlepage'} = [
   }
 ];
 
-$result_errors{'format_in_titlepage_titlepage'} = [];
+$result_errors{'format_in_titlepage_titlepage'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 10,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'format_in_titlepage_titlepage'} = {};
diff --git a/tp/t/results/regions/today_in_copying.pl 
b/tp/t/results/regions/today_in_copying.pl
index ac7443784f..46ddbcf338 100644
--- a/tp/t/results/regions/today_in_copying.pl
+++ b/tp/t/results/regions/today_in_copying.pl
@@ -309,7 +309,15 @@ $result_menus{'today_in_copying'} = [
   }
 ];
 
-$result_errors{'today_in_copying'} = [];
+$result_errors{'today_in_copying'} = [
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 8,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'today_in_copying'} = {};
diff --git a/tp/t/results/sectioning/character_and_spaces_in_node.pl 
b/tp/t/results/sectioning/character_and_spaces_in_node.pl
index ec088561ee..219469ff04 100644
--- a/tp/t/results/sectioning/character_and_spaces_in_node.pl
+++ b/tp/t/results/sectioning/character_and_spaces_in_node.pl
@@ -527,7 +527,36 @@ $result_menus{'character_and_spaces_in_node'} = [
   }
 ];
 
-$result_errors{'character_and_spaces_in_node'} = [];
+$result_errors{'character_and_spaces_in_node'} = [
+  {
+    'error_line' => 'warning: node `chap nodes\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `chap nodes\' not in menu',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `!_"#$%&\'()*+-.\' not in menu
+',
+    'line_nr' => 4,
+    'text' => 'node `!_"#$%&\'()*+-.\' not in menu',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `/;<=>?[\\]^_`|~\' not in menu
+',
+    'line_nr' => 5,
+    'text' => 'node `/;<=>?[\\]^_`|~\' not in menu',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `local   node\' not in menu
+',
+    'line_nr' => 6,
+    'text' => 'node `local   node\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'character_and_spaces_in_node'} = {};
diff --git a/tp/t/results/sectioning/double_node_anchor_float.pl 
b/tp/t/results/sectioning/double_node_anchor_float.pl
index 3c23300bc0..f11a89603d 100644
--- a/tp/t/results/sectioning/double_node_anchor_float.pl
+++ b/tp/t/results/sectioning/double_node_anchor_float.pl
@@ -652,6 +652,13 @@ $result_errors{'double_node_anchor_float'} = [
     'line_nr' => 1,
     'text' => 'here is the previous definition as @node',
     'type' => 'error'
+  },
+  {
+    'error_line' => 'warning: node `node1\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `node1\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git 
a/tp/t/results/sectioning/double_recursive_self_section_node_reference.pl 
b/tp/t/results/sectioning/double_recursive_self_section_node_reference.pl
index 53b03f086b..ff86c35369 100644
--- a/tp/t/results/sectioning/double_recursive_self_section_node_reference.pl
+++ b/tp/t/results/sectioning/double_recursive_self_section_node_reference.pl
@@ -391,6 +391,13 @@ 
$result_errors{'double_recursive_self_section_node_reference'} = [
     'line_nr' => 5,
     'text' => '@ref to `to node1\', different from node name `to 
@ref{node1}\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `to @ref{node1}\' not in menu
+',
+    'line_nr' => 7,
+    'text' => 'node `to @ref{node1}\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git 
a/tp/t/results/sectioning/double_recursive_self_section_node_reference_no_use_node.pl
 
b/tp/t/results/sectioning/double_recursive_self_section_node_reference_no_use_node.pl
index 7a0e78ba14..f6cf7c890a 100644
--- 
a/tp/t/results/sectioning/double_recursive_self_section_node_reference_no_use_node.pl
+++ 
b/tp/t/results/sectioning/double_recursive_self_section_node_reference_no_use_node.pl
@@ -391,6 +391,13 @@ 
$result_errors{'double_recursive_self_section_node_reference_no_use_node'} = [
     'line_nr' => 5,
     'text' => '@ref to `to node1\', different from node name `to 
@ref{node1}\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `to @ref{node1}\' not in menu
+',
+    'line_nr' => 7,
+    'text' => 'node `to @ref{node1}\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/sectioning/equivalent_nodes.pl 
b/tp/t/results/sectioning/equivalent_nodes.pl
index 50d14e4e1c..541684f8a3 100644
--- a/tp/t/results/sectioning/equivalent_nodes.pl
+++ b/tp/t/results/sectioning/equivalent_nodes.pl
@@ -376,6 +376,13 @@ $result_errors{'equivalent_nodes'} = [
     'line_nr' => 4,
     'text' => '@menu entry node name `@strong{node}\' different from node name 
`@samp{node}\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `first\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `first\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/sectioning/equivalent_nodes_novalidate.pl 
b/tp/t/results/sectioning/equivalent_nodes_novalidate.pl
index 0c9c31b356..96b5c65afa 100644
--- a/tp/t/results/sectioning/equivalent_nodes_novalidate.pl
+++ b/tp/t/results/sectioning/equivalent_nodes_novalidate.pl
@@ -378,7 +378,15 @@ $result_menus{'equivalent_nodes_novalidate'} = [
 ];
 
$result_menus{'equivalent_nodes_novalidate'}[1]{'extra'}{'menu_directions'}{'up'}
 = $result_menus{'equivalent_nodes_novalidate'}[0];
 
-$result_errors{'equivalent_nodes_novalidate'} = [];
+$result_errors{'equivalent_nodes_novalidate'} = [
+  {
+    'error_line' => 'warning: node `first\' not in menu
+',
+    'line_nr' => 3,
+    'text' => 'node `first\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'equivalent_nodes_novalidate'} = {};
diff --git a/tp/t/results/sectioning/node_line_arguments.pl 
b/tp/t/results/sectioning/node_line_arguments.pl
index 9c1a8629fb..5dc3c9c776 100644
--- a/tp/t/results/sectioning/node_line_arguments.pl
+++ b/tp/t/results/sectioning/node_line_arguments.pl
@@ -764,6 +764,13 @@ $result_errors{'node_line_arguments'} = [
     'text' => 'Prev reference to nonexistent `@strong{comma in strong,}\'',
     'type' => 'error'
   },
+  {
+    'error_line' => 'warning: node `one arg1\' not in menu
+',
+    'line_nr' => 2,
+    'text' => 'node `one arg1\' not in menu',
+    'type' => 'warning'
+  },
   {
     'error_line' => 'warning: node `one arg2\' unreferenced
 ',
diff --git a/tp/t/results/sectioning/node_referenced_in_ref.pl 
b/tp/t/results/sectioning/node_referenced_in_ref.pl
index ccf0165313..eb78e7a038 100644
--- a/tp/t/results/sectioning/node_referenced_in_ref.pl
+++ b/tp/t/results/sectioning/node_referenced_in_ref.pl
@@ -353,7 +353,15 @@ $result_menus{'node_referenced_in_ref'} = [
 ];
 $result_menus{'node_referenced_in_ref'}[1]{'extra'}{'menu_directions'}{'up'} = 
$result_menus{'node_referenced_in_ref'}[0];
 
-$result_errors{'node_referenced_in_ref'} = [];
+$result_errors{'node_referenced_in_ref'} = [
+  {
+    'error_line' => 'warning: node `second level node\' not in menu
+',
+    'line_nr' => 11,
+    'text' => 'node `second level node\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'node_referenced_in_ref'} = {};
diff --git a/tp/t/results/sectioning/nodes_before_top.pl 
b/tp/t/results/sectioning/nodes_before_top.pl
index fc6af7ee8a..e1cdccb54d 100644
--- a/tp/t/results/sectioning/nodes_before_top.pl
+++ b/tp/t/results/sectioning/nodes_before_top.pl
@@ -726,7 +726,15 @@ $result_menus{'nodes_before_top'} = [
 $result_menus{'nodes_before_top'}[1]{'extra'}{'menu_directions'}{'up'} = 
$result_menus{'nodes_before_top'}[0];
 $result_menus{'nodes_before_top'}[3]{'extra'}{'menu_directions'}{'up'} = 
$result_menus{'nodes_before_top'}[2];
 
-$result_errors{'nodes_before_top'} = [];
+$result_errors{'nodes_before_top'} = [
+  {
+    'error_line' => 'warning: node `first\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `first\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_before_top'} = {};
diff --git a/tp/t/results/sectioning/nodes_no_node_top_explicit_directions.pl 
b/tp/t/results/sectioning/nodes_no_node_top_explicit_directions.pl
index 83f9410d6c..9a7179743f 100644
--- a/tp/t/results/sectioning/nodes_no_node_top_explicit_directions.pl
+++ b/tp/t/results/sectioning/nodes_no_node_top_explicit_directions.pl
@@ -447,7 +447,15 @@ 
$result_menus{'nodes_no_node_top_explicit_directions'}[0]{'associated_unit'}{'tr
 
$result_menus{'nodes_no_node_top_explicit_directions'}[0]{'associated_unit'}{'unit_command'}
 = $result_menus{'nodes_no_node_top_explicit_directions'}[0];
 $result_menus{'nodes_no_node_top_explicit_directions'}[1] = 
$result_menus{'nodes_no_node_top_explicit_directions'}[0]{'associated_unit'}{'directions'}{'Forward'}{'unit_command'};
 
-$result_errors{'nodes_no_node_top_explicit_directions'} = [];
+$result_errors{'nodes_no_node_top_explicit_directions'} = [
+  {
+    'error_line' => 'warning: node `first\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `first\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'nodes_no_node_top_explicit_directions'} = {};
diff --git a/tp/t/results/sectioning/section_before_after_top_node_last_node.pl 
b/tp/t/results/sectioning/section_before_after_top_node_last_node.pl
index 5d43a3833d..822fabbb2b 100644
--- a/tp/t/results/sectioning/section_before_after_top_node_last_node.pl
+++ b/tp/t/results/sectioning/section_before_after_top_node_last_node.pl
@@ -349,6 +349,13 @@ $result_errors{'section_before_after_top_node_last_node'} 
= [
     'line_nr' => 4,
     'text' => 'lowering the section level of @top appearing after a lower 
element',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `node after\' not in menu
+',
+    'line_nr' => 10,
+    'text' => 'node `node after\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/sectioning/unnumbered_top_without_node_nodes.pl 
b/tp/t/results/sectioning/unnumbered_top_without_node_nodes.pl
index 89c87a7b4b..a92813ced1 100644
--- a/tp/t/results/sectioning/unnumbered_top_without_node_nodes.pl
+++ b/tp/t/results/sectioning/unnumbered_top_without_node_nodes.pl
@@ -611,6 +611,13 @@ $result_errors{'unnumbered_top_without_node_nodes'} = [
     'text' => 'lowering the section level of @top appearing after a lower 
element',
     'type' => 'warning'
   },
+  {
+    'error_line' => 'warning: node `a node\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `a node\' not in menu',
+    'type' => 'warning'
+  },
   {
     'error_line' => 'warning: node `second\' unreferenced
 ',
diff --git a/tp/t/results/sectioning/unnumbered_top_without_node_sections.pl 
b/tp/t/results/sectioning/unnumbered_top_without_node_sections.pl
index b1da4e4c08..0affdf8709 100644
--- a/tp/t/results/sectioning/unnumbered_top_without_node_sections.pl
+++ b/tp/t/results/sectioning/unnumbered_top_without_node_sections.pl
@@ -717,6 +717,13 @@ $result_errors{'unnumbered_top_without_node_sections'} = [
     'text' => 'lowering the section level of @top appearing after a lower 
element',
     'type' => 'warning'
   },
+  {
+    'error_line' => 'warning: node `a node\' not in menu
+',
+    'line_nr' => 1,
+    'text' => 'node `a node\' not in menu',
+    'type' => 'warning'
+  },
   {
     'error_line' => 'warning: node `second\' unreferenced
 ',
diff --git a/tp/t/results/value/value_in_index_commands.pl 
b/tp/t/results/value/value_in_index_commands.pl
index 1175e1106c..04cb101afb 100644
--- a/tp/t/results/value/value_in_index_commands.pl
+++ b/tp/t/results/value/value_in_index_commands.pl
@@ -1135,6 +1135,13 @@ $result_errors{'value_in_index_commands'} = [
     'line_nr' => 36,
     'text' => 'printing an index `cp\' merged in another one, `fn\'',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 23,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/value/value_in_misc_commands.pl 
b/tp/t/results/value/value_in_misc_commands.pl
index ffb5a22584..fd6823b677 100644
--- a/tp/t/results/value/value_in_misc_commands.pl
+++ b/tp/t/results/value/value_in_misc_commands.pl
@@ -4221,6 +4221,13 @@ $result_errors{'value_in_misc_commands'} = [
     'line_nr' => 143,
     'text' => 'remaining argument on @clickstyle line: {result_macro}',
     'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `chap\' not in menu
+',
+    'line_nr' => 6,
+    'text' => 'node `chap\' not in menu',
+    'type' => 'warning'
   }
 ];
 
diff --git a/tp/t/results/value/value_node_directions.pl 
b/tp/t/results/value/value_node_directions.pl
index 091bb35478..a02ad7f6c8 100644
--- a/tp/t/results/value/value_node_directions.pl
+++ b/tp/t/results/value/value_node_directions.pl
@@ -803,7 +803,22 @@ $result_menus{'value_node_directions'} = [
   }
 ];
 
-$result_errors{'value_node_directions'} = [];
+$result_errors{'value_node_directions'} = [
+  {
+    'error_line' => 'warning: node `bar\' not in menu
+',
+    'line_nr' => 7,
+    'text' => 'node `bar\' not in menu',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: node `BarFoo\' not in menu
+',
+    'line_nr' => 10,
+    'text' => 'node `BarFoo\' not in menu',
+    'type' => 'warning'
+  }
+];
 
 
 $result_floats{'value_node_directions'} = {};



reply via email to

[Prev in Thread] Current Thread [Next in Thread]