Skip to content

Commit 1996b8f

Browse files
committed
Add Inner_Root alignment kind
1 parent 54234de commit 1996b8f

File tree

8 files changed

+59
-1
lines changed

8 files changed

+59
-1
lines changed

langkit/support/langkit_support-generic_api-unparsing.adb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ package body Langkit_Support.Generic_API.Unparsing is
790790
end;
791791

792792
elsif Kind in
793-
"dedent" | "dedentToRoot" | "markAsRoot"
793+
"dedent" | "dedentToRoot" | "markAsRoot" | "innerRoot"
794794
then
795795
if not JSON.Has_Field ("contents") then
796796
Abort_Parsing
@@ -803,6 +803,8 @@ package body Langkit_Support.Generic_API.Unparsing is
803803
then (Kind => Prettier.Dedent_To_Root)
804804
elsif Kind = "markAsRoot"
805805
then (Kind => Prettier.Root)
806+
elsif Kind = "innerRoot"
807+
then (Kind => Prettier.Inner_Root)
806808
else raise Program_Error),
807809
Contents => Parse_Template_Helper
808810
(JSON.Get ("contents"), Context));

langkit/support/langkit_support-generic_api-unparsing.ads

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ package Langkit_Support.Generic_API.Unparsing is
169169
--
170170
-- {"kind": "markAsRoot", "contents": <sub-template>}
171171
--
172+
-- * The "innerRoot" template yields a "innerRoot" Prettier document::
173+
--
174+
-- {"kind": "innerRoot", "contents": <sub-template>}
175+
--
172176
-- * The "recurse_field" template is valid only in "node" templates for
173177
-- concrete nodes that are neither abstract, token nor list nodes. When
174178
-- used, the whole template cannot contain any

langkit/support/langkit_support-prettier_utils.adb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,8 @@ package body Langkit_Support.Prettier_Utils is
775775
Put_Line ("dedentToRoot");
776776
when Prettier.Root =>
777777
Put_Line ("markAsRoot");
778+
when Prettier.Inner_Root =>
779+
Put_Line ("innerRoot");
778780
when Prettier.None =>
779781
Put_Line ("none");
780782
end case;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"node_configs": {
3+
"VarDecl": {
4+
"node": {"kind": "innerRoot", "contents": ["line", "recurse"]}
5+
}
6+
}
7+
}

testsuite/tests/ada_api/unparsing/commands.adb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ begin
106106
Check ("cmd_list.json");
107107
Check ("cmd_literalline.json");
108108
Check ("cmd_markasroot.json");
109+
Check ("cmd_innerroot.json");
109110
Check ("cmd_recurse.json");
110111
Check
111112
("cmd_recurse_field.json",

testsuite/tests/ada_api/unparsing/invalid_config.adb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ begin
7676
Check ("invalid_ifbreak.json");
7777
Check ("invalid_indent.json");
7878
Check ("invalid_markasroot.json");
79+
Check ("invalid_innerroot.json");
7980
Check ("invalid_recurse_field.json");
8081
Check ("invalid_recurse_field2.json");
8182
Check ("invalid_recurse_field3.json");
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"node_configs": {
3+
"VarDecl": {
4+
"fields": {
5+
"f_name": {"kind": "innerRoot"}
6+
}
7+
}
8+
}
9+
}

testsuite/tests/ada_api/unparsing/test.out

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ a: Int=2
6262
template for VarDecl.f_name: missing "contents" key for indent
6363
# invalid_markasroot.json
6464
template for VarDecl.f_name: missing "contents" key for markAsRoot
65+
# invalid_innerroot.json
66+
template for VarDecl.f_name: missing "contents" key for innerRoot
6567
# invalid_recurse_field.json
6668
template for VarDecl.f_name: "recurse_field" is valid in "node" templates only
6769
# invalid_recurse_field2.json
@@ -586,6 +588,36 @@ Done.
586588
}
587589
}
588590

591+
== cmd_innerroot.json ==
592+
593+
{
594+
"kind": "command",
595+
"command": {
596+
"command": "align",
597+
"alignData": {
598+
"kind": "innerRoot"
599+
},
600+
"alignContents": {
601+
"kind": "list",
602+
"list": [
603+
{
604+
"kind": "command",
605+
"command": {
606+
"command": "line",
607+
"literal": false,
608+
"soft": false,
609+
"hard": false
610+
}
611+
},
612+
{
613+
"kind": "text",
614+
"text": "var i:Int=0;"
615+
}
616+
]
617+
}
618+
}
619+
}
620+
589621
== cmd_recurse.json ==
590622

591623
{

0 commit comments

Comments
 (0)