texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Patrice Dumas
Date: Sat, 1 Apr 2023 13:07:48 -0400 (EDT)

branch: master
commit f0fc5114cd8f965f55adab74f29a871c86c793aa
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Tue Mar 28 16:35:52 2023 +0200

    * tp/Texinfo/ParserNonXS.pm (_end_line),
    tp/Texinfo/XS/parsetexi/end_line.c (end_line): if a linemacro
    command call is nested on a line, return instead of closing
    the precedeing commands as they may use the expansion result.
    
    * tp/Texinfo/ParserNonXS.pm (_end_line): fix name of linemacro
    call type.
    
    * tp/Texinfo/ParserNonXS.pm (_handle_close_brace): avoid a potential
    undefinition message.
    
    * tp/t/65linemacro.t, tp/Makefile.tres: add
    simple_nested_linemacro_calls and nested_linemacro_calls tests.
    
    * tp/t/60macro.t: always call @phooindex in
    macro_alias_definfoenclose_defindex and not phoo.
---
 ChangeLog                                          |  19 +
 tp/Makefile.tres                                   |   2 +
 tp/Texinfo/ParserNonXS.pm                          |  45 +-
 tp/Texinfo/XS/parsetexi/end_line.c                 |  15 +
 tp/t/60macro.t                                     |   4 +-
 tp/t/65linemacro.t                                 |  41 +-
 tp/t/results/linemacro/nested_linemacro_calls.pl   | 761 ++++++++++++++++++++
 .../linemacro/simple_nested_linemacro_calls.pl     | 793 +++++++++++++++++++++
 .../macro/macro_alias_definfoenclose_defindex.pl   |   8 +-
 9 files changed, 1674 insertions(+), 14 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0acfe10ee3..bb50a63c70 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2023-03-28  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/ParserNonXS.pm (_end_line),
+       tp/Texinfo/XS/parsetexi/end_line.c (end_line): if a linemacro
+       command call is nested on a line, return instead of closing
+       the precedeing commands as they may use the expansion result.
+
+       * tp/Texinfo/ParserNonXS.pm (_end_line): fix name of linemacro
+       call type.
+
+       * tp/Texinfo/ParserNonXS.pm (_handle_close_brace): avoid a potential
+       undefinition message.
+
+       * tp/t/65linemacro.t, tp/Makefile.tres: add
+       simple_nested_linemacro_calls and nested_linemacro_calls tests.
+
+       * tp/t/60macro.t: always call @phooindex in
+       macro_alias_definfoenclose_defindex and not phoo.
+
 2023-03-28  Gavin Smith <gavinsmith0123@gmail.com>
 
        * doc/texinfo.texi (Line Macros): Write node documenting @linemacro.
diff --git a/tp/Makefile.tres b/tp/Makefile.tres
index ad5bb39cf4..ca3ebfd69d 100644
--- a/tp/Makefile.tres
+++ b/tp/Makefile.tres
@@ -1210,9 +1210,11 @@ test_files_generated_list = 
$(test_tap_files_generated_list) \
   t/results/linemacro/empty_last_argument.pl \
   t/results/linemacro/last_argument_with_braces.pl \
   t/results/linemacro/missing_formal_arg.pl \
+  t/results/linemacro/nested_linemacro_calls.pl \
   t/results/linemacro/newline_and_continuation_in_brace.pl \
   t/results/linemacro/no_arguments.pl \
   t/results/linemacro/protected_spaces_on_line.pl \
+  t/results/linemacro/simple_nested_linemacro_calls.pl \
   t/results/linemacro/spaces_after_command_in_call.pl \
   t/results/linemacro/spaces_in_args.pl \
   t/results/linemacro/spaces_in_call.pl \
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 8acc0d05d1..07a9e03fae 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -2072,9 +2072,14 @@ sub _close_current($$$;$$)
       #$current = _end_line_misc_line($self, $current, $source_info);
       # We ignore the current returned $current, to be sure that
       # we close the command too.
+      # TODO if returned $current is used, tests fails, should
+      # investigate why, maybe because it is redundant
+      # with _close_container below?
       _end_line_misc_line($self, $current, $source_info);
     } elsif ($current->{'type'} eq 'block_line_arg') {
       _end_line_starting_block($self, $current, $source_info);
+    } else {
+      print STDERR "No need of type closing function\n" if ($self->{'DEBUG'});
     }
     $current = _close_container($self, $current);
   } else { # Should never go here.
@@ -3299,7 +3304,8 @@ sub _end_line_misc_line($$$)
   # associated to CM_item_LINE
   $data_cmdname = 'item_LINE' if ($command eq 'item');
 
-  # FIXME add a condition to avoid linecommands?
+  # FIXME add a condition to avoid this check in linemacro defined
+  # commands calls?
   if ($self->{'basic_inline_commands'}
       and $self->{'basic_inline_commands'}->{$data_cmdname}) {
     pop @{$self->{'nesting_context'}->{'basic_inline_stack_on_line'}};
@@ -3674,8 +3680,8 @@ sub _end_line_def_line($$$)
     # $def_command = $current->{'parent'}->{'extra'}->{'name'};
   }
 
-  print STDERR "END DEF LINE $def_command; current: "
-    .Texinfo::Common::debug_print_element($current)."\n"
+  print STDERR "END DEF LINE $top_context $def_command; current: "
+    .Texinfo::Common::debug_print_element($current, 1)."\n"
       if ($self->{'DEBUG'});
 
   my $arguments = _parse_def($self, $def_command, $current, $source_info);
@@ -3734,6 +3740,15 @@ sub _end_line_def_line($$$)
     # remove linemacro call from the tree, it remains associated
     # to the source mark
     my $popped = _pop_element_from_contents($self, $current);
+    #if ($popped ne $macro_source_mark->{'element'}) {
+    #  $self->_bug_message("popped $popped ne $macro_source_mark->{'element'}"
+    #            ." in linemacro command call\n", $source_info, $current);
+    #}
+    #if (!$popped->{'type'} or $popped->{'type'} ne 'linemacro_call') {
+    #  $self->_bug_message("unexpected linemacro popped in parse_def "
+    #         .Texinfo::Common::debug_print_element($popped, 1),
+    #            $source_info, $current);
+    #}
     delete $popped->{'parent'};
     _register_source_mark($self, $current, $macro_source_mark);
     $self->{'input'}->[0]->{'input_source_mark'} = $macro_source_mark;
@@ -4273,6 +4288,8 @@ sub _end_line($$$)
 
   my $current_old = $current;
 
+  my $in_macro_expansion;
+
   # a line consisting only of spaces.
   if ($current->{'contents'} and @{$current->{'contents'}}
       and $current->{'contents'}->[-1]->{'type'}
@@ -4342,6 +4359,11 @@ sub _end_line($$$)
   # misc command line arguments
   # Never go here if lineraw/noarg/...
   } elsif ($current->{'type'} and $current->{'type'} eq 'line_arg') {
+    if ($current->{'parent'}->{'type'}
+        and $current->{'parent'}->{'type'} eq 'linemacro_call') {
+      # we could have checked the context too
+      $in_macro_expansion = $current->{'parent'}->{'extra'}->{'name'};
+    }
     $current = _end_line_misc_line($self, $current, $source_info);
   }
 
@@ -4350,8 +4372,17 @@ sub _end_line($$$)
   my $top_context = $self->_top_context();
   if ($top_context eq 'ct_line' or $top_context eq 'ct_def'
       or $top_context eq 'ct_linecommand') {
+    if (defined($in_macro_expansion)) {
+      # if in a linemacro command call nested on a line, we do not close
+      # the preceding commands yet, as they might use the expansion
+      print STDERR "Expanded \@$in_macro_expansion still line/block"
+       ." command $top_context:"
+       .Texinfo::Common::debug_print_element($current)."\n"
+        if ($self->{'DEBUG'});
+      return $current;
+    }
     print STDERR "Still opened line/block command $top_context:"
-      .Texinfo::Common::debug_print_element($current)
+      .Texinfo::Common::debug_print_element($current)."\n"
         if ($self->{'DEBUG'});
     if ($top_context eq 'ct_def') {
       while ($current->{'parent'} and !($current->{'parent'}->{'type'}
@@ -4360,7 +4391,7 @@ sub _end_line($$$)
       }
     } elsif ($top_context eq 'ct_linecommand') {
       while ($current->{'parent'} and !($current->{'parent'}->{'type'}
-             and $current->{'parent'}->{'type'} eq 'linecommand_call')) {
+              and $current->{'parent'}->{'type'} eq 'linemacro_call')) {
         $current = _close_current($self, $current, $source_info);
       }
     } else {
@@ -5378,6 +5409,8 @@ sub _handle_line_command($$$$$$)
         # Do not make the @subentry element a child of the index
         # command.  This means that spaces are preserved properly
         # when converting back to Texinfo.
+        # FIXME check that it is correct to end the line if in a
+        # linemacro command invokation
         $current = _end_line($self, $current, $source_info);
       } elsif ($sectioning_heading_commands{$data_cmdname}) {
         if ($self->{'sections_level'}) {
@@ -5858,7 +5891,7 @@ sub _handle_close_brace($$$)
   if ($current->{'type'} and $current->{'type'} eq 'balanced_braces') {
     $current = _merge_text($self, $current, '}');
     $current = $current->{'parent'};
-  } elsif ($current->{'type'} eq 'bracketed_arg') {
+  } elsif ($current->{'type'} and $current->{'type'} eq 'bracketed_arg') {
     _abort_empty_line($self, $current);
     $current = $current->{'parent'};
   } elsif ($current->{'parent'}
diff --git a/tp/Texinfo/XS/parsetexi/end_line.c 
b/tp/Texinfo/XS/parsetexi/end_line.c
index d43ef7a6c5..735e45b5fd 100644
--- a/tp/Texinfo/XS/parsetexi/end_line.c
+++ b/tp/Texinfo/XS/parsetexi/end_line.c
@@ -1896,6 +1896,7 @@ ELEMENT *
 end_line (ELEMENT *current)
 {
   ELEMENT *current_old = current; /* Used at very end of function */
+  char *in_macro_expansion = 0;
 
   /* If empty line, start a new paragraph. */
   if (last_contents_child (current)
@@ -1965,6 +1966,11 @@ end_line (ELEMENT *current)
 
   else if (current->type == ET_line_arg)
     {
+      if (current->parent->type == ET_linemacro_call)
+        {
+          KEY_PAIR *k = lookup_extra (current->parent, "name");
+          in_macro_expansion = (char *)k->value;
+        }
       current = end_line_misc_line (current);
     }
 
@@ -1973,6 +1979,15 @@ end_line (ELEMENT *current)
   if (current_context () == ct_line || current_context () == ct_def
        || current_context () == ct_linecommand)
     {
+      if (in_macro_expansion)
+        /* if in a linemacro command call nested on a line, we do not close
+           the preceding commands yet, as they might use the expansion */
+        {
+          debug ("Expanded @%s still line/block %d:", in_macro_expansion,
+                 current_context ());
+          debug_print_element (current, 1); debug("");
+          return current;
+        }
       debug_nonl ("Still opened line command %d:", current_context ());
       debug_print_element (current, 1); debug("");
       if (current_context () == ct_def)
diff --git a/tp/t/60macro.t b/tp/t/60macro.t
index 7419f06976..a119a3c664 100644
--- a/tp/t/60macro.t
+++ b/tp/t/60macro.t
@@ -1469,10 +1469,10 @@ X\arg\X
 @alias phooindex = strong
 @phooindex{all}
 
-@macro phoo {arg}
+@macro phooindex {arg}
 %%\arg\%%
 @end macro
-@phoo{mmm}
+@phooindex{mmm}
 
 @printindex phoo
 ', {'test_formats' => ['plaintext'],}],
diff --git a/tp/t/65linemacro.t b/tp/t/65linemacro.t
index a9655e4665..9566927cd2 100644
--- a/tp/t/65linemacro.t
+++ b/tp/t/65linemacro.t
@@ -170,10 +170,47 @@ If @var{axis} is not a valid axis of @var{a}.
 @end defblock
 
 @end defblock
-']
-# TODO add linemacro call in linemacro
+'],
+['simple_nested_linemacro_calls',
+'@node Top
+
+@linemacro inside {a, b, rest}
+inside {\a\ operator \b\} \rest\
+@end linemacro
+
+@linemacro outside {one, two, three}
+@defline \one\ {\two\} \three\
+@cindex \two\
+@end linemacro
+
+@defblock
+@outside {type} {a function} @inside {X} {Y} ( remaining, type typed )
+@end defblock
+'],
+# following example has incorrect braces in many places and
+# in particular the bracketed opened with @inside in it is
+# not closed, this makes it an interesting case.
+['nested_linemacro_calls',
+'@linemacro inside {a, b}
+inside {\a\ operator \b\}
+@end linemacro
+
+@linemacro outside {one, two, three}
+@defline \one\ {\two\} \three\
+@cindex \two\
+@end linemacro
+
+@defblock
+@outside {type} {@inside {X} {Y}} ( remaining, type typed )
+@end defblock
+'],
+# TODO
 # add recursive linemacro call
 # add macro call in linemacro
+# test cases of line commands, including linemacros on the same
+# line to check commands closing in that context.
+# test @c in line macro command invokation, including in
+# braces
 );
 
 
diff --git a/tp/t/results/linemacro/nested_linemacro_calls.pl 
b/tp/t/results/linemacro/nested_linemacro_calls.pl
new file mode 100644
index 0000000000..1ccd88ab8e
--- /dev/null
+++ b/tp/t/results/linemacro/nested_linemacro_calls.pl
@@ -0,0 +1,761 @@
+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{'nested_linemacro_calls'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'text' => 'inside',
+              'type' => 'macro_name'
+            },
+            {
+              'text' => 'a',
+              'type' => 'macro_arg'
+            },
+            {
+              'text' => 'b',
+              'type' => 'macro_arg'
+            }
+          ],
+          'cmdname' => 'linemacro',
+          'contents' => [
+            {
+              'text' => 'inside {\\a\\ operator \\b\\}
+',
+              'type' => 'raw'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'linemacro'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'linemacro'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 3,
+                'macro' => ''
+              }
+            }
+          ],
+          'info' => {
+            'arg_line' => ' inside {a, b}
+'
+          },
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 1,
+            'macro' => ''
+          }
+        },
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'text' => 'outside',
+              'type' => 'macro_name'
+            },
+            {
+              'text' => 'one',
+              'type' => 'macro_arg'
+            },
+            {
+              'text' => 'two',
+              'type' => 'macro_arg'
+            },
+            {
+              'text' => 'three',
+              'type' => 'macro_arg'
+            }
+          ],
+          'cmdname' => 'linemacro',
+          'contents' => [
+            {
+              'text' => '@defline \\one\\ {\\two\\} \\three\\
+',
+              'type' => 'raw'
+            },
+            {
+              'text' => '@cindex \\two\\
+',
+              'type' => 'raw'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'linemacro'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'linemacro'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 8,
+                'macro' => ''
+              }
+            }
+          ],
+          'info' => {
+            'arg_line' => ' outside {one, two, three}
+'
+          },
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 5,
+            'macro' => ''
+          }
+        },
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'block_line_arg'
+            }
+          ],
+          'cmdname' => 'defblock',
+          'contents' => [
+            {
+              'contents' => [
+                {
+                  'source_marks' => [
+                    {
+                      'counter' => 2,
+                      'element' => {
+                        'args' => [
+                          {
+                            'contents' => [
+                              {
+                                'contents' => [
+                                  {
+                                    'text' => 'type'
+                                  }
+                                ],
+                                'type' => 'bracketed_arg'
+                              },
+                              {
+                                'extra' => {
+                                  'def_role' => 'spaces'
+                                },
+                                'text' => ' ',
+                                'type' => 'spaces'
+                              },
+                              {
+                                'contents' => [
+                                  {
+                                    'source_marks' => [
+                                      {
+                                        'counter' => 1,
+                                        'element' => {
+                                          'args' => [
+                                            {
+                                              'contents' => [
+                                                {
+                                                  'contents' => [
+                                                    {
+                                                      'text' => 'X'
+                                                    }
+                                                  ],
+                                                  'type' => 'bracketed_arg'
+                                                },
+                                                {
+                                                  'extra' => {
+                                                    'def_role' => 'spaces'
+                                                  },
+                                                  'text' => ' ',
+                                                  'type' => 'spaces'
+                                                },
+                                                {
+                                                  'contents' => [
+                                                    {
+                                                      'contents' => [
+                                                        {
+                                                          'text' => 'Y'
+                                                        }
+                                                      ],
+                                                      'type' => 'bracketed_arg'
+                                                    },
+                                                    {
+                                                      'extra' => {
+                                                        'def_role' => 'spaces'
+                                                      },
+                                                      'text' => ' ',
+                                                      'type' => 'spaces'
+                                                    },
+                                                    {
+                                                      'text' => '('
+                                                    },
+                                                    {
+                                                      'extra' => {
+                                                        'def_role' => 'spaces'
+                                                      },
+                                                      'text' => ' ',
+                                                      'type' => 'spaces'
+                                                    },
+                                                    {
+                                                      'text' => 'remaining,'
+                                                    },
+                                                    {
+                                                      'extra' => {
+                                                        'def_role' => 'spaces'
+                                                      },
+                                                      'text' => ' ',
+                                                      'type' => 'spaces'
+                                                    },
+                                                    {
+                                                      'text' => 'type'
+                                                    },
+                                                    {
+                                                      'extra' => {
+                                                        'def_role' => 'spaces'
+                                                      },
+                                                      'text' => ' ',
+                                                      'type' => 'spaces'
+                                                    },
+                                                    {
+                                                      'text' => 'typed'
+                                                    },
+                                                    {
+                                                      'extra' => {
+                                                        'def_role' => 'spaces'
+                                                      },
+                                                      'text' => ' ',
+                                                      'type' => 'spaces'
+                                                    },
+                                                    {
+                                                      'text' => ')'
+                                                    }
+                                                  ],
+                                                  'type' => 'def_aggregate'
+                                                }
+                                              ],
+                                              'info' => {
+                                                'spaces_after_argument' => {
+                                                  'text' => '
+'
+                                                }
+                                              },
+                                              'type' => 'line_arg'
+                                            }
+                                          ],
+                                          'extra' => {
+                                            'name' => 'inside'
+                                          },
+                                          'info' => {
+                                            'spaces_before_argument' => {
+                                              'text' => ' '
+                                            }
+                                          },
+                                          'type' => 'linemacro_call'
+                                        },
+                                        'sourcemark_type' => 
'linemacro_expansion',
+                                        'status' => 'start'
+                                      }
+                                    ],
+                                    'text' => ''
+                                  },
+                                  {
+                                    'text' => 'inside '
+                                  },
+                                  {
+                                    'contents' => [
+                                      {
+                                        'text' => '{X operator '
+                                      },
+                                      {
+                                        'contents' => [
+                                          {
+                                            'text' => '{Y}'
+                                          }
+                                        ],
+                                        'source_info' => {
+                                          'file_name' => '',
+                                          'line_nr' => 11,
+                                          'macro' => 'inside'
+                                        },
+                                        'type' => 'balanced_braces'
+                                      },
+                                      {
+                                        'text' => ' ( remaining, type typed )}'
+                                      }
+                                    ],
+                                    'source_info' => {},
+                                    'type' => 'balanced_braces'
+                                  }
+                                ],
+                                'info' => {
+                                  'spaces_after_argument' => {
+                                    'text' => '
+'
+                                  }
+                                },
+                                'type' => 'bracketed_arg'
+                              }
+                            ],
+                            'type' => 'line_arg'
+                          }
+                        ],
+                        'extra' => {
+                          'name' => 'outside'
+                        },
+                        'info' => {
+                          'spaces_before_argument' => {
+                            'text' => ' '
+                          }
+                        },
+                        'type' => 'linemacro_call'
+                      },
+                      'sourcemark_type' => 'linemacro_expansion',
+                      'status' => 'start'
+                    }
+                  ],
+                  'text' => '',
+                  'type' => 'empty_line'
+                }
+              ],
+              'type' => 'def_item'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'extra' => {
+                        'def_role' => 'category'
+                      },
+                      'text' => 'type'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'inside X operator Y'
+                        }
+                      ],
+                      'extra' => {
+                        'def_role' => 'name'
+                      },
+                      'source_info' => {
+                        'file_name' => '',
+                        'line_nr' => 11,
+                        'macro' => 'outside'
+                      },
+                      'type' => 'bracketed_arg'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'delimiter'
+                      },
+                      'text' => '(',
+                      'type' => 'delimiter'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'text' => 'remaining'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'delimiter'
+                      },
+                      'text' => ',',
+                      'type' => 'delimiter'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'text' => 'type'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'text' => 'typed'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'delimiter'
+                      },
+                      'text' => ')',
+                      'type' => 'delimiter'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'defline',
+              'extra' => {
+                'def_command' => 'defline',
+                'def_index_element' => {},
+                'original_def_cmdname' => 'defline'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 11,
+                'macro' => 'outside'
+              },
+              'type' => 'def_line'
+            },
+            {
+              'contents' => [
+                {
+                  'text' => ' 
+',
+                  'type' => 'empty_line'
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'inside X operator Y ( remaining, type 
typed )'
+                        }
+                      ],
+                      'info' => {
+                        'spaces_after_argument' => {
+                          'text' => '
+'
+                        }
+                      },
+                      'type' => 'line_arg'
+                    }
+                  ],
+                  'cmdname' => 'cindex',
+                  'extra' => {
+                    'index_entry' => [
+                      'cp',
+                      1
+                    ]
+                  },
+                  'info' => {
+                    'spaces_before_argument' => {
+                      'text' => ' '
+                    }
+                  },
+                  'source_info' => {
+                    'file_name' => '',
+                    'line_nr' => 11,
+                    'macro' => 'outside'
+                  },
+                  'type' => 'index_entry_command'
+                },
+                {
+                  'source_marks' => [
+                    {
+                      'counter' => 2,
+                      'position' => 1,
+                      'sourcemark_type' => 'linemacro_expansion',
+                      'status' => 'end'
+                    },
+                    {
+                      'counter' => 1,
+                      'position' => 1,
+                      'sourcemark_type' => 'linemacro_expansion',
+                      'status' => 'end'
+                    }
+                  ],
+                  'text' => '
+',
+                  'type' => 'empty_line'
+                }
+              ],
+              'type' => 'def_item'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'defblock'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'defblock'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 12,
+                'macro' => ''
+              }
+            }
+          ],
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 10,
+            'macro' => ''
+          }
+        }
+      ],
+      'type' => 'before_node_section'
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'nested_linemacro_calls'}{'contents'}[0]{'contents'}[4]{'contents'}[0]{'contents'}[0]{'source_marks'}[0]{'element'}{'args'}[0]{'contents'}[2]{'contents'}[2]{'source_info'}
 = 
$result_trees{'nested_linemacro_calls'}{'contents'}[0]{'contents'}[4]{'contents'}[0]{'contents'}[0]{'source_marks'}[0]{'element'}{'args'}[0]{'contents'}[2]{'contents'}[2]{'contents'}[1]{'source_info'};
+$result_trees{'nested_linemacro_calls'}{'contents'}[0]{'contents'}[4]{'contents'}[1]{'extra'}{'def_index_element'}
 = 
$result_trees{'nested_linemacro_calls'}{'contents'}[0]{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[2];
+
+$result_texis{'nested_linemacro_calls'} = '@linemacro inside {a, b}
+inside {\\a\\ operator \\b\\}
+@end linemacro
+
+@linemacro outside {one, two, three}
+@defline \\one\\ {\\two\\} \\three\\
+@cindex \\two\\
+@end linemacro
+
+@defblock
+@defline type {inside X operator Y} ( remaining, type typed )
+ 
+@cindex inside X operator Y ( remaining, type typed )
+
+@end defblock
+';
+
+
+$result_texts{'nested_linemacro_calls'} = '
+
+type: inside X operator Y ( remaining, type typed )
+ 
+
+';
+
+$result_errors{'nested_linemacro_calls'} = [
+  {
+    'error_line' => 'misplaced }
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => '',
+    'text' => 'misplaced }',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced { (possibly involving @inside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'inside',
+    'text' => 'misplaced {',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced { (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced {',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced { (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced {',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced } (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced }',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced } (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced }',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced { (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced {',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced { (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced {',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced } (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced }',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'misplaced } (possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'misplaced }',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'warning: entry for index `cp\' outside of any node 
(possibly involving @outside)
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => 'outside',
+    'text' => 'entry for index `cp\' outside of any node',
+    'type' => 'warning'
+  }
+];
+
+
+$result_floats{'nested_linemacro_calls'} = {};
+
+
+$result_indices_sort_strings{'nested_linemacro_calls'} = {
+  'cp' => [
+    'inside X operator Y ( remaining, type typed )'
+  ]
+};
+
+
+1;
diff --git a/tp/t/results/linemacro/simple_nested_linemacro_calls.pl 
b/tp/t/results/linemacro/simple_nested_linemacro_calls.pl
new file mode 100644
index 0000000000..a3179043a2
--- /dev/null
+++ b/tp/t/results/linemacro/simple_nested_linemacro_calls.pl
@@ -0,0 +1,793 @@
+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{'simple_nested_linemacro_calls'} = {
+  'contents' => [
+    {
+      'type' => 'before_node_section'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Top'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'text' => 'inside',
+              'type' => 'macro_name'
+            },
+            {
+              'text' => 'a',
+              'type' => 'macro_arg'
+            },
+            {
+              'text' => 'b',
+              'type' => 'macro_arg'
+            },
+            {
+              'text' => 'rest',
+              'type' => 'macro_arg'
+            }
+          ],
+          'cmdname' => 'linemacro',
+          'contents' => [
+            {
+              'text' => 'inside {\\a\\ operator \\b\\} \\rest\\
+',
+              'type' => 'raw'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'linemacro'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'linemacro'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 5,
+                'macro' => ''
+              }
+            }
+          ],
+          'info' => {
+            'arg_line' => ' inside {a, b, rest}
+'
+          },
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 3,
+            'macro' => ''
+          }
+        },
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'text' => 'outside',
+              'type' => 'macro_name'
+            },
+            {
+              'text' => 'one',
+              'type' => 'macro_arg'
+            },
+            {
+              'text' => 'two',
+              'type' => 'macro_arg'
+            },
+            {
+              'text' => 'three',
+              'type' => 'macro_arg'
+            }
+          ],
+          'cmdname' => 'linemacro',
+          'contents' => [
+            {
+              'text' => '@defline \\one\\ {\\two\\} \\three\\
+',
+              'type' => 'raw'
+            },
+            {
+              'text' => '@cindex \\two\\
+',
+              'type' => 'raw'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'linemacro'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'linemacro'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 10,
+                'macro' => ''
+              }
+            }
+          ],
+          'info' => {
+            'arg_line' => ' outside {one, two, three}
+'
+          },
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 7,
+            'macro' => ''
+          }
+        },
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'block_line_arg'
+            }
+          ],
+          'cmdname' => 'defblock',
+          'contents' => [
+            {
+              'contents' => [
+                {
+                  'source_marks' => [
+                    {
+                      'counter' => 2,
+                      'element' => {
+                        'args' => [
+                          {
+                            'contents' => [
+                              {
+                                'contents' => [
+                                  {
+                                    'text' => 'type'
+                                  }
+                                ],
+                                'type' => 'bracketed_arg'
+                              },
+                              {
+                                'extra' => {
+                                  'def_role' => 'spaces'
+                                },
+                                'text' => ' ',
+                                'type' => 'spaces'
+                              },
+                              {
+                                'contents' => [
+                                  {
+                                    'text' => 'a function'
+                                  }
+                                ],
+                                'type' => 'bracketed_arg'
+                              },
+                              {
+                                'extra' => {
+                                  'def_role' => 'spaces'
+                                },
+                                'source_marks' => [
+                                  {
+                                    'counter' => 1,
+                                    'element' => {
+                                      'args' => [
+                                        {
+                                          'contents' => [
+                                            {
+                                              'contents' => [
+                                                {
+                                                  'text' => 'X'
+                                                }
+                                              ],
+                                              'type' => 'bracketed_arg'
+                                            },
+                                            {
+                                              'extra' => {
+                                                'def_role' => 'spaces'
+                                              },
+                                              'text' => ' ',
+                                              'type' => 'spaces'
+                                            },
+                                            {
+                                              'contents' => [
+                                                {
+                                                  'text' => 'Y'
+                                                }
+                                              ],
+                                              'type' => 'bracketed_arg'
+                                            },
+                                            {
+                                              'extra' => {
+                                                'def_role' => 'spaces'
+                                              },
+                                              'text' => ' ',
+                                              'type' => 'spaces'
+                                            },
+                                            {
+                                              'contents' => [
+                                                {
+                                                  'text' => '('
+                                                },
+                                                {
+                                                  'extra' => {
+                                                    'def_role' => 'spaces'
+                                                  },
+                                                  'text' => ' ',
+                                                  'type' => 'spaces'
+                                                },
+                                                {
+                                                  'text' => 'remaining,'
+                                                },
+                                                {
+                                                  'extra' => {
+                                                    'def_role' => 'spaces'
+                                                  },
+                                                  'text' => ' ',
+                                                  'type' => 'spaces'
+                                                },
+                                                {
+                                                  'text' => 'type'
+                                                },
+                                                {
+                                                  'extra' => {
+                                                    'def_role' => 'spaces'
+                                                  },
+                                                  'text' => ' ',
+                                                  'type' => 'spaces'
+                                                },
+                                                {
+                                                  'text' => 'typed'
+                                                },
+                                                {
+                                                  'extra' => {
+                                                    'def_role' => 'spaces'
+                                                  },
+                                                  'text' => ' ',
+                                                  'type' => 'spaces'
+                                                },
+                                                {
+                                                  'text' => ')'
+                                                }
+                                              ],
+                                              'type' => 'def_aggregate'
+                                            }
+                                          ],
+                                          'info' => {
+                                            'spaces_after_argument' => {
+                                              'text' => '
+'
+                                            }
+                                          },
+                                          'type' => 'line_arg'
+                                        }
+                                      ],
+                                      'extra' => {
+                                        'name' => 'inside'
+                                      },
+                                      'info' => {
+                                        'spaces_before_argument' => {
+                                          'text' => ' '
+                                        }
+                                      },
+                                      'type' => 'linemacro_call'
+                                    },
+                                    'position' => 1,
+                                    'sourcemark_type' => 'linemacro_expansion',
+                                    'status' => 'start'
+                                  }
+                                ],
+                                'text' => ' ',
+                                'type' => 'spaces'
+                              },
+                              {
+                                'contents' => [
+                                  {
+                                    'text' => 'inside'
+                                  },
+                                  {
+                                    'extra' => {
+                                      'def_role' => 'spaces'
+                                    },
+                                    'text' => ' ',
+                                    'type' => 'spaces'
+                                  },
+                                  {
+                                    'contents' => [
+                                      {
+                                        'text' => 'X operator Y'
+                                      }
+                                    ],
+                                    'type' => 'bracketed_arg'
+                                  },
+                                  {
+                                    'extra' => {
+                                      'def_role' => 'spaces'
+                                    },
+                                    'text' => ' ',
+                                    'type' => 'spaces'
+                                  },
+                                  {
+                                    'text' => '('
+                                  },
+                                  {
+                                    'extra' => {
+                                      'def_role' => 'spaces'
+                                    },
+                                    'text' => ' ',
+                                    'type' => 'spaces'
+                                  },
+                                  {
+                                    'text' => 'remaining,'
+                                  },
+                                  {
+                                    'extra' => {
+                                      'def_role' => 'spaces'
+                                    },
+                                    'text' => ' ',
+                                    'type' => 'spaces'
+                                  },
+                                  {
+                                    'text' => 'type'
+                                  },
+                                  {
+                                    'extra' => {
+                                      'def_role' => 'spaces'
+                                    },
+                                    'text' => ' ',
+                                    'type' => 'spaces'
+                                  },
+                                  {
+                                    'text' => 'typed'
+                                  },
+                                  {
+                                    'extra' => {
+                                      'def_role' => 'spaces'
+                                    },
+                                    'text' => ' ',
+                                    'type' => 'spaces'
+                                  },
+                                  {
+                                    'text' => ')'
+                                  }
+                                ],
+                                'type' => 'def_aggregate'
+                              }
+                            ],
+                            'info' => {
+                              'spaces_after_argument' => {
+                                'text' => '
+'
+                              }
+                            },
+                            'type' => 'line_arg'
+                          }
+                        ],
+                        'extra' => {
+                          'name' => 'outside'
+                        },
+                        'info' => {
+                          'spaces_before_argument' => {
+                            'text' => ' '
+                          }
+                        },
+                        'type' => 'linemacro_call'
+                      },
+                      'sourcemark_type' => 'linemacro_expansion',
+                      'status' => 'start'
+                    }
+                  ],
+                  'text' => '',
+                  'type' => 'empty_line'
+                }
+              ],
+              'type' => 'def_item'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'extra' => {
+                        'def_role' => 'category'
+                      },
+                      'text' => 'type'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'a function'
+                        }
+                      ],
+                      'extra' => {
+                        'def_role' => 'name'
+                      },
+                      'source_info' => {
+                        'file_name' => '',
+                        'line_nr' => 13,
+                        'macro' => 'outside'
+                      },
+                      'type' => 'bracketed_arg'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'text' => 'inside'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'X operator Y'
+                        }
+                      ],
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'source_info' => {
+                        'file_name' => '',
+                        'line_nr' => 13,
+                        'macro' => 'outside'
+                      },
+                      'type' => 'bracketed_arg'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'delimiter'
+                      },
+                      'text' => '(',
+                      'type' => 'delimiter'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'text' => 'remaining'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'delimiter'
+                      },
+                      'text' => ',',
+                      'type' => 'delimiter'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'text' => 'type'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'arg'
+                      },
+                      'text' => 'typed'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'spaces'
+                      },
+                      'text' => ' ',
+                      'type' => 'spaces'
+                    },
+                    {
+                      'extra' => {
+                        'def_role' => 'delimiter'
+                      },
+                      'text' => ')',
+                      'type' => 'delimiter'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'defline',
+              'extra' => {
+                'def_command' => 'defline',
+                'def_index_element' => {},
+                'original_def_cmdname' => 'defline'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 13,
+                'macro' => 'outside'
+              },
+              'type' => 'def_line'
+            },
+            {
+              'contents' => [
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'a function'
+                        }
+                      ],
+                      'info' => {
+                        'spaces_after_argument' => {
+                          'text' => '
+'
+                        }
+                      },
+                      'type' => 'line_arg'
+                    }
+                  ],
+                  'cmdname' => 'cindex',
+                  'extra' => {
+                    'element_node' => {},
+                    'index_entry' => [
+                      'cp',
+                      1
+                    ]
+                  },
+                  'info' => {
+                    'spaces_before_argument' => {
+                      'text' => ' '
+                    }
+                  },
+                  'source_info' => {
+                    'file_name' => '',
+                    'line_nr' => 13,
+                    'macro' => 'outside'
+                  },
+                  'source_marks' => [
+                    {
+                      'counter' => 2,
+                      'sourcemark_type' => 'linemacro_expansion',
+                      'status' => 'end'
+                    },
+                    {
+                      'counter' => 1,
+                      'sourcemark_type' => 'linemacro_expansion',
+                      'status' => 'end'
+                    }
+                  ],
+                  'type' => 'index_entry_command'
+                }
+              ],
+              'type' => 'def_item'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'defblock'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'defblock'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 14,
+                'macro' => ''
+              }
+            }
+          ],
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 12,
+            'macro' => ''
+          }
+        }
+      ],
+      'extra' => {
+        'normalized' => 'Top'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 1,
+        'macro' => ''
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'simple_nested_linemacro_calls'}{'contents'}[1]{'contents'}[5]{'contents'}[1]{'extra'}{'def_index_element'}
 = 
$result_trees{'simple_nested_linemacro_calls'}{'contents'}[1]{'contents'}[5]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'simple_nested_linemacro_calls'}{'contents'}[1]{'contents'}[5]{'contents'}[2]{'contents'}[0]{'extra'}{'element_node'}
 = $result_trees{'simple_nested_linemacro_calls'}{'contents'}[1];
+
+$result_texis{'simple_nested_linemacro_calls'} = '@node Top
+
+@linemacro inside {a, b, rest}
+inside {\\a\\ operator \\b\\} \\rest\\
+@end linemacro
+
+@linemacro outside {one, two, three}
+@defline \\one\\ {\\two\\} \\three\\
+@cindex \\two\\
+@end linemacro
+
+@defblock
+@defline type {a function} inside {X operator Y} ( remaining, type typed )
+@cindex a function
+@end defblock
+';
+
+
+$result_texts{'simple_nested_linemacro_calls'} = '
+
+
+type: a function inside X operator Y ( remaining, type typed )
+';
+
+$result_nodes{'simple_nested_linemacro_calls'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'normalized' => 'Top'
+  }
+};
+
+$result_menus{'simple_nested_linemacro_calls'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'normalized' => 'Top'
+  }
+};
+
+$result_errors{'simple_nested_linemacro_calls'} = [];
+
+
+$result_floats{'simple_nested_linemacro_calls'} = {};
+
+
+$result_indices_sort_strings{'simple_nested_linemacro_calls'} = {
+  'cp' => [
+    'a function'
+  ]
+};
+
+
+1;
diff --git a/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl 
b/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
index 7aeb8648a4..5caf3ad99e 100644
--- a/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
+++ b/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
@@ -1124,7 +1124,7 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
         {
           'args' => [
             {
-              'text' => 'phoo',
+              'text' => 'phooindex',
               'type' => 'macro_name'
             },
             {
@@ -1173,7 +1173,7 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
             }
           ],
           'info' => {
-            'arg_line' => ' phoo {arg}
+            'arg_line' => ' phooindex {arg}
 '
           },
           'source_info' => {
@@ -1196,7 +1196,7 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
                   }
                 ],
                 'extra' => {
-                  'name' => 'phoo'
+                  'name' => 'phooindex'
                 },
                 'type' => 'macro_call'
               },
@@ -1329,7 +1329,7 @@ $result_texis{'macro_alias_definfoenclose_defindex'} = 
'@node Top
 @alias phooindex = strong
 @strong{all}
 
-@macro phoo {arg}
+@macro phooindex {arg}
 %%\\arg\\%%
 @end macro
 %%mmm%%



reply via email to

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