@@ -29,15 +29,22 @@ TEST_F(ErrorDisplayTest, RenderStatus) {
29
29
{
30
30
// Test that diagnostics on the same column can be handled and all
31
31
// three errors are diagnosed.
32
- SourceLocation loc1 = {FileSpec{" a.c" }, 13 , 11 , 0 , false , true };
33
- SourceLocation loc2 = {FileSpec{" a.c" }, 13 , 13 , 0 , false , true };
32
+ SourceLocation loc1 = {FileSpec{" a.c" }, 13 , 5 , 0 , false , true };
33
+ SourceLocation loc2 = {FileSpec{" a.c" }, 13 , 7 , 0 , false , true };
34
+ SourceLocation loc3 = {FileSpec{" a.c" }, 13 , 9 , 0 , false , true };
34
35
std::string result =
35
36
Render ({DiagnosticDetail{loc1, eSeverityError, " 1" , " 1" },
36
- DiagnosticDetail{loc1, eSeverityError, " 2" , " 2" },
37
- DiagnosticDetail{loc2, eSeverityError, " 3" , " 3" }});
38
- ASSERT_TRUE (StringRef (result).contains (" error: 1" ));
39
- ASSERT_TRUE (StringRef (result).contains (" error: 2" ));
40
- ASSERT_TRUE (StringRef (result).contains (" error: 3" ));
37
+ DiagnosticDetail{loc2, eSeverityError, " 2a" , " 2a" },
38
+ DiagnosticDetail{loc2, eSeverityInfo, " 2b" , " 2b" },
39
+ DiagnosticDetail{loc3, eSeverityError, " 3" , " 3" }});
40
+ llvm::SmallVector<StringRef> lines;
41
+ StringRef (result).split (lines, ' \n ' );
42
+ // 1234567890123
43
+ ASSERT_EQ (lines[0 ], " ^ ^ ^" );
44
+ ASSERT_EQ (lines[1 ], " | | error: 3" );
45
+ ASSERT_EQ (lines[2 ], " | error: 2a" );
46
+ ASSERT_EQ (lines[3 ], " | note: 2b" );
47
+ ASSERT_EQ (lines[4 ], " error: 1" );
41
48
}
42
49
{
43
50
// Test that diagnostics in reverse order are emitted correctly.
@@ -68,15 +75,25 @@ TEST_F(ErrorDisplayTest, RenderStatus) {
68
75
std::string result =
69
76
Render ({DiagnosticDetail{loc1, eSeverityError, " X" , " X" },
70
77
DiagnosticDetail{loc2, eSeverityError, " Y" , " Y" }});
71
- auto lines = StringRef (result).split (' \n ' );
72
- auto line1 = lines.first ;
73
- lines = lines.second .split (' \n ' );
74
- auto line2 = lines.first ;
75
- lines = lines.second .split (' \n ' );
76
- auto line3 = lines.first ;
77
- // 1234567
78
- ASSERT_EQ (line1, " ^~~ ^~~" );
79
- ASSERT_EQ (line2, " | error: Y" );
80
- ASSERT_EQ (line3, " error: X" );
78
+ llvm::SmallVector<StringRef> lines;
79
+ StringRef (result).split (lines, ' \n ' );
80
+ // 1234567
81
+ ASSERT_EQ (lines[0 ], " ^~~ ^~~" );
82
+ ASSERT_EQ (lines[1 ], " | error: Y" );
83
+ ASSERT_EQ (lines[2 ], " error: X" );
84
+ }
85
+ {
86
+ // Test diagnostics on the same line are emitted correctly.
87
+ SourceLocation loc1 = {FileSpec{" a.c" }, 1 , 2 , 0 , false , true };
88
+ SourceLocation loc2 = {FileSpec{" a.c" }, 1 , 6 , 0 , false , true };
89
+ std::string result =
90
+ Render ({DiagnosticDetail{loc1, eSeverityError, " X" , " X" },
91
+ DiagnosticDetail{loc2, eSeverityError, " Y" , " Y" }});
92
+ llvm::SmallVector<StringRef> lines;
93
+ StringRef (result).split (lines, ' \n ' );
94
+ // 1234567
95
+ ASSERT_EQ (lines[0 ], " ^ ^" );
96
+ ASSERT_EQ (lines[1 ], " | error: Y" );
97
+ ASSERT_EQ (lines[2 ], " error: X" );
81
98
}
82
99
}
0 commit comments