[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 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.,
Patrice Dumas <=