[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Patrice Dumas |
Date: |
Sun, 29 Sep 2024 03:09:52 -0400 (EDT) |
branch: master
commit 26c35234ddadc41bb70a4ff0cb861d0f547158c6
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Jun 8 00:00:39 2024 +0200
* tp/Texinfo/ParserNonXS.pm (_handle_macro),
tp/Texinfo/XS/main/element_types.txt, tp/Texinfo/XS/parsetexi/macro.c
(handle_macro): set macro_call_line or rmacro_call_line as type for
macro call argument when there are no braces and the whole line is the
argument.
* tp/Texinfo/XS/main/build_perl_info.c (element_to_perl_hash),
tp/Texinfo/XS/main/convert_to_texinfo.c (expand_cmd_args_to_texi)
(convert_to_texinfo_internal),
tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command),
tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments)
(expand_linemacro_arguments), tp/Texinfo/XS/parsetexi/parser.c
(abort_empty_line), tp/Texinfo/XS/structuring_transfo/structuring.c
(new_block_command),
tp/Texinfo/XS/structuring_transfo/transformations.c
(fill_gaps_in_sectioning, new_node): put spaces_before_argument in
elt_info.
---
ChangeLog | 20 +++++++++++++++
tp/Texinfo/ParserNonXS.pm | 19 +++++++++-----
tp/Texinfo/XS/main/build_perl_info.c | 13 ++++++++++
tp/Texinfo/XS/main/convert_to_texinfo.c | 9 +++++--
tp/Texinfo/XS/main/element_types.c | 2 ++
tp/Texinfo/XS/main/element_types.h | 2 ++
tp/Texinfo/XS/main/element_types.txt | 2 ++
tp/Texinfo/XS/parsetexi/handle_commands.c | 2 +-
tp/Texinfo/XS/parsetexi/macro.c | 30 +++++++++++++---------
tp/Texinfo/XS/parsetexi/parser.c | 6 ++++-
tp/Texinfo/XS/structuring_transfo/structuring.c | 2 +-
.../XS/structuring_transfo/transformations.c | 6 ++---
...paces_after_macro_linemacro_commands_in_call.pl | 2 +-
tp/t/results/macro/backslash_in_arg.pl | 4 +--
tp/t/results/macro/form_feeds.pl | 2 +-
tp/t/results/macro/include_after_empty_line_arg.pl | 2 +-
.../macro/macro_alias_definfoenclose_defindex.pl | 4 +--
tp/t/results/macro/macro_in_macro_arg.pl | 2 +-
tp/t/results/macro/macro_name_with_digit.pl | 2 +-
tp/t/results/macro/macro_one_arg_end_of_file.pl | 2 +-
tp/t/results/macro/no_macrobody.pl | 2 +-
tp/t/results/macro/protect_comma_macro_line.pl | 2 +-
22 files changed, 99 insertions(+), 38 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 772ed0b865..1beee97745 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2024-06-07 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/ParserNonXS.pm (_handle_macro),
+ tp/Texinfo/XS/main/element_types.txt, tp/Texinfo/XS/parsetexi/macro.c
+ (handle_macro): set macro_call_line or rmacro_call_line as type for
+ macro call argument when there are no braces and the whole line is the
+ argument.
+
+ * tp/Texinfo/XS/main/build_perl_info.c (element_to_perl_hash),
+ tp/Texinfo/XS/main/convert_to_texinfo.c (expand_cmd_args_to_texi)
+ (convert_to_texinfo_internal),
+ tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command),
+ tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments)
+ (expand_linemacro_arguments), tp/Texinfo/XS/parsetexi/parser.c
+ (abort_empty_line), tp/Texinfo/XS/structuring_transfo/structuring.c
+ (new_block_command),
+ tp/Texinfo/XS/structuring_transfo/transformations.c
+ (fill_gaps_in_sectioning, new_node): put spaces_before_argument in
+ elt_info.
+
2024-06-07 Patrice Dumas <pertusus@free.fr>
* tp/Texinfo/XS/main/element_types.awk,
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 0135933a5c..c33af92725 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -5091,10 +5091,6 @@ sub _handle_macro($$$$$)
my $expanded_macro = $self->{'macros'}->{$command}->{'element'};
- my $macro_call_element = {'type' => $expanded_macro->{'cmdname'}.'_call',
- 'info' => {'command_name' => $command},
- 'args' => []};
-
# It is important to check for expansion before the expansion and
# not after, as during the expansion, the text may go past the
# call. In particular for user defined linemacro which generally
@@ -5128,6 +5124,11 @@ sub _handle_macro($$$$$)
}
}
+ my $macro_call_element = {'type' => $expanded_macro->{'cmdname'}.'_call',
+ 'info' => {'command_name' => $command},
+ 'args' => []};
+
+
if ($expanded_macro->{'cmdname'} eq 'linemacro') {
($line, $source_info)
= _expand_linemacro_arguments($self, $expanded_macro, $line, $source_info,
@@ -5152,6 +5153,7 @@ sub _handle_macro($$$$$)
$command), $source_info)
if ($args_number >= 2);
} else {
+ $macro_call_element->{'type'} =
$expanded_macro->{'cmdname'}.'_call_line';
my $arg_elt = {'type' => 'line_arg',
'parent' => $macro_call_element};
push @{$macro_call_element->{'args'}}, $arg_elt;
@@ -8733,14 +8735,19 @@ container.
=item macro_call
+=item macro_call_line
+
=item rmacro_call
+=item rmacro_call_line
+
=item linemacro_call
Container holding the arguments of a user defined macro, linemacro
or rmacro. It should not appear directly in the tree as the user defined
-call is expanded. The name of the macro, rmacro or linemacro is the
-the info I<command_name> value.
+call is expanded. The name of the macro, rmacro or linemacro is the the info
+I<command_name> value. The I<macro_call_line> or I<rmacro_call_line> elements
+are used when there are no braces and the whole line is the argument.
=item macro_name
diff --git a/tp/Texinfo/XS/main/build_perl_info.c
b/tp/Texinfo/XS/main/build_perl_info.c
index 42cfd9d97a..ca94aa66bf 100644
--- a/tp/Texinfo/XS/main/build_perl_info.c
+++ b/tp/Texinfo/XS/main/build_perl_info.c
@@ -708,6 +708,19 @@ element_to_perl_hash (ELEMENT *e, int avoid_recursion)
avoid_recursion, &nr_info);
}
+ if (type_data[e->type].flags & TF_spaces_before)
+ {
+ ELEMENT *f;
+ if (e->type != ET_context_brace_command)
+ f = e->elt_info[eit_spaces_before_argument];
+ else
+ f = e->elt_info[eit_brace_content_spaces_before_argument];
+
+ if (f)
+ store_info_element (e, f, "info", "spaces_before_argument",
+ avoid_recursion, &nr_info);
+ }
+
store_additional_info (e, &e->c->info_info, "info", &nr_info,
avoid_recursion);
diff --git a/tp/Texinfo/XS/main/convert_to_texinfo.c
b/tp/Texinfo/XS/main/convert_to_texinfo.c
index e3ddf93d99..3983fdf84f 100644
--- a/tp/Texinfo/XS/main/convert_to_texinfo.c
+++ b/tp/Texinfo/XS/main/convert_to_texinfo.c
@@ -65,7 +65,12 @@ expand_cmd_args_to_texi (const ELEMENT *e, TEXT *result)
}
if (type_data[e->type].flags & TF_spaces_before)
- spc_before_arg = lookup_info_element (e, "spaces_before_argument");
+ {
+ if (e->type != ET_context_brace_command)
+ spc_before_arg = e->elt_info[eit_spaces_before_argument];
+ else
+ spc_before_arg = e->elt_info[eit_brace_content_spaces_before_argument];
+ }
arg_line = lookup_info_string (e, "arg_line");
if (arg_line)
@@ -161,7 +166,7 @@ convert_to_texinfo_internal (const ELEMENT *e, TEXT *result)
ADD("{");
if (type_data[e->type].flags & TF_spaces_before)
{
- elt = lookup_info_element (e, "spaces_before_argument");
+ elt = e->elt_info[eit_spaces_before_argument];
if (elt)
ADD((char *)elt->text->text);
}
diff --git a/tp/Texinfo/XS/main/element_types.c
b/tp/Texinfo/XS/main/element_types.c
index b83eee161d..39dbf593a5 100644
--- a/tp/Texinfo/XS/main/element_types.c
+++ b/tp/Texinfo/XS/main/element_types.c
@@ -88,6 +88,8 @@ TYPE_DATA type_data[] = {
"elided_brace_command_arg", 0, 0,
"macro_call", TF_braces, 1,
"rmacro_call", TF_braces, 1,
+"macro_call_line", TF_spaces_before, 1,
+"rmacro_call_line", TF_spaces_before, 1,
"linemacro_call", TF_spaces_before, 1,
"bracketed_linemacro_arg", TF_text, 0,
"text", 0, 0,
diff --git a/tp/Texinfo/XS/main/element_types.h
b/tp/Texinfo/XS/main/element_types.h
index 6f2ca150c3..97a510279d 100644
--- a/tp/Texinfo/XS/main/element_types.h
+++ b/tp/Texinfo/XS/main/element_types.h
@@ -87,6 +87,8 @@ ET_elided_rawpreformatted,
ET_elided_brace_command_arg,
ET_macro_call,
ET_rmacro_call,
+ET_macro_call_line,
+ET_rmacro_call_line,
ET_linemacro_call,
ET_bracketed_linemacro_arg,
ET_text,
diff --git a/tp/Texinfo/XS/main/element_types.txt
b/tp/Texinfo/XS/main/element_types.txt
index bc8cdde9f3..ef881a840e 100644
--- a/tp/Texinfo/XS/main/element_types.txt
+++ b/tp/Texinfo/XS/main/element_types.txt
@@ -135,6 +135,8 @@ elided_brace_command_arg
# for macro expansion source marks
macro_call braces
rmacro_call braces
+macro_call_line spaces_before
+rmacro_call_line spaces_before
linemacro_call spaces_before
bracketed_linemacro_arg text
diff --git a/tp/Texinfo/XS/parsetexi/handle_commands.c
b/tp/Texinfo/XS/parsetexi/handle_commands.c
index 1968eb8d30..22e8041849 100644
--- a/tp/Texinfo/XS/parsetexi/handle_commands.c
+++ b/tp/Texinfo/XS/parsetexi/handle_commands.c
@@ -665,7 +665,7 @@ handle_line_command (ELEMENT *current, const char
**line_inout,
add_to_element_args (command_e, line_args);
add_extra_misc_args (command_e, "misc_args", args_list);
text_append (spaces_before->text, " ");
- add_info_element_oot (command_e, "spaces_before_argument",
spaces_before);
+ command_e->elt_info[eit_spaces_before_argument] = spaces_before;
text_append (spaces_after->text, "\n");
add_info_element_oot (line_args, "spaces_after_argument",
diff --git a/tp/Texinfo/XS/parsetexi/macro.c b/tp/Texinfo/XS/parsetexi/macro.c
index 58eef65cd4..ec2e2acc24 100644
--- a/tp/Texinfo/XS/parsetexi/macro.c
+++ b/tp/Texinfo/XS/parsetexi/macro.c
@@ -328,8 +328,7 @@ expand_macro_arguments (const ELEMENT *macro, const char
**line_inout,
{
ELEMENT *spaces_element = new_text_element (ET_other_text);
text_append_n (spaces_element->text, pline, whitespaces_len);
- add_info_element_oot (argument, "spaces_before_argument",
- spaces_element);
+ argument->elt_info[eit_spaces_before_argument] = spaces_element;
pline += whitespaces_len;
}
@@ -411,8 +410,8 @@ expand_macro_arguments (const ELEMENT *macro, const char
**line_inout,
{
ELEMENT *spaces_element = new_text_element
(ET_other_text);
text_append_n (spaces_element->text, p, pline - p);
- add_info_element_oot (argument, "spaces_before_argument",
- spaces_element);
+ argument->elt_info[eit_spaces_before_argument]
+ = spaces_element;
}
debug ("MACRO NEW ARG");
}
@@ -479,8 +478,7 @@ expand_linemacro_arguments (const ELEMENT *macro, const
char **line_inout,
{
ELEMENT *spaces_element = new_text_element (ET_other_text);
text_append_n (spaces_element->text, line, spaces_nr);
- add_info_element_oot (current, "spaces_before_argument",
- spaces_element);
+ current->elt_info[eit_spaces_before_argument] = spaces_element;
pline += spaces_nr;
}
@@ -612,8 +610,7 @@ expand_linemacro_arguments (const ELEMENT *macro, const
char **line_inout,
text_append_n (spaces_element->text, pline,
whitespaces_len);
- add_info_element_oot (argument, "spaces_before_argument",
- spaces_element);
+ argument->elt_info[eit_spaces_before_argument] = spaces_element;
debug ("LINEMACRO NEW ARG");
}
pline += whitespaces_len;
@@ -840,14 +837,14 @@ handle_macro (ELEMENT *current, const char **line_inout,
enum command_id cmd)
{
/* Get number of args. - 1 for the macro name. */
args_number = macro->c->args.number - 1;
- if (macro->cmd == CM_macro)
- macro_call_element = new_element (ET_macro_call);
- else if (macro->cmd == CM_rmacro)
- macro_call_element = new_element (ET_rmacro_call);
p = line + strspn (line, whitespace_chars);
if (*p == '{')
{
+ if (macro->cmd == CM_macro)
+ macro_call_element = new_element (ET_macro_call);
+ else if (macro->cmd == CM_rmacro)
+ macro_call_element = new_element (ET_rmacro_call);
if (p - line > 0)
{
ELEMENT *spaces_element = new_text_element (ET_other_text);
@@ -867,10 +864,19 @@ handle_macro (ELEMENT *current, const char **line_inout,
enum command_id cmd)
"be invoked with {}", command_name(cmd));
/* As agreed on the bug-texinfo mailing list, no warn when zero
arg and not called with {}. */
+
+ if (macro->cmd == CM_macro)
+ macro_call_element = new_element (ET_macro_call);
+ else if (macro->cmd == CM_rmacro)
+ macro_call_element = new_element (ET_rmacro_call);
}
else
{
ELEMENT *arg_elt = new_element (ET_line_arg);
+ if (macro->cmd == CM_macro)
+ macro_call_element = new_element (ET_macro_call_line);
+ else if (macro->cmd == CM_rmacro)
+ macro_call_element = new_element (ET_rmacro_call_line);
add_to_element_args (macro_call_element, arg_elt);
while (1)
diff --git a/tp/Texinfo/XS/parsetexi/parser.c b/tp/Texinfo/XS/parsetexi/parser.c
index 799d2fe81a..8e0d64fce8 100644
--- a/tp/Texinfo/XS/parsetexi/parser.c
+++ b/tp/Texinfo/XS/parsetexi/parser.c
@@ -857,7 +857,11 @@ abort_empty_line (ELEMENT **current_inout)
owning_element = internal_space_holder;
e->type = ET_other_text;
e->parent = 0;
- add_info_element_oot (owning_element, "spaces_before_argument", e);
+ if (owning_element->type != ET_context_brace_command)
+ owning_element->elt_info[eit_spaces_before_argument] = e;
+ else
+ owning_element->elt_info[eit_brace_content_spaces_before_argument]
+ = e;
internal_space_holder = 0;
}
}
diff --git a/tp/Texinfo/XS/structuring_transfo/structuring.c
b/tp/Texinfo/XS/structuring_transfo/structuring.c
index 245319b5e1..cf250e57d8 100644
--- a/tp/Texinfo/XS/structuring_transfo/structuring.c
+++ b/tp/Texinfo/XS/structuring_transfo/structuring.c
@@ -62,7 +62,7 @@ new_block_command (ELEMENT *element)
add_extra_string_dup (end, "text_arg", command_name);
text_append (end_spaces_before->text, " ");
- add_info_element_oot (end, "spaces_before_argument", end_spaces_before);
+ end->elt_info[eit_spaces_before_argument] = end_spaces_before;
text_append (end_spaces_after->text, "\n");
add_info_element_oot (end_args, "spaces_after_argument", end_spaces_after);
diff --git a/tp/Texinfo/XS/structuring_transfo/transformations.c
b/tp/Texinfo/XS/structuring_transfo/transformations.c
index f7e2e2bc46..3a93304688 100644
--- a/tp/Texinfo/XS/structuring_transfo/transformations.c
+++ b/tp/Texinfo/XS/structuring_transfo/transformations.c
@@ -255,8 +255,8 @@ fill_gaps_in_sectioning (ELEMENT *root, ELEMENT
*commands_heading_content)
text_append (spaces_before_argument->text, " ");
- add_info_element_oot (new_section, "spaces_before_argument",
- spaces_before_argument);
+ new_section->elt_info[eit_spaces_before_argument]
+ = spaces_before_argument;
text_append (spaces_after_argument->text, "\n");
add_info_element_oot (line_arg, "spaces_after_argument",
@@ -634,7 +634,7 @@ new_node (ERROR_MESSAGE_LIST *error_messages, ELEMENT
*node_tree,
add_to_element_args (node, node_line_arg);
text_append (spaces_before->text, " ");
text_append (spaces_after->text, spaces_after_argument.text);
- add_info_element_oot (node, "spaces_before_argument", spaces_before);
+ node->elt_info[eit_spaces_before_argument] = spaces_before;
add_info_element_oot (node_line_arg, "spaces_after_argument",
spaces_after);
diff --git
a/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl
b/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl
index d9289735a2..810f1c939e 100644
--- a/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl
+++ b/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl
@@ -328,7 +328,7 @@
$result_trees{'spaces_after_macro_linemacro_commands_in_call'} = {
'info' => {
'command_name' => 'mymac'
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'sourcemark_type' => 'macro_expansion',
'status' => 'start'
diff --git a/tp/t/results/macro/backslash_in_arg.pl
b/tp/t/results/macro/backslash_in_arg.pl
index ce46cb7933..df297e8089 100644
--- a/tp/t/results/macro/backslash_in_arg.pl
+++ b/tp/t/results/macro/backslash_in_arg.pl
@@ -143,7 +143,7 @@ $result_trees{'backslash_in_arg'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'position' => 1,
'sourcemark_type' => 'macro_expansion',
@@ -285,7 +285,7 @@ $result_trees{'backslash_in_arg'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'sourcemark_type' => 'macro_expansion',
'status' => 'start'
diff --git a/tp/t/results/macro/form_feeds.pl b/tp/t/results/macro/form_feeds.pl
index a904444af9..8a84901623 100644
--- a/tp/t/results/macro/form_feeds.pl
+++ b/tp/t/results/macro/form_feeds.pl
@@ -236,7 +236,7 @@ $result_trees{'form_feeds'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'position' => 1,
'sourcemark_type' => 'macro_expansion',
diff --git a/tp/t/results/macro/include_after_empty_line_arg.pl
b/tp/t/results/macro/include_after_empty_line_arg.pl
index 71aba9d3a6..35b58a7f16 100644
--- a/tp/t/results/macro/include_after_empty_line_arg.pl
+++ b/tp/t/results/macro/include_after_empty_line_arg.pl
@@ -84,7 +84,7 @@ $result_trees{'include_after_empty_line_arg'} = {
'info' => {
'command_name' => 'mymacro'
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'position' => 1,
'sourcemark_type' => 'macro_expansion',
diff --git a/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
b/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
index d4b302faaf..3fb4e97bd8 100644
--- a/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
+++ b/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
@@ -593,7 +593,7 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'sourcemark_type' => 'macro_expansion',
'status' => 'start'
@@ -771,7 +771,7 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'sourcemark_type' => 'macro_expansion',
'status' => 'start'
diff --git a/tp/t/results/macro/macro_in_macro_arg.pl
b/tp/t/results/macro/macro_in_macro_arg.pl
index 93dabf72ff..a9f6f2540e 100644
--- a/tp/t/results/macro/macro_in_macro_arg.pl
+++ b/tp/t/results/macro/macro_in_macro_arg.pl
@@ -273,7 +273,7 @@ $result_trees{'macro_in_macro_arg'} = {
'info' => {
'command_name' => 'macrotwo'
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'position' => 3,
'sourcemark_type' => 'macro_expansion',
diff --git a/tp/t/results/macro/macro_name_with_digit.pl
b/tp/t/results/macro/macro_name_with_digit.pl
index b56ae9afdd..274a8e4786 100644
--- a/tp/t/results/macro/macro_name_with_digit.pl
+++ b/tp/t/results/macro/macro_name_with_digit.pl
@@ -145,7 +145,7 @@ $result_trees{'macro_name_with_digit'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'position' => 1,
'sourcemark_type' => 'macro_expansion',
diff --git a/tp/t/results/macro/macro_one_arg_end_of_file.pl
b/tp/t/results/macro/macro_one_arg_end_of_file.pl
index d2733b3873..7cea98e1af 100644
--- a/tp/t/results/macro/macro_one_arg_end_of_file.pl
+++ b/tp/t/results/macro/macro_one_arg_end_of_file.pl
@@ -79,7 +79,7 @@ $result_trees{'macro_one_arg_end_of_file'} = {
'info' => {
'command_name' => 'onearg'
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'position' => 1,
'sourcemark_type' => 'macro_expansion',
diff --git a/tp/t/results/macro/no_macrobody.pl
b/tp/t/results/macro/no_macrobody.pl
index 4d63938c2c..821d2b7d10 100644
--- a/tp/t/results/macro/no_macrobody.pl
+++ b/tp/t/results/macro/no_macrobody.pl
@@ -87,7 +87,7 @@ $result_trees{'no_macrobody'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'sourcemark_type' => 'macro_expansion',
'status' => 'start'
diff --git a/tp/t/results/macro/protect_comma_macro_line.pl
b/tp/t/results/macro/protect_comma_macro_line.pl
index 750a2f225e..bd03359059 100644
--- a/tp/t/results/macro/protect_comma_macro_line.pl
+++ b/tp/t/results/macro/protect_comma_macro_line.pl
@@ -102,7 +102,7 @@ $result_trees{'protect_comma_macro_line'} = {
'text' => ' '
}
},
- 'type' => 'macro_call'
+ 'type' => 'macro_call_line'
},
'position' => 1,
'sourcemark_type' => 'macro_expansion',