Skip to content

Commit 88f6548

Browse files
authored
WI #2749 Handle multi-line CEs and multiple CEs on same line in FindCodeElementAt (#2751)
1 parent d27de20 commit 88f6548

28 files changed

+964
-21
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{"line":10,"character":26}
2+
---------------------------------------------------------------------------------
3+
System.IO.InvalidDataException
4+
Could not find enclosing program in 'syntaxError' for position (10, 26).
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{"line":10,"character":26}
2+
---------------------------------------------------------------------------------
3+
System.IO.InvalidDataException
4+
Could not find enclosing program in 'syntaxError' for position (10, 26).
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TCOZERRCP.
3+
DATA DIVISION.
4+
5+
WORKING-STORAGE SECTION.
6+
7+
01 VAR-1 PIC X.
8+
* Error: VAR 2 instead of VAR-2
9+
01 VAR 2 PIC X.
10+
11+
PROCEDURE DIVISION.
12+
GOBACK
13+
.
14+
END PROGRAM TCOZERRCP.

TypeCobol.LanguageServer.Test/ProcessorTests/DataLayoutProcessorCSVTest.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ protected override string GetActualResult(CompilationUnit compilationUnit, Posit
3535
[TestMethod]
3636
public void Empty() => ExecuteTest("empty");
3737

38+
[TestMethod]
39+
public void SyntaxError() => ExecuteTest("syntaxError");
40+
3841
[TestMethod]
3942
public void Copy() => ExecuteTest("copy", true);
4043

TypeCobol.LanguageServer.Test/ProcessorTests/DataLayoutProcessorTest.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Runtime.CompilerServices;
2+
using System.Text;
23
using Newtonsoft.Json.Linq;
34
using TypeCobol.Compiler;
45
using TypeCobol.LanguageServer.Test.Utilities;
@@ -30,8 +31,19 @@ protected void ExecuteTest(string sourceFileName, bool isCopy = false, [CallerMe
3031
// Retrieve unique argument = position
3132
var position = JToken.Parse(testData[0]).ToObject<Position>();
3233

33-
// Execute processor and build actual result
34-
var actual = GetActualResult(compilationUnit, position);
34+
// Execute processor and build actual result, catch error if any
35+
string actual;
36+
try
37+
{
38+
actual = GetActualResult(compilationUnit, position);
39+
}
40+
catch (Exception exception)
41+
{
42+
var builder = new StringBuilder();
43+
builder.AppendLine(exception.GetType().FullName);
44+
builder.AppendLine(exception.Message);
45+
actual = builder.ToString();
46+
}
3547

3648
// Compare to expected
3749
var expected = FormatExpectedResult(testData[1]);

TypeCobol.LanguageServer.Test/ProcessorTests/DataLayoutProcessorTreeTest.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,17 @@ protected override string GetActualResult(CompilationUnit compilationUnit, Posit
2828
protected override string FormatExpectedResult(string expected)
2929
{
3030
// Build expected result (JSON)
31-
var expectedJson = JToken.Parse(expected);
32-
return JToken.FromObject(expectedJson).ToString(Formatting.Indented);
31+
try
32+
{
33+
// Try parse and re-indent to match the style of the actual JSON
34+
var expectedJson = JToken.Parse(expected);
35+
return JToken.FromObject(expectedJson).ToString(Formatting.Indented);
36+
}
37+
catch
38+
{
39+
// Parse error -> the expected is the description of an exception, return as is
40+
return expected;
41+
}
3342
}
3443

3544
[TestInitialize]
@@ -55,6 +64,9 @@ public void Cleanup()
5564
[TestMethod]
5665
public void Empty() => ExecuteTest("empty");
5766

67+
[TestMethod]
68+
public void SyntaxError() => ExecuteTest("syntaxError");
69+
5870
[TestMethod]
5971

6072
public void Copy() => ExecuteTest("copy", true);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TCOMFL06.
3+
DATA DIVISION.
4+
WORKING-STORAGE SECTION.
5+
01 VAR-1 PIC X.
6+
01 VAR-2 PIC X.
7+
PROCEDURE DIVISION.
8+
MOVE VAR-1
9+
TO
10+
VAR-2
11+
GOBACK
12+
.
13+
END PROGRAM TCOMFL06.
14+
-------------------------------------------------------------------------------------------------
15+
TypeCobol.LanguageServer.Commands.InsertVariableDisplay.InsertVariableDisplayRefactoringProcessor
16+
-------------------------------------------------------------------------------------------------
17+
[
18+
{
19+
"textDocument": { "uri": "file:/test.expected.cbl" },
20+
"position": { "line": 9, "character": 21 }
21+
},
22+
false,
23+
{
24+
"vm": 1, "idx": 0, "ch": [
25+
{
26+
"vm": 0, "name": "VAR-1"
27+
}
28+
]
29+
}
30+
]
31+
-------------------------------------------------------------------------------------------------
32+
refactoring.label=Debug instructions successfully generated.
33+
refactoring.source=
34+
IDENTIFICATION DIVISION.
35+
PROGRAM-ID. TCOMFL06.
36+
DATA DIVISION.
37+
WORKING-STORAGE SECTION.
38+
01 VAR-1 PIC X.
39+
01 VAR-2 PIC X.
40+
PROCEDURE DIVISION.
41+
MOVE VAR-1
42+
TO
43+
VAR-2
44+
*<DBG>InsertVariableDisplay 1959/09/18 11:09 TESTUSER
45+
D DISPLAY 'VAR-1 <' VAR-1 '>'
46+
*</DBG>
47+
48+
GOBACK
49+
.
50+
END PROGRAM TCOMFL06.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TCOMFL06.
3+
DATA DIVISION.
4+
WORKING-STORAGE SECTION.
5+
01 VAR-1 PIC X.
6+
01 VAR-2 PIC X.
7+
PROCEDURE DIVISION.
8+
DISPLAY VAR-1 MOVE VAR-1 TO VAR-2 DISPLAY VAR-2
9+
GOBACK
10+
.
11+
END PROGRAM TCOMFL06.
12+
-------------------------------------------------------------------------------------------------
13+
TypeCobol.LanguageServer.Commands.InsertVariableDisplay.InsertVariableDisplayRefactoringProcessor
14+
-------------------------------------------------------------------------------------------------
15+
[
16+
{
17+
"textDocument": { "uri": "file:/test.expected.cbl" },
18+
"position": { "line": 7, "character": 58 }
19+
},
20+
false,
21+
{
22+
"vm": 1, "idx": 0, "ch": [
23+
{
24+
"vm": 0, "name": "VAR-1"
25+
}
26+
]
27+
}
28+
]
29+
-------------------------------------------------------------------------------------------------
30+
refactoring.label=Debug instructions successfully generated.
31+
refactoring.source=
32+
IDENTIFICATION DIVISION.
33+
PROGRAM-ID. TCOMFL06.
34+
DATA DIVISION.
35+
WORKING-STORAGE SECTION.
36+
01 VAR-1 PIC X.
37+
01 VAR-2 PIC X.
38+
PROCEDURE DIVISION.
39+
DISPLAY VAR-1 MOVE VAR-1 TO VAR-2 DISPLAY VAR-2
40+
*<DBG>InsertVariableDisplay 1959/09/18 11:09 TESTUSER
41+
D DISPLAY 'VAR-1 <' VAR-1 '>'
42+
*</DBG>
43+
44+
GOBACK
45+
.
46+
END PROGRAM TCOMFL06.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TCOMFL06.
3+
DATA DIVISION.
4+
WORKING-STORAGE SECTION.
5+
01 VAR-1 PIC X.
6+
01 VAR-2 PIC X.
7+
PROCEDURE DIVISION.
8+
MOVE VAR-1
9+
TO
10+
VAR-2
11+
GOBACK
12+
.
13+
END PROGRAM TCOMFL06.
14+
-------------------------------------------------------------------------------------------------
15+
TypeCobol.LanguageServer.Commands.InsertVariableDisplay.InsertVariableDisplayRefactoringProcessor
16+
-------------------------------------------------------------------------------------------------
17+
[
18+
{
19+
"textDocument": { "uri": "file:/test.expected.cbl" },
20+
"position": { "line": 7, "character": 7 }
21+
},
22+
false,
23+
{
24+
"vm": 1, "idx": 0, "ch": [
25+
{
26+
"vm": 0, "name": "VAR-1"
27+
}
28+
]
29+
}
30+
]
31+
-------------------------------------------------------------------------------------------------
32+
refactoring.label=Debug instructions successfully generated.
33+
refactoring.source=
34+
IDENTIFICATION DIVISION.
35+
PROGRAM-ID. TCOMFL06.
36+
DATA DIVISION.
37+
WORKING-STORAGE SECTION.
38+
01 VAR-1 PIC X.
39+
01 VAR-2 PIC X.
40+
PROCEDURE DIVISION.
41+
*<DBG>InsertVariableDisplay 1959/09/18 11:09 TESTUSER
42+
D DISPLAY 'VAR-1 <' VAR-1 '>'
43+
*</DBG>
44+
45+
MOVE VAR-1
46+
TO
47+
VAR-2
48+
GOBACK
49+
.
50+
END PROGRAM TCOMFL06.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TCOMFL06.
3+
DATA DIVISION.
4+
WORKING-STORAGE SECTION.
5+
01 VAR-1 PIC X.
6+
01 VAR-2 PIC X.
7+
PROCEDURE DIVISION.
8+
DISPLAY VAR-1 MOVE VAR-1 TO VAR-2 DISPLAY VAR-2
9+
GOBACK
10+
.
11+
END PROGRAM TCOMFL06.
12+
-------------------------------------------------------------------------------------------------
13+
TypeCobol.LanguageServer.Commands.InsertVariableDisplay.InsertVariableDisplayRefactoringProcessor
14+
-------------------------------------------------------------------------------------------------
15+
[
16+
{
17+
"textDocument": { "uri": "file:/test.expected.cbl" },
18+
"position": { "line": 7, "character": 7 }
19+
},
20+
false,
21+
{
22+
"vm": 1, "idx": 0, "ch": [
23+
{
24+
"vm": 0, "name": "VAR-1"
25+
}
26+
]
27+
}
28+
]
29+
-------------------------------------------------------------------------------------------------
30+
refactoring.label=Debug instructions successfully generated.
31+
refactoring.source=
32+
IDENTIFICATION DIVISION.
33+
PROGRAM-ID. TCOMFL06.
34+
DATA DIVISION.
35+
WORKING-STORAGE SECTION.
36+
01 VAR-1 PIC X.
37+
01 VAR-2 PIC X.
38+
PROCEDURE DIVISION.
39+
*<DBG>InsertVariableDisplay 1959/09/18 11:09 TESTUSER
40+
D DISPLAY 'VAR-1 <' VAR-1 '>'
41+
*</DBG>
42+
43+
DISPLAY VAR-1 MOVE VAR-1 TO VAR-2 DISPLAY VAR-2
44+
GOBACK
45+
.
46+
END PROGRAM TCOMFL06.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TCOMFL06.
3+
DATA DIVISION.
4+
WORKING-STORAGE SECTION.
5+
01 VAR-1 PIC X.
6+
01 VAR-2 PIC X.
7+
PROCEDURE DIVISION.
8+
MOVE VAR-1
9+
TO
10+
VAR-2
11+
GOBACK
12+
.
13+
END PROGRAM TCOMFL06.
14+
-------------------------------------------------------------------------------------------------
15+
TypeCobol.LanguageServer.Commands.InsertVariableDisplay.InsertVariableDisplayRefactoringProcessor
16+
-------------------------------------------------------------------------------------------------
17+
[
18+
{
19+
"textDocument": { "uri": "file:/test.expected.cbl" },
20+
"position": { "line": 8, "character": 15 }
21+
},
22+
false,
23+
{
24+
"vm": 1, "idx": 0, "ch": [
25+
{
26+
"vm": 0, "name": "VAR-1"
27+
}
28+
]
29+
}
30+
]
31+
-------------------------------------------------------------------------------------------------
32+
refactoring.label=Debug instructions successfully generated.
33+
refactoring.source=
34+
IDENTIFICATION DIVISION.
35+
PROGRAM-ID. TCOMFL06.
36+
DATA DIVISION.
37+
WORKING-STORAGE SECTION.
38+
01 VAR-1 PIC X.
39+
01 VAR-2 PIC X.
40+
PROCEDURE DIVISION.
41+
MOVE VAR-1
42+
TO
43+
VAR-2
44+
*<DBG>InsertVariableDisplay 1959/09/18 11:09 TESTUSER
45+
D DISPLAY 'VAR-1 <' VAR-1 '>'
46+
*</DBG>
47+
48+
GOBACK
49+
.
50+
END PROGRAM TCOMFL06.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TCOEMPTY.
3+
DATA DIVISION.
4+
5+
WORKING-STORAGE SECTION.
6+
7+
01 VAR-1 PIC X.
8+
9+
PROCEDURE DIVISION.
10+
11+
GOBACK
12+
.
13+
END PROGRAM TCOEMPTY.
14+
-------------------------------------------------------------------------------------------------
15+
TypeCobol.LanguageServer.Commands.InsertVariableDisplay.InsertVariableDisplayRefactoringProcessor
16+
-------------------------------------------------------------------------------------------------
17+
[
18+
{
19+
"textDocument": { "uri": "file:/test.expected.cbl" },
20+
"position": { "line": 9, "character": 0 }
21+
},
22+
false,
23+
{
24+
"vm": 1, "idx": 0, "ch": [
25+
{
26+
"vm": 0, "name": "VAR-1"
27+
}
28+
]
29+
}
30+
]
31+
-------------------------------------------------------------------------------------------------
32+
refactoring.label=Debug instructions successfully generated.
33+
refactoring.source=
34+
IDENTIFICATION DIVISION.
35+
PROGRAM-ID. TCOEMPTY.
36+
DATA DIVISION.
37+
38+
WORKING-STORAGE SECTION.
39+
40+
01 VAR-1 PIC X.
41+
42+
PROCEDURE DIVISION.
43+
*<DBG>InsertVariableDisplay 1959/09/18 11:09 TESTUSER
44+
D DISPLAY 'VAR-1 <' VAR-1 '>'
45+
*</DBG>
46+
47+
48+
GOBACK
49+
.
50+
END PROGRAM TCOEMPTY.

0 commit comments

Comments
 (0)