Skip to content

Commit 62c8e31

Browse files
committed
Add support for diff3 format
1 parent 698ebe3 commit 62c8e31

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

compiler/rustc_parse/src/parser/diagnostics.rs

+7
Original file line numberDiff line numberDiff line change
@@ -2579,12 +2579,16 @@ impl<'a> Parser<'a> {
25792579
};
25802580
let mut spans = Vec::with_capacity(3);
25812581
spans.push(start);
2582+
let mut middlediff3 = None;
25822583
let mut middle = None;
25832584
let mut end = None;
25842585
loop {
25852586
if self.token.kind == TokenKind::Eof {
25862587
break;
25872588
}
2589+
if let Some(span) = self.diff_marker(&TokenKind::OrOr, &TokenKind::BinOp(token::Or)) {
2590+
middlediff3 = Some(span);
2591+
}
25882592
if let Some(span) = self.diff_marker(&TokenKind::EqEq, &TokenKind::Eq) {
25892593
middle = Some(span);
25902594
}
@@ -2597,6 +2601,9 @@ impl<'a> Parser<'a> {
25972601
}
25982602
let mut err = self.struct_span_err(spans, "encountered diff marker");
25992603
err.span_label(start, "after this is the code before the merge");
2604+
if let Some(middle) = middlediff3 {
2605+
err.span_label(middle, "");
2606+
}
26002607
if let Some(middle) = middle {
26012608
err.span_label(middle, "");
26022609
}

src/test/ui/parser/diff-markers/enum-2.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ enum E {
22
Foo {
33
<<<<<<< HEAD //~ ERROR encountered diff marker
44
x: u8,
5+
|||||||
6+
z: (),
57
=======
6-
x: i8,
8+
y: i8,
79
>>>>>>> branch
810
}
911
}

src/test/ui/parser/diff-markers/enum-2.stderr

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ error: encountered diff marker
44
LL | <<<<<<< HEAD
55
| ^^^^^^^ after this is the code before the merge
66
LL | x: u8,
7+
LL | |||||||
8+
| -------
9+
LL | z: (),
710
LL | =======
811
| -------
9-
LL | x: i8,
12+
LL | y: i8,
1013
LL | >>>>>>> branch
1114
| ^^^^^^^ above this are the incoming code changes
1215
|

0 commit comments

Comments
 (0)