diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2022-12-28 20:55:46 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2022-12-28 20:55:46 -0800 |
| commit | 62c8e3144a8bc7d07d66bc14c8a7cce94a3dbce5 (patch) | |
| tree | 914482177fbb020d0ee5978812fd8bfd0c83a22c | |
| parent | 698ebe357f3323a953d0751d5764966b3ffb3cb7 (diff) | |
| download | rust-62c8e3144a8bc7d07d66bc14c8a7cce94a3dbce5.tar.gz rust-62c8e3144a8bc7d07d66bc14c8a7cce94a3dbce5.zip | |
Add support for diff3 format
| -rw-r--r-- | compiler/rustc_parse/src/parser/diagnostics.rs | 7 | ||||
| -rw-r--r-- | src/test/ui/parser/diff-markers/enum-2.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/parser/diff-markers/enum-2.stderr | 5 |
3 files changed, 14 insertions, 2 deletions
diff --git a/compiler/rustc_parse/src/parser/diagnostics.rs b/compiler/rustc_parse/src/parser/diagnostics.rs index dd7341af4d5..7ab924bd39d 100644 --- a/compiler/rustc_parse/src/parser/diagnostics.rs +++ b/compiler/rustc_parse/src/parser/diagnostics.rs @@ -2579,12 +2579,16 @@ impl<'a> Parser<'a> { }; let mut spans = Vec::with_capacity(3); spans.push(start); + let mut middlediff3 = None; let mut middle = None; let mut end = None; loop { if self.token.kind == TokenKind::Eof { break; } + if let Some(span) = self.diff_marker(&TokenKind::OrOr, &TokenKind::BinOp(token::Or)) { + middlediff3 = Some(span); + } if let Some(span) = self.diff_marker(&TokenKind::EqEq, &TokenKind::Eq) { middle = Some(span); } @@ -2597,6 +2601,9 @@ impl<'a> Parser<'a> { } let mut err = self.struct_span_err(spans, "encountered diff marker"); err.span_label(start, "after this is the code before the merge"); + if let Some(middle) = middlediff3 { + err.span_label(middle, ""); + } if let Some(middle) = middle { err.span_label(middle, ""); } diff --git a/src/test/ui/parser/diff-markers/enum-2.rs b/src/test/ui/parser/diff-markers/enum-2.rs index d8c527281de..76ea980fc62 100644 --- a/src/test/ui/parser/diff-markers/enum-2.rs +++ b/src/test/ui/parser/diff-markers/enum-2.rs @@ -2,8 +2,10 @@ enum E { Foo { <<<<<<< HEAD //~ ERROR encountered diff marker x: u8, +||||||| + z: (), ======= - x: i8, + y: i8, >>>>>>> branch } } diff --git a/src/test/ui/parser/diff-markers/enum-2.stderr b/src/test/ui/parser/diff-markers/enum-2.stderr index 4e612a5427a..63da5c2a6e1 100644 --- a/src/test/ui/parser/diff-markers/enum-2.stderr +++ b/src/test/ui/parser/diff-markers/enum-2.stderr @@ -4,9 +4,12 @@ error: encountered diff marker LL | <<<<<<< HEAD | ^^^^^^^ after this is the code before the merge LL | x: u8, +LL | ||||||| + | ------- +LL | z: (), LL | ======= | ------- -LL | x: i8, +LL | y: i8, LL | >>>>>>> branch | ^^^^^^^ above this are the incoming code changes | |
