texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Patrice Dumas
Date: Sun, 29 Sep 2024 09:50:05 -0400 (EDT)

branch: master
commit e50037f05d056599764a2b9ae887ea404e52514c
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Mon Jul 1 21:06:59 2024 +0200

    * tp/Texinfo/ParserNonXS.pm (_end_line),
    tp/Texinfo/XS/parsetexi/end_line.c (end_line): close a bogus brace
    @-command without argument followed by spaces only, and not by
    newlinewithout argument followed by spaces only, and not by newline.
    
    * tp/Makefile.tres, tp/t/03coverage_braces.t (seeentry_no_braces):
    test of @seeentry without braces at end of document, on an index entry
    command line.
    
    * tp/Makefile.tres, tp/t/08misc_commands.t
    (command_not_closed_on_center_line): add test.
---
 ChangeLog                                          |  28 +-
 tp/Makefile.tres                                   |   2 +
 tp/Texinfo/ParserNonXS.pm                          |  19 +-
 tp/Texinfo/XS/parsetexi/end_line.c                 |  14 +
 tp/t/03coverage_braces.t                           |  11 +
 tp/t/08misc_commands.t                             |   4 +
 tp/t/results/coverage_braces/seeentry_no_braces.pl | 435 +++++++++++++++++++++
 .../command_not_closed_on_center_line.pl           |  96 +++++
 8 files changed, 600 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e54585bc67..2a1aa7d199 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2024-07-01  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/ParserNonXS.pm (_end_line),
+       tp/Texinfo/XS/parsetexi/end_line.c (end_line): close a bogus brace
+       @-command without argument followed by spaces only, and not by
+       newlinewithout argument followed by spaces only, and not by newline.
+
+       * tp/Makefile.tres, tp/t/03coverage_braces.t (seeentry_no_braces):
+       test of @seeentry without braces at end of document, on an index entry
+       command line.
+
+       * tp/Makefile.tres, tp/t/08misc_commands.t
+       (command_not_closed_on_center_line): add test.
+
 2024-07-01  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/HTML.pm (_prepare_converted_output_info),
@@ -520,7 +534,7 @@
        * tp/Texinfo/XS/convert/convert_html.c,
        tp/Texinfo/XS/main/DocumentXS.xs,
        tp/Texinfo/XS/main/build_perl_info.c, tp/Texinfo/XS/main/document.c,
-       tp/Texinfo/XS/main/get_perl_info.c, tp/Texinfo/XS/main/translations.c, 
+       tp/Texinfo/XS/main/get_perl_info.c, tp/Texinfo/XS/main/translations.c,
        tp/Texinfo/XS/parsetexi/Parsetexi.xs, tp/Texinfo/XS/parsetexi/api.c,
        tp/Texinfo/XS/parsetexi/parser.c: use size_t more for document
        descriptors.
@@ -1228,7 +1242,7 @@
        tp/Texinfo/XS/parsetexi/close.c (close_command_cleanup): update code
        taking into account that
        i) there cannot be ignorable_spaces_after_command before before_item,
-       as it is added only after commands, and inside commands arguments.  
+       as it is added only after commands, and inside commands arguments.
        ii) there cannot be an @end in before_item, as soon as an @end is seen
        it is popped from the element it is in, before closing.
        iii) there can only be before_item or elements associated with @*item
@@ -1355,7 +1369,7 @@
 
 2024-06-12  Patrice Dumas  <pertusus@free.fr>
 
-       * tp/Texinfo/XS/convert/ConvertXS.xs (html_register_file_information): 
+       * tp/Texinfo/XS/convert/ConvertXS.xs (html_register_file_information):
        really use the string stored in small_strings.
 
 2024-06-12  Patrice Dumas  <pertusus@free.fr>
@@ -1386,7 +1400,7 @@
 
 2024-06-12  Patrice Dumas  <pertusus@free.fr>
 
-       * tp/Texinfo/XS/convert/ConvertXS.xs (html_register_file_information): 
+       * tp/Texinfo/XS/convert/ConvertXS.xs (html_register_file_information):
        make sure that the key is saved on the heap by adding to converter
        small_strings.
 
@@ -1458,7 +1472,7 @@
        (INDEX_ENTRY_LOCATION, KEY_PAIR, enum extra_type),
        tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry),
        tp/Texinfo/XS/structuring_transfo/transformations.c
-       (lookup_index_entry, relate_index_entries_to_table_items_in): add 
+       (lookup_index_entry, relate_index_entries_to_table_items_in): add
        extra_index_entry extra type that represents the location of an index
        entry, with index name and number in index.  Use it instead of
        misc_args for index entries.
@@ -1523,7 +1537,7 @@
        tp/Texinfo/XS/main/convert_to_text.c (convert_to_text_internal):
        do text element more separately from other elements.
 
-       * tp/Texinfo/XS/main/build_perl_info.c (element_to_perl_hash): 
+       * tp/Texinfo/XS/main/build_perl_info.c (element_to_perl_hash):
        use flag for condition that select types only if needed in Perl.
 
        * tp/Texinfo/XS/main/convert_to_text.c (convert_to_text_internal):
@@ -1701,7 +1715,7 @@
        * tp/Texinfo/Convert/DocBook.pm (%container_ignored_if_empty)
        (_convert), tp/Texinfo/Convert/LaTeX.pm (%container_ignored_if_empty)
        (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm
-       (%container_ignored_if_empty, _convert): ignore explicitely some 
+       (%container_ignored_if_empty, _convert): ignore explicitely some
        empty containers instead of relying on the tree to be without those
        empty containers.
 
diff --git a/tp/Makefile.tres b/tp/Makefile.tres
index e0373192c0..927a1f03bc 100644
--- a/tp/Makefile.tres
+++ b/tp/Makefile.tres
@@ -436,6 +436,7 @@ test_files_generated_list = 
$(test_tap_files_generated_list) \
   t/results/coverage_braces/recursive_acronym_definition.pl \
   t/results/coverage_braces/ref_empty_node.pl \
   t/results/coverage_braces/ref_in_style_command.pl \
+  t/results/coverage_braces/seeentry_no_braces.pl \
   t/results/coverage_braces/simple.pl \
   t/results/coverage_braces/space_command_in_image.pl \
   t/results/coverage_braces/space_in_anchor.pl \
@@ -1595,6 +1596,7 @@ test_files_generated_list = 
$(test_tap_files_generated_list) \
   t/results/misc_commands/command_in_heading_footing.pl \
   t/results/misc_commands/command_line_in_paragraph.pl \
   t/results/misc_commands/command_not_closed_in_documentencoding.pl \
+  t/results/misc_commands/command_not_closed_on_center_line.pl \
   t/results/misc_commands/comment_space_command_on_line.pl \
   t/results/misc_commands/comments_in_text.pl \
   t/results/misc_commands/contents.pl \
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index a6435dd75a..5ed1a995ab 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -4740,8 +4740,9 @@ sub _end_line($$$)
     _move_last_space_to_element($self, $current);
   }
 
-  # this happens if there is a nesting of line @-commands on a line.
-  # they are reprocessed here.
+  # this happens if there is a nesting of @-commands on a line, for
+  # instance line commands, but also bogus brace commands
+  # without args or not closed.   They are reprocessed here.
   my $top_context = $self->_top_context();
   if (($top_context eq 'ct_line'
        and defined($self->{'context_command_stack'}->[-1]))
@@ -4749,6 +4750,20 @@ sub _end_line($$$)
     print STDERR "Still opened line/block command $top_context: "
       .Texinfo::Common::debug_print_element($current, 1)."\n"
         if ($self->{'conf'}->{'DEBUG'});
+
+    # should correspond to a bogus brace @-commands without argument
+    # followed by spaces only, and not by newline, at the end of the document
+    # on a line/def command
+    if ($current->{'cmdname'}
+      and defined($self->{'brace_commands'}->{$current->{'cmdname'}})) {
+      $self->_line_error(sprintf(__("\@%s expected braces"),
+                         $current->{'cmdname'}), $source_info);
+      if ($current->{'contents'}) {
+        _gather_spaces_after_cmd_before_arg($self, $current);
+      }
+      $current = $current->{'parent'};
+    }
+
     if ($top_context eq 'ct_def') {
       while ($current->{'parent'}
             and !($current->{'parent'}->{'extra'}
diff --git a/tp/Texinfo/XS/parsetexi/end_line.c 
b/tp/Texinfo/XS/parsetexi/end_line.c
index a78737e976..03ee0084cf 100644
--- a/tp/Texinfo/XS/parsetexi/end_line.c
+++ b/tp/Texinfo/XS/parsetexi/end_line.c
@@ -1952,6 +1952,20 @@ end_line (ELEMENT *current)
       debug_nonl ("Still opened line/block command %s: ",
                   context_name (current_context ()));
       debug_parser_print_element (current, 1); debug ("");
+
+     /* should correspond to a bogus brace @-commands without argument
+       followed by spaces only, and not by newline, at the end of the document
+       on a line/def command
+     */
+      if (command_flags(current) & CF_brace)
+        {
+          line_error ("@%s expected braces",
+                      command_name(current->e.c->cmd));
+          if (current->e.c->contents.number > 0)
+            gather_spaces_after_cmd_before_arg (current);
+          current = current->parent;
+        }
+
       if (current_context () == ct_def)
         {
           while (current->parent
diff --git a/tp/t/03coverage_braces.t b/tp/t/03coverage_braces.t
index ee8545aeee..b64baa88a9 100644
--- a/tp/t/03coverage_braces.t
+++ b/tp/t/03coverage_braces.t
@@ -101,6 +101,17 @@ my @test_cases = (
 ['U_no_braces', '@U'],
 ['hyphenation_no_braces', '@hyphenation'],
 ['titlefont_no_braces', '@titlefont'],
+# tests a brace command without braces on a line command at the end of a
+# document
+['seeentry_no_braces', '@node Top
+@top top
+
+@node chap
+@chapter chap
+
+@printindex cp
+
+@cindex aa @seeentry'],
 ['verb_in_xref',
 '@anchor{point}
 
diff --git a/tp/t/08misc_commands.t b/tp/t/08misc_commands.t
index 541f5e485f..f4ea654d1e 100644
--- a/tp/t/08misc_commands.t
+++ b/tp/t/08misc_commands.t
@@ -193,6 +193,10 @@ documentlanguage @documentlanguage  en
 '],
 ['command_not_closed_in_documentencoding',
 '@documentencoding @strong{'],
+['command_not_closed_on_center_line',
+'@center c @strong{
+st}
+'],
 ['text_before_line_command',
 'before title @title the title
 
diff --git a/tp/t/results/coverage_braces/seeentry_no_braces.pl 
b/tp/t/results/coverage_braces/seeentry_no_braces.pl
new file mode 100644
index 0000000000..ea08027276
--- /dev/null
+++ b/tp/t/results/coverage_braces/seeentry_no_braces.pl
@@ -0,0 +1,435 @@
+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{'seeentry_no_braces'} = {
+  'contents' => [
+    {
+      'type' => 'before_node_section'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Top'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'Top'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 1
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'top'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'top',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {},
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 2
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'isindex' => 1,
+        'normalized' => 'chap'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 4
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'cp'
+                }
+              ],
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'printindex',
+          'extra' => {
+            'misc_args' => [
+              'cp'
+            ]
+          },
+          'info' => {
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 7
+          }
+        },
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'aa'
+                },
+                {
+                  'text' => ' ',
+                  'type' => 'spaces_at_end'
+                },
+                {
+                  'cmdname' => 'seeentry',
+                  'source_info' => {
+                    'line_nr' => 9
+                  }
+                }
+              ],
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'cindex',
+          'extra' => {
+            'element_node' => {},
+            'index_entry' => [
+              'cp',
+              1
+            ]
+          },
+          'info' => {
+            'command_name' => 'cindex',
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 9
+          },
+          'type' => 'index_entry_command'
+        }
+      ],
+      'extra' => {
+        'section_number' => '1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 5
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'seeentry_no_braces'}{'contents'}[4]{'contents'}[3]{'extra'}{'element_node'}
 = $result_trees{'seeentry_no_braces'}{'contents'}[3];
+
+$result_texis{'seeentry_no_braces'} = '@node Top
+@top top
+
+@node chap
+@chapter chap
+
+@printindex cp
+
+@cindex aa @seeentry';
+
+
+$result_texts{'seeentry_no_braces'} = 'top
+***
+
+1 chap
+******
+
+
+';
+
+$result_sectioning{'seeentry_no_braces'} = {
+  'extra' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            }
+          },
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'isindex' => 1,
+                    'normalized' => 'chap'
+                  }
+                },
+                'section_directions' => {
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '1',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            }
+          ],
+          'section_level' => 0,
+          'sectioning_root' => {},
+          'toplevel_directions' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'seeentry_no_braces'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = $result_sectioning{'seeentry_no_braces'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'seeentry_no_braces'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
 = $result_sectioning{'seeentry_no_braces'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'seeentry_no_braces'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
 = $result_sectioning{'seeentry_no_braces'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'seeentry_no_braces'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
 = $result_sectioning{'seeentry_no_braces'};
+
+$result_nodes{'seeentry_no_braces'} = [
+  {
+    'cmdname' => 'node',
+    'extra' => {
+      'associated_section' => {
+        'cmdname' => 'top',
+        'extra' => {}
+      },
+      'node_directions' => {
+        'next' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'associated_section' => {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'section_number' => '1'
+              }
+            },
+            'isindex' => 1,
+            'node_directions' => {
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'chap'
+          }
+        }
+      },
+      'normalized' => 'Top'
+    }
+  },
+  {}
+];
+$result_nodes{'seeentry_no_braces'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'seeentry_no_braces'}[0];
+$result_nodes{'seeentry_no_braces'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'seeentry_no_braces'}[0];
+$result_nodes{'seeentry_no_braces'}[1] = 
$result_nodes{'seeentry_no_braces'}[0]{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'seeentry_no_braces'} = [
+  {
+    'extra' => {
+      'normalized' => 'Top'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'chap'
+    }
+  }
+];
+
+$result_errors{'seeentry_no_braces'} = [
+  {
+    'error_line' => '@seeentry expected braces
+',
+    'line_nr' => 9,
+    'text' => '@seeentry expected braces',
+    'type' => 'error'
+  }
+];
+
+
+$result_floats{'seeentry_no_braces'} = {};
+
+
+$result_indices_sort_strings{'seeentry_no_braces'} = {
+  'cp' => [
+    'aa'
+  ]
+};
+
+
+
+$result_converted{'plaintext'}->{'seeentry_no_braces'} = 'top
+***
+
+1 chap
+******
+
+* Menu:
+
+* aa:                                    chap.                  (line 0)
+
+';
+
+
+$result_converted{'html_text'}->{'seeentry_no_braces'} = '<div 
class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+[<a href="#chap" title="Index" rel="index">Index</a>]</p>
+</div>
+<h1 class="top" id="top"><span>top<a class="copiable-link" href="#top"> 
&para;</a></span></h1>
+
+<ul class="mini-toc">
+<li><a href="#chap" accesskey="1">chap</a></li>
+</ul>
+<hr>
+<div class="chapter-level-extent" id="chap">
+<div class="nav-panel">
+<p>
+[<a href="#chap" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="chapter" id="chap-1"><span>1 chap<a class="copiable-link" 
href="#chap-1"> &para;</a></span></h2>
+
+<div class="printindex cp-printindex">
+<table class="cp-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><th 
class="sections-header-printindex">Section</th></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="chap_cp_letter-A">A</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a 
href="#index-aa">aa</a></td><td class="printindex-index-section"><a 
href="#chap">chap</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+</table>
+</div>
+
+<a class="index-entry-id" id="index-aa"></a>
+</div>
+</div>
+';
+
+
+$result_converted{'latex_text'}->{'seeentry_no_braces'} = '\\label{anchor:Top}%
+\\chapter{{chap}}
+\\label{anchor:chap}%
+
+\\printindex[cp]
+
+\\index[cp]{aa@aa}%
+';
+
+
+$result_converted{'docbook'}->{'seeentry_no_braces'} = '<chapter label="1" 
id="chap">
+<title>chap</title>
+
+<index role="cp"></index>
+
+<indexterm role="cp"><primary>aa</primary></indexterm></chapter>
+';
+
+1;
diff --git a/tp/t/results/misc_commands/command_not_closed_on_center_line.pl 
b/tp/t/results/misc_commands/command_not_closed_on_center_line.pl
new file mode 100644
index 0000000000..3cce29f178
--- /dev/null
+++ b/tp/t/results/misc_commands/command_not_closed_on_center_line.pl
@@ -0,0 +1,96 @@
+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{'command_not_closed_on_center_line'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'c '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => '
+'
+                        }
+                      ],
+                      'type' => 'brace_container'
+                    }
+                  ],
+                  'cmdname' => 'strong',
+                  'source_info' => {
+                    'line_nr' => 1
+                  }
+                }
+              ],
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'center',
+          'info' => {
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 1
+          }
+        },
+        {
+          'contents' => [
+            {
+              'text' => 'st
+'
+            }
+          ],
+          'type' => 'paragraph'
+        }
+      ],
+      'type' => 'before_node_section'
+    }
+  ],
+  'type' => 'document_root'
+};
+
+$result_texis{'command_not_closed_on_center_line'} = '@center c @strong{
+}st
+';
+
+
+$result_texts{'command_not_closed_on_center_line'} = 'c 
+st
+';
+
+$result_errors{'command_not_closed_on_center_line'} = [
+  {
+    'error_line' => '@strong missing closing brace
+',
+    'line_nr' => 1,
+    'text' => '@strong missing closing brace',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced }
+',
+    'line_nr' => 2,
+    'text' => 'misplaced }',
+    'type' => 'error'
+  }
+];
+
+
+$result_floats{'command_not_closed_on_center_line'} = {};
+
+
+1;



reply via email to

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