Skip to content

Commit c938544

Browse files
authored
fix: using parent context (#2660)
1 parent 1252f5e commit c938544

File tree

13 files changed

+88
-54
lines changed

13 files changed

+88
-54
lines changed

server/engine/src/main/antlr4/org/eclipse/lsp/cobol/implicitDialects/cics/CICSParser.g4

+18-9
Original file line numberDiff line numberDiff line change
@@ -382,9 +382,11 @@ cics_get_counter_dcounter: ((COUNTER | DCOUNTER | POOL) cics_name | VALUE cics_d
382382
WRAP | NOSUSPEND | REDUCE | cics_handle_response)*;
383383

384384
/** GETMAIN */
385-
cics_getmain: GETMAIN (SET cics_ref | FLENGTH cics_data_value | BELOW | LENGTH cics_data_value | INITIMG cics_data_value |
385+
cics_getmain: GETMAIN cics_getmain_body;
386+
cics_getmain_body: (SET cics_ref | FLENGTH cics_data_value | BELOW | LENGTH cics_data_value | INITIMG cics_data_value |
386387
EXECUTABLE | SHARED | NOSUSPEND | USERDATAKEY | CICSDATAKEY | cics_handle_response)+;
387-
cics_getmain64: GETMAIN64 (SET cics_ref | FLENGTH cics_data_value | LOCATION cics_cvda |
388+
cics_getmain64: GETMAIN64 cics_getmain64_body;
389+
cics_getmain64_body: (SET cics_ref | FLENGTH cics_data_value | LOCATION cics_cvda |
388390
EXECUTABLE | SHARED | NOSUSPEND | USERDATAKEY | CICSDATAKEY | cics_handle_response)+;
389391

390392

@@ -632,7 +634,8 @@ cics_monitor: MONITOR cics_monitor_options;
632634
cics_monitor_options: (POINT cics_data_value | (DATA1 | DATA2 | ENTRYNAME) cics_data_area | cics_handle_response)+;
633635

634636
/** MOVE CONTAINER (both) */
635-
cics_move: MOVE ((CONTAINER | FROMACTIVITY | TOACTIVITY | AS | CHANNEL | TOCHANNEL) cics_data_value | FROMPROCESS |
637+
cics_move: MOVE cics_move_body;
638+
cics_move_body: ((CONTAINER | FROMACTIVITY | TOACTIVITY | AS | CHANNEL | TOCHANNEL) cics_data_value | FROMPROCESS |
636639
TOPROCESS | cics_handle_response)+;
637640

638641
/** POINT */
@@ -676,7 +679,8 @@ cics_read: READ (cics_file_name | UNCOMMITTED | CONSISTENT | REPEATABLE | UPDATE
676679
XRBA | EQUAL | GTEQ | NOSUSPEND | cics_handle_response)+;
677680

678681
/** READNEXT | READPREV*/
679-
cics_readnext_readprev: (READNEXT | READPREV) (cics_file_name | INTO cics_data_area | SET cics_ref | UNCOMMITTED | CONSISTENT | REPEATABLE |
682+
cics_readnext_readprev: (READNEXT | READPREV) cics_readnext_readprev_body;
683+
cics_readnext_readprev_body: (cics_file_name | INTO cics_data_area | SET cics_ref | UNCOMMITTED | CONSISTENT | REPEATABLE |
680684
UPDATE | TOKEN cics_data_area | RIDFLD cics_data_area | KEYLENGTH cics_data_value | REQID cics_data_value |
681685
SYSID cics_data_area | LENGTH cics_data_area | RBA | RRN | XRBA | NOSUSPEND | cics_handle_response)*;
682686

@@ -813,7 +817,8 @@ cics_syncpoint: SYNCPOINT cics_syncpoint_rollback;
813817
cics_syncpoint_rollback: (ROLLBACK | cics_handle_response)*;
814818

815819
/** TEST EVENT */
816-
cics_test: TEST (EVENT cics_data_value | FIRESTATUS cics_cvda | cics_handle_response)+;
820+
cics_test: TEST cics_test_body;
821+
cics_test_body: (EVENT cics_data_value | FIRESTATUS cics_cvda | cics_handle_response)+;
817822

818823
/** TRANSFORM DATATOXML / XMLTODATA */
819824
cics_transform: TRANSFORM (cics_transform_datatoxml | cics_transform_xmltodata);
@@ -830,7 +835,8 @@ cics_transform_xmltodata: XMLTODATA (CHANNEL cics_data_value | DATCONTAINER cics
830835
cics_transform_typens | XMLCONTAINER cics_data_value | XMLTRANSFORM cics_name | cics_handle_response)+;
831836

832837
/** UNLOCK */
833-
cics_unlock: UNLOCK (cics_file_name | TOKEN cics_data_area | SYSID cics_data_area | cics_handle_response)+;
838+
cics_unlock: UNLOCK cics_unlock_body;
839+
cics_unlock_body: (cics_file_name | TOKEN cics_data_area | SYSID cics_data_area | cics_handle_response)+;
834840

835841
/** UPDATE COUNTER / UPDATE DCOUNTER */
836842
cics_update: UPDATE cics_update_counter_dcounter;
@@ -855,7 +861,8 @@ cics_wait_signal: (SIGNAL | cics_handle_response)+;
855861
cics_wait_terminal: (TERMINAL | (CONVID | SESSION) cics_name | cics_handle_response)+;
856862

857863
/** WAITCICS */
858-
cics_waitcics: WAITCICS (ECBLIST cics_value | NUMEVENTS cics_data_value | PURGEABLE | PURGEABILITY cics_cvda |
864+
cics_waitcics: WAITCICS cics_waitcics_body;
865+
cics_waitcics_body: (ECBLIST cics_value | NUMEVENTS cics_data_value | PURGEABLE | PURGEABILITY cics_cvda |
859866
NOTPURGEABLE | NAME cics_name | cics_handle_response)+;
860867

861868
/** WEB (all) */
@@ -980,12 +987,14 @@ cics_wsacontext_grelatesuri: RELATESURI cics_data_area (RELATESTYPE cics_data_ar
980987
cics_wsacontext_geprtype: EPRTYPE cics_cvda (EPRFIELD cics_cvda | EPRINTO cics_data_area | EPRSET cics_ref | EPRLENGTH cics_data_area | cics_handle_response)+;
981988

982989
/** WSAEPR CREATE */
983-
cics_wsaepr: WSAEPR (CREATE | EPRINTO cics_data_area | EPRSET cics_data_area | EPRLENGTH cics_data_area | ADDRESS cics_data_value |
990+
cics_wsaepr: WSAEPR cics_wsaepr_body;
991+
cics_wsaepr_body: (CREATE | EPRINTO cics_data_area | EPRSET cics_data_area | EPRLENGTH cics_data_area | ADDRESS cics_data_value |
984992
REFPARMS cics_data_value | REFPARMSLEN cics_data_value | METADATA cics_data_value | METADATALEN cics_data_value |
985993
FROMCCSID cics_data_value | FROMCODEPAGE cics_data_value | cics_handle_response)+;
986994

987995
/** XCTL: */
988-
cics_xctl: XCTL (PROGRAM cics_name | COMMAREA cics_data_area | LENGTH cics_data_value | CHANNEL cics_name | INPUTMSG cics_data_area |
996+
cics_xctl: XCTL cics_xctl_body;
997+
cics_xctl_body: (PROGRAM cics_name | COMMAREA cics_data_area | LENGTH cics_data_value | CHANNEL cics_name | INPUTMSG cics_data_area |
989998
INPUTMSGLEN cics_data_value | cics_handle_response)+;
990999

9911000
/** FILE or DATASET */

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSGetMain64OptionsUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ public CICSGetMain64OptionsUtility(DialectProcessingContext context, List<Syntax
5858
* @param <E> A subclass of ParserRuleContext
5959
*/
6060
public <E extends ParserRuleContext> void checkOptions(E ctx) {
61-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_getmain64) {
62-
checkGetMain((CICSParser.Cics_getmain64Context) ctx.getParent());
61+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_getmain64_body) {
62+
checkGetMain((CICSParser.Cics_getmain64_bodyContext) ctx);
6363
}
64-
checkDuplicates(ctx.getParent());
64+
checkDuplicates(ctx);
6565
}
6666

6767
@SuppressWarnings("unchecked")
68-
private void checkGetMain(CICSParser.Cics_getmain64Context ctx) {
68+
private void checkGetMain(CICSParser.Cics_getmain64_bodyContext ctx) {
6969
checkHasMandatoryOptions(ctx.SET(), ctx, "SET");
7070
checkHasMandatoryOptions(ctx.FLENGTH(), ctx, "FLENGTH");
7171
if (ctx.LOCATION().isEmpty()) checkHasIllegalOptions(ctx.EXECUTABLE(), "EXECUTABLE without LOCATION");

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSGetMainOptionsUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ public CICSGetMainOptionsUtility(DialectProcessingContext context, List<SyntaxEr
5959
* @param <E> A subclass of ParserRuleContext
6060
*/
6161
public <E extends ParserRuleContext> void checkOptions(E ctx) {
62-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_getmain) {
63-
checkGetMain((CICSParser.Cics_getmainContext) ctx.getParent());
62+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_getmain_body) {
63+
checkGetMain((CICSParser.Cics_getmain_bodyContext) ctx);
6464
}
65-
checkDuplicates(ctx.getParent());
65+
checkDuplicates(ctx);
6666
}
6767

6868
@SuppressWarnings("unchecked")
69-
private void checkGetMain(CICSParser.Cics_getmainContext ctx) {
69+
private void checkGetMain(CICSParser.Cics_getmain_bodyContext ctx) {
7070
checkHasMandatoryOptions(ctx.SET(), ctx, "SET");
7171
checkHasExactlyOneOption("FLENGTH or LENGTH", ctx, ctx.FLENGTH(), ctx.LENGTH());
7272
if (ctx.FLENGTH().isEmpty()) checkHasIllegalOptions(ctx.BELOW(), "BELOW without FLENGTH");

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSMoveOptionsCheckUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,13 @@ public CICSMoveOptionsCheckUtility(
6060
*/
6161
@Override
6262
public <E extends ParserRuleContext> void checkOptions(E ctx) {
63-
if (RULE_cics_move == (ctx.getParent().getRuleIndex())) {
64-
checkMoveOptions((CICSParser.Cics_moveContext) ctx.getParent());
63+
if (CICSParser.RULE_cics_move_body == (ctx.getRuleIndex())) {
64+
checkMoveOptions((CICSParser.Cics_move_bodyContext) ctx);
6565
}
66-
checkDuplicates(ctx.getParent());
66+
checkDuplicates(ctx);
6767
}
6868

69-
private void checkMoveOptions(CICSParser.Cics_moveContext ctx) {
69+
private void checkMoveOptions(CICSParser.Cics_move_bodyContext ctx) {
7070
checkHasMandatoryOptions(ctx.CONTAINER(), ctx, "CONTAINER");
7171
checkHasMandatoryOptions(ctx.AS(), ctx, "AS");
7272
checkHasMutuallyExclusiveOptions("FROMPROCESS or FROMACTIVITY", ctx.FROMPROCESS(), ctx.FROMACTIVITY());

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSReadNextReadPrevOptionsUtility.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -69,23 +69,21 @@ public CICSReadNextReadPrevOptionsUtility(DialectProcessingContext context, List
6969
* @param <E> A subclass of ParserRuleContext
7070
*/
7171
public <E extends ParserRuleContext> void checkOptions(E ctx) {
72-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_readnext_readprev) {
73-
checkReadNextReadPrev((CICSParser.Cics_readnext_readprevContext) ctx.getParent());
72+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_readnext_readprev_body) {
73+
checkReadNextReadPrevBody((CICSParser.Cics_readnext_readprev_bodyContext) ctx);
7474
}
75-
checkDuplicates(ctx.getParent());
75+
checkDuplicates(ctx);
7676
}
7777

7878
@SuppressWarnings("unchecked")
79-
private void checkReadNextReadPrev(CICSParser.Cics_readnext_readprevContext ctx) {
79+
private void checkReadNextReadPrevBody(CICSParser.Cics_readnext_readprev_bodyContext ctx) {
8080
checkHasMandatoryOptions(ctx.cics_file_name(), ctx, "FILE");
8181
List<TerminalNode> file = ctx.cics_file_name().stream().map(CICSParser.Cics_file_nameContext::FILE).collect(Collectors.toList());
8282
List<TerminalNode> dataset = ctx.cics_file_name().stream().map(CICSParser.Cics_file_nameContext::DATASET).collect(Collectors.toList());
8383
checkHasMutuallyExclusiveOptions("FILE or DATASET", file, dataset);
8484

8585
checkHasMandatoryOptions(ctx.RIDFLD(), ctx, "RIDFLD");
8686
checkHasExactlyOneOption("INTO or SET", ctx, ctx.INTO(), ctx.SET());
87-
checkHasMutuallyExclusiveOptions(
88-
"READNEXT or READPREV", Collections.singletonList(ctx.READNEXT()), Collections.singletonList(ctx.READPREV()));
8987
checkHasMutuallyExclusiveOptions(
9088
"UNCOMMITTED or CONSISTENT or REPEATABLE or UPDATE", ctx.UNCOMMITTED(), ctx.CONSISTENT(), ctx.REPEATABLE(), ctx.UPDATE());
9189

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSTestOptionsUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ public CICSTestOptionsUtility(DialectProcessingContext context, List<SyntaxError
5353
* @param <E> A subclass of ParserRuleContext
5454
*/
5555
public <E extends ParserRuleContext> void checkOptions(E ctx) {
56-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_test) {
57-
checkTestEvent((CICSParser.Cics_testContext) ctx.getParent());
56+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_test_body) {
57+
checkTestEvent((CICSParser.Cics_test_bodyContext) ctx);
5858
}
59-
checkDuplicates(ctx.getParent());
59+
checkDuplicates(ctx);
6060
}
6161

62-
private void checkTestEvent(CICSParser.Cics_testContext ctx) {
62+
private void checkTestEvent(CICSParser.Cics_test_bodyContext ctx) {
6363
checkHasMandatoryOptions(ctx.EVENT(), ctx, "EVENT");
6464
checkHasMandatoryOptions(ctx.FIRESTATUS(), ctx, "FIRESTATUS");
6565
}

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSUnlockOptionsUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ public CICSUnlockOptionsUtility(DialectProcessingContext context, List<SyntaxErr
5656
* @param <E> A subclass of ParserRuleContext
5757
*/
5858
public <E extends ParserRuleContext> void checkOptions(E ctx) {
59-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_unlock) {
60-
checkUnlock((CICSParser.Cics_unlockContext) ctx.getParent());
59+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_unlock_body) {
60+
checkUnlock((CICSParser.Cics_unlock_bodyContext) ctx);
6161
}
62-
checkDuplicates(ctx.getParent());
62+
checkDuplicates(ctx);
6363
}
6464

6565
@SuppressWarnings("unchecked")
66-
private void checkUnlock(CICSParser.Cics_unlockContext ctx) {
66+
private void checkUnlock(CICSParser.Cics_unlock_bodyContext ctx) {
6767
checkHasMandatoryOptions(ctx.cics_file_name(), ctx, "FILE");
6868
List<TerminalNode> file = ctx.cics_file_name().stream().map(CICSParser.Cics_file_nameContext::FILE).collect(Collectors.toList());
6969
List<TerminalNode> dataset = ctx.cics_file_name().stream().map(CICSParser.Cics_file_nameContext::DATASET).collect(Collectors.toList());

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSWSAEPRUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ public CICSWSAEPRUtility(DialectProcessingContext context, List<SyntaxError> err
6363
* @param <E> A subclass of ParserRuleContext
6464
*/
6565
public <E extends ParserRuleContext> void checkOptions(E ctx) {
66-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_wsaepr) {
67-
checkWSAEPR((CICSParser.Cics_wsaeprContext) ctx.getParent());
66+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_wsaepr_body) {
67+
checkWSAEPR((CICSParser.Cics_wsaepr_bodyContext) ctx);
6868
}
69-
checkDuplicates(ctx.getParent());
69+
checkDuplicates(ctx);
7070
}
7171

72-
private void checkWSAEPR(CICSParser.Cics_wsaeprContext ctx) {
72+
private void checkWSAEPR(CICSParser.Cics_wsaepr_bodyContext ctx) {
7373
checkHasMandatoryOptions(ctx.CREATE(), ctx, "CREATE");
7474
checkHasExactlyOneOption("EPRINTO or EPRSET", ctx, ctx.EPRINTO(), ctx.EPRSET());
7575
checkHasMandatoryOptions(ctx.EPRLENGTH(), ctx, "EPRLENGTH");

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSWaitCicsOptionsUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@ public CICSWaitCicsOptionsUtility(DialectProcessingContext context, List<SyntaxE
5757
* @param <E> A subclass of ParserRuleContext
5858
*/
5959
public <E extends ParserRuleContext> void checkOptions(E ctx) {
60-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_waitcics) {
61-
checkWaitCics((CICSParser.Cics_waitcicsContext) ctx.getParent());
60+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_waitcics_body) {
61+
checkWaitCics((CICSParser.Cics_waitcics_bodyContext) ctx);
6262
}
63-
checkDuplicates(ctx.getParent());
63+
checkDuplicates(ctx);
6464
}
6565

6666
@SuppressWarnings("unchecked")
67-
private void checkWaitCics(CICSParser.Cics_waitcicsContext ctx) {
67+
private void checkWaitCics(CICSParser.Cics_waitcics_bodyContext ctx) {
6868
checkHasMandatoryOptions(ctx.ECBLIST(), ctx, "ECBLIST");
6969
checkHasMandatoryOptions(ctx.NUMEVENTS(), ctx, "NUMEVENTS");
7070
checkHasMutuallyExclusiveOptions("PURGEABLE or NOTPURGEABLE or PURGEABILITY", ctx.PURGEABLE(), ctx.NOTPURGEABLE(), ctx.PURGEABILITY());

server/engine/src/main/java/org/eclipse/lsp/cobol/implicitDialects/cics/utility/CICSXctlOptionsUtility.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ public CICSXctlOptionsUtility(DialectProcessingContext context, List<SyntaxError
5656
* @param <E> A subclass of ParserRuleContext
5757
*/
5858
public <E extends ParserRuleContext> void checkOptions(E ctx) {
59-
if (ctx.getParent().getRuleIndex() == CICSParser.RULE_cics_xctl) {
60-
checkXctl((CICSParser.Cics_xctlContext) ctx.getParent());
59+
if (ctx.getRuleIndex() == CICSParser.RULE_cics_xctl_body) {
60+
checkXctl((CICSParser.Cics_xctl_bodyContext) ctx);
6161
}
62-
checkDuplicates(ctx.getParent());
62+
checkDuplicates(ctx);
6363
}
6464

6565
@SuppressWarnings("unchecked")
66-
private void checkXctl(CICSParser.Cics_xctlContext ctx) {
66+
private void checkXctl(CICSParser.Cics_xctl_bodyContext ctx) {
6767
checkHasMandatoryOptions(ctx.PROGRAM(), ctx, "PROGRAM");
6868
checkHasMutuallyExclusiveOptions("COMMAREA or CHANNEL", ctx.COMMAREA(), ctx.CHANNEL());
6969

server/engine/src/test/java/org/eclipse/lsp/cobol/usecases/TestCicsTest.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.eclipse.lsp.cobol.usecases.common.CICSTestUtils;
2020
import org.eclipse.lsp4j.Diagnostic;
2121
import org.eclipse.lsp4j.DiagnosticSeverity;
22-
import org.eclipse.lsp4j.Position;
2322
import org.eclipse.lsp4j.Range;
2423
import org.junit.jupiter.api.Test;
2524

@@ -34,8 +33,8 @@ public class TestCicsTest {
3433
private static final String TEST_EVENT_VALID_ONE = "TEST EVENT({$varOne}) FIRESTATUS({$varTwo})";
3534
private static final String TEST_EVENT_VALID_TWO = "TEST FIRESTATUS({$varTwo}) EVENT({$varOne})";
3635

37-
private static final String TEST_EVENT_INVALID_ONE = "TEST {EVENT|error1}({$varOne})";
38-
private static final String TEST_EVENT_INVALID_TWO = "TEST {FIRESTATUS|error1}({$varTwo})";
36+
private static final String TEST_EVENT_INVALID_ONE = "TEST {_EVENT({$varOne})|error1_}";
37+
private static final String TEST_EVENT_INVALID_TWO = "TEST {_FIRESTATUS({$varTwo})|error1_}";
3938

4039

4140
@Test
@@ -54,7 +53,7 @@ void testCicsTestInvalidOne() {
5453
ImmutableMap.of(
5554
"error1",
5655
new Diagnostic(
57-
new Range(new Position(12, 12), new Position(13, 25)),
56+
new Range(),
5857
"Missing required option: FIRESTATUS",
5958
DiagnosticSeverity.Error,
6059
ErrorSource.PARSING.getText())));
@@ -66,7 +65,7 @@ void testCicsTestInvalidTwo() {
6665
ImmutableMap.of(
6766
"error1",
6867
new Diagnostic(
69-
new Range(new Position(12, 12), new Position(13, 30)),
68+
new Range(),
7069
"Missing required option: EVENT",
7170
DiagnosticSeverity.Error,
7271
ErrorSource.PARSING.getText())));

server/engine/src/test/java/org/eclipse/lsp/cobol/usecases/TestCicsUnlock.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.eclipse.lsp.cobol.usecases.common.CICSTestUtils;
2020
import org.eclipse.lsp4j.Diagnostic;
2121
import org.eclipse.lsp4j.DiagnosticSeverity;
22-
import org.eclipse.lsp4j.Position;
2322
import org.eclipse.lsp4j.Range;
2423
import org.junit.jupiter.api.Test;
2524

@@ -70,7 +69,7 @@ void testInvalid() {
7069
CICSTestUtils.errorTest(INVALID, ImmutableMap.of(
7170
"error",
7271
new Diagnostic(
73-
new Range(new Position(12, 12), new Position(13, 27)),
72+
new Range(),
7473
"Missing required option: FILE",
7574
DiagnosticSeverity.Error,
7675
ErrorSource.PARSING.getText())));

server/engine/src/test/java/org/eclipse/lsp/cobol/usecases/TestCicsWSAEPR.java

+29
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class TestCicsWSAEPR {
4040
private static final String WSAEPR_CREATE_SOME_OPTIONS_VALID_THREE = "WSAEPR EPRINTO(1) EPRLENGTH(1) METADATA(2) CREATE METADATALEN(2)";
4141

4242
private static final String WSAEPR_CREATE_BARE_VALID = "WSAEPR CREATE EPRINTO(2) EPRLENGTH(1) METADATA(1)";
43+
private static final String WSAEPR_CREATE_BARE_INVALID = "WSAEPR {CREATE|error1|error2|error3}";
4344

4445
private static final String WSAEPR_CREATE_INVALID_ONE = "WSAEPR CREATE {EPRINTO|error1}(1) EPRLENGTH(1) {EPRSET|error1}(1) ADDRESS(2)";
4546
private static final String WSAEPR_CREATE_INVALID_TWO = "WSAEPR {REFPARMSLEN|error1}(2) CREATE EPRLENGTH(1) EPRSET(1) ADDRESS(2)";
@@ -72,6 +73,34 @@ void testWSAEPRCreateBareValid() {
7273
CICSTestUtils.noErrorTest(WSAEPR_CREATE_BARE_VALID);
7374
}
7475

76+
@Test
77+
void testWSAEPRCreateBareInvalid() {
78+
Map<String, Diagnostic> expectedDiagnostic =
79+
ImmutableMap.of(
80+
"error1",
81+
new Diagnostic(
82+
new Range(),
83+
"Exactly one option required, none provided: EPRINTO or EPRSET",
84+
DiagnosticSeverity.Error,
85+
ErrorSource.PARSING.getText()
86+
),
87+
"error2",
88+
new Diagnostic(
89+
new Range(),
90+
"Missing required option: ADDRESS or REFPARMS or METADATA",
91+
DiagnosticSeverity.Error,
92+
ErrorSource.PARSING.getText()
93+
),
94+
"error3",
95+
new Diagnostic(
96+
new Range(),
97+
"Missing required option: EPRLENGTH",
98+
DiagnosticSeverity.Error,
99+
ErrorSource.PARSING.getText()
100+
));
101+
CICSTestUtils.errorTest(WSAEPR_CREATE_BARE_INVALID, expectedDiagnostic);
102+
}
103+
75104
@Test
76105
void testWSAEPRCreateInvalidOne() {
77106
Map<String, Diagnostic> expectedDiagnostic =

0 commit comments

Comments
 (0)