texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/ParserNonXS.pm (_end_line), tp/Texin


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/ParserNonXS.pm (_end_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): avoid a double error message when there are both superfluous arg and a bad @end argument.
Date: Tue, 20 Sep 2022 15:48:22 -0400

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 8af33a1d70 * tp/Texinfo/ParserNonXS.pm (_end_line), 
tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): avoid a double error 
message when there are both superfluous arg and a bad @end argument.
8af33a1d70 is described below

commit 8af33a1d70f836ce1c7666a4d3d4f4d557c51e07
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Tue Sep 20 21:48:07 2022 +0200

    * tp/Texinfo/ParserNonXS.pm (_end_line),
    tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): avoid
    a double error message when there are both superfluous arg and
    a bad @end argument.
---
 ChangeLog                                          |   7 +
 tp/Texinfo/ParserNonXS.pm                          |  11 +-
 tp/Texinfo/XS/parsetexi/end_line.c                 |   4 +-
 tp/t/02coverage.t                                  |   5 +
 .../end_bad_end_argument_and_superfluous_arg.pl    | 147 +++++++++++++++++++++
 5 files changed, 167 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3b6abcea1d..7cebc2df26 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2022-09-20  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/ParserNonXS.pm (_end_line),
+       tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): avoid
+       a double error message when there are both superfluous arg and
+       a bad @end argument.
+
 2022-09-19  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/ParserNonXS.pm (_end_line): same error messages
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 9181ab8619..ae96468fa7 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -3258,24 +3258,23 @@ sub _end_line($$$)
                 }
               }
             }
-            # non ascii spaces are also superfluous arguments
+            # non-ASCII spaces are also superfluous arguments
             if (($superfluous_arg or $remaining_on_line =~ /\S/)
                 and defined($end_command)) {
               my $texi_line
                 = Texinfo::Convert::Texinfo::convert_to_texinfo(
                                                        
$current->{'args'}->[0]);
               # FIXME an @-command will truncate the identifier, while it
-              # could have been expanded above in $text.  Also the errors
-              # are different if there are one or 2 leading letters
+              # could have been expanded above in $text.
               $texi_line =~ s/^\s*([[:alnum:]][[:alnum:]-]*)//;
               $self->_command_error($current, $source_info,
                              __("superfluous argument to \@%s %s: %s"),
                              $command, $end_command, $texi_line);
               $superfluous_arg = 0; # Don't issue another error message below.
             }
-          } else {
-            # FIXME if $superfluous_arg, there will be a second
-            # error message below
+          # if $superfluous_arg is set there is a similar and somewhat
+          # better error message below
+          } elsif (!$superfluous_arg) {
             $self->_command_error($current, $source_info,
                               __("bad argument to \@%s: %s"),
                               $command, $remaining_on_line);
diff --git a/tp/Texinfo/XS/parsetexi/end_line.c 
b/tp/Texinfo/XS/parsetexi/end_line.c
index 08e0f92eae..9459c9d6f9 100644
--- a/tp/Texinfo/XS/parsetexi/end_line.c
+++ b/tp/Texinfo/XS/parsetexi/end_line.c
@@ -1402,7 +1402,9 @@ end_line_misc_line (ELEMENT *current)
                         }
                     }
                 }
-              else
+              /* if superfluous_arg is set there is a similar and somewhat
+                 better error message below */
+              else if (!superfluous_arg)
                 {
                   command_error (current, "bad argument to @end: %s", line);
                 }
diff --git a/tp/t/02coverage.t b/tp/t/02coverage.t
index 5b5e32c5b0..c0a305aadf 100644
--- a/tp/t/02coverage.t
+++ b/tp/t/02coverage.t
@@ -823,6 +823,11 @@ In quotation
 In verbatim
 @end verb@code{a}tim
 '],
+['end_bad_end_argument_and_superfluous_arg',
+'@quotation
+In quotation
+@end : @code{in c}
+'],
 ['symbol_after_block',
 '@html
 In html
diff --git a/tp/t/results/coverage/end_bad_end_argument_and_superfluous_arg.pl 
b/tp/t/results/coverage/end_bad_end_argument_and_superfluous_arg.pl
new file mode 100644
index 0000000000..1cc5a18fb6
--- /dev/null
+++ b/tp/t/results/coverage/end_bad_end_argument_and_superfluous_arg.pl
@@ -0,0 +1,147 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors 
+   %result_indices %result_sectioning %result_nodes %result_menus
+   %result_floats %result_converted %result_converted_errors 
+   %result_elements %result_directions_text %result_indices_sort_strings);
+
+use utf8;
+
+$result_trees{'end_bad_end_argument_and_superfluous_arg'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'extra' => {
+                'spaces_after_argument' => '
+'
+              },
+              'parent' => {},
+              'type' => 'block_line_arg'
+            }
+          ],
+          'cmdname' => 'quotation',
+          'contents' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'In quotation
+'
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => ': '
+                        },
+                        {
+                          'args' => [
+                            {
+                              'contents' => [
+                                {
+                                  'parent' => {},
+                                  'text' => 'in c'
+                                }
+                              ],
+                              'parent' => {},
+                              'type' => 'brace_command_arg'
+                            }
+                          ],
+                          'cmdname' => 'code',
+                          'parent' => {},
+                          'source_info' => {
+                            'file_name' => '',
+                            'line_nr' => 3,
+                            'macro' => ''
+                          }
+                        }
+                      ],
+                      'extra' => {
+                        'spaces_after_argument' => '
+'
+                      },
+                      'parent' => {},
+                      'type' => 'line_arg'
+                    }
+                  ],
+                  'cmdname' => 'end',
+                  'extra' => {
+                    'spaces_before_argument' => ' ',
+                    'text_arg' => ': '
+                  },
+                  'parent' => {},
+                  'source_info' => {
+                    'file_name' => '',
+                    'line_nr' => 3,
+                    'macro' => ''
+                  }
+                }
+              ],
+              'parent' => {},
+              'type' => 'paragraph'
+            }
+          ],
+          'parent' => {},
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 1,
+            'macro' => ''
+          }
+        }
+      ],
+      'parent' => {},
+      'type' => 'before_node_section'
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0];
+$result_trees{'end_bad_end_argument_and_superfluous_arg'}{'contents'}[0]{'parent'}
 = $result_trees{'end_bad_end_argument_and_superfluous_arg'};
+
+$result_texis{'end_bad_end_argument_and_superfluous_arg'} = '@quotation
+In quotation
+@end : @code{in c}
+';
+
+
+$result_texts{'end_bad_end_argument_and_superfluous_arg'} = 'In quotation
+';
+
+$result_errors{'end_bad_end_argument_and_superfluous_arg'} = [
+  {
+    'error_line' => 'bad argument to @end: : @code{in c}
+',
+    'file_name' => '',
+    'line_nr' => 3,
+    'macro' => '',
+    'text' => 'bad argument to @end: : @code{in c}',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'no matching `@end quotation\'
+',
+    'file_name' => '',
+    'line_nr' => 3,
+    'macro' => '',
+    'text' => 'no matching `@end quotation\'',
+    'type' => 'error'
+  }
+];
+
+
+$result_floats{'end_bad_end_argument_and_superfluous_arg'} = {};
+
+
+1;



reply via email to

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