Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit 39ca7d9

Browse files
Merge pull request #253 from Trivadis/bugfix/issue-249-format-globals-in-package-spec
Align contants and variables in package spec
2 parents 000820a + b4df3f4 commit 39ca7d9

2 files changed

Lines changed: 153 additions & 2 deletions

File tree

settings/sql_developer/trivadis_custom_format.arbori

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3666,6 +3666,16 @@ o8_declarations:
36663666
var datatypes = new HashMap();
36673667
}
36683668

3669+
o8_package_variables:
3670+
[scope) pkg_spec
3671+
& [name) decl_id
3672+
& [parent) basic_d
3673+
& name = node-1
3674+
& scope < name^
3675+
& parent = name^
3676+
& [parent = [name
3677+
;
3678+
36693679
o8_variables:
36703680
[scope) decl_list
36713681
& [name) decl_id
@@ -3702,7 +3712,8 @@ o8_external_params:
37023712
;
37033713

37043714
o8_find_type_declarations:
3705-
o8_variables
3715+
o8_package_variables
3716+
| o8_variables
37063717
| o8_records
37073718
| o8_attributes
37083719
| o8_external_params
@@ -3746,6 +3757,20 @@ o4_declarations:
37463757
var assignmentsWithValue = new HashMap();
37473758
}
37483759

3760+
o4_package_spec:
3761+
[scope) pkg_spec
3762+
& [node) default_expr_opt
3763+
& scope < node
3764+
;
3765+
3766+
o4_function_in_package_spec:
3767+
[scope) pkg_spec
3768+
& [func) fml_part
3769+
& [node) default_expr_opt
3770+
& func < node
3771+
& scope < func
3772+
;
3773+
37493774
o4_declare_section:
37503775
[scope) decl_list
37513776
& [node) default_expr_opt
@@ -3767,7 +3792,8 @@ o4_function:
37673792
;
37683793

37693794
o4_find_assignments:
3770-
(o4_declare_section - o4_function_in_declare_section)
3795+
(o4_package_spec - o4_function_in_package_spec)
3796+
| (o4_declare_section - o4_function_in_declare_section)
37713797
| o4_function
37723798
-> {
37733799
if (alignAssignments) {
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package com.trivadis.plsql.formatter.settings.tests.issues;
2+
3+
import com.trivadis.plsql.formatter.settings.ConfiguredTestFormatter;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.TestInstance;
6+
7+
import java.io.IOException;
8+
9+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
10+
public class Issue_249_globals_in_package_spec extends ConfiguredTestFormatter {
11+
@Test
12+
public void constants_only() throws IOException {
13+
var input = """
14+
create or replace package x as
15+
co_aaaa constant char := 'a';
16+
co_b constant char := 'b';
17+
co_cccccccccc constant char := 'c';
18+
end;
19+
/
20+
create or replace package body x as
21+
co_aaaa constant char := 'a';
22+
co_b constant char := 'b';
23+
co_cccccccccc constant char := 'c';
24+
end;
25+
/
26+
""";
27+
var expected = """
28+
create or replace package x as
29+
co_aaaa constant char := 'a';
30+
co_b constant char := 'b';
31+
co_cccccccccc constant char := 'c';
32+
end;
33+
/
34+
create or replace package body x as
35+
co_aaaa constant char := 'a';
36+
co_b constant char := 'b';
37+
co_cccccccccc constant char := 'c';
38+
end;
39+
/
40+
""";
41+
var actual = getFormatter().format(input);
42+
assertEquals(expected, actual);
43+
}
44+
45+
@Test
46+
public void variables_only() throws IOException {
47+
var input = """
48+
create or replace package x as
49+
l_aaaa char := 'a';
50+
l_b char := 'b';
51+
l_cccccccccc char := 'c';
52+
end;
53+
/
54+
create or replace package body x as
55+
l_aaaa char := 'a';
56+
l_b char := 'b';
57+
l_cccccccccc char := 'c';
58+
end;
59+
/
60+
""";
61+
var expected = """
62+
create or replace package x as
63+
l_aaaa char := 'a';
64+
l_b char := 'b';
65+
l_cccccccccc char := 'c';
66+
end;
67+
/
68+
create or replace package body x as
69+
l_aaaa char := 'a';
70+
l_b char := 'b';
71+
l_cccccccccc char := 'c';
72+
end;
73+
/
74+
75+
""";
76+
var actual = getFormatter().format(input);
77+
assertEquals(expected, actual);
78+
}
79+
80+
@Test
81+
public void constants_and_variables() throws IOException {
82+
var input = """
83+
create or replace package x as
84+
co_aaaa constant char := 'a';
85+
co_b constant char := 'b';
86+
co_cccccccccc constant char := 'c';
87+
l_aaaa char := 'a';
88+
l_b char := 'b';
89+
l_cccccccccc char := 'c';
90+
end;
91+
/
92+
create or replace package body x as
93+
co_aaaa constant char := 'a';
94+
co_b constant char := 'b';
95+
co_cccccccccc constant char := 'c';
96+
l_aaaa char := 'a';
97+
l_b char := 'b';
98+
l_cccccccccc char := 'c';
99+
end;
100+
/
101+
""";
102+
var expected = """
103+
create or replace package x as
104+
co_aaaa constant char := 'a';
105+
co_b constant char := 'b';
106+
co_cccccccccc constant char := 'c';
107+
l_aaaa char := 'a';
108+
l_b char := 'b';
109+
l_cccccccccc char := 'c';
110+
end;
111+
/
112+
create or replace package body x as
113+
co_aaaa constant char := 'a';
114+
co_b constant char := 'b';
115+
co_cccccccccc constant char := 'c';
116+
l_aaaa char := 'a';
117+
l_b char := 'b';
118+
l_cccccccccc char := 'c';
119+
end;
120+
/
121+
""";
122+
var actual = getFormatter().format(input);
123+
assertEquals(expected, actual);
124+
}
125+
}

0 commit comments

Comments
 (0)