func foo() {
let a = 0; let b = 0 }; unresolved

// Test that offsets of diagnostic ranges and fixits get updated correctly after the edit request

// RUN: %sourcekitd-test -req=open %s -- %s == -req=print-diags %s \
// RUN:    == -req=edit -pos=2:1 -replace="_" -length=5 %s == -req=print-diags %s \
// RUN: | %FileCheck %s

// CHECK:      key.line: 2,
// CHECK-NEXT: key.column: 5,
// CHECK:      key.description: "initialization of immutable value 'a'
// CHECK:      key.fixits:
// CHECK-NEXT: {
// CHECK-NEXT:   key.offset: 13,
// CHECK-NEXT:   key.length: 5,
// CHECK-NEXT:   key.sourcetext: "_"
// CHECK-NEXT: }

// CHECK:      key.line: 2,
// CHECK-NEXT: key.column: 16,
// CHECK:      key.description: "initialization of immutable value 'b'
// CHECK:      key.fixits:
// CHECK-NEXT: {
// CHECK-NEXT:   key.offset: 24,
// CHECK-NEXT:   key.length: 5,
// CHECK-NEXT:   key.sourcetext: "_"
// CHECK-NEXT: }

// CHECK:      key.line: 2,
// CHECK-NEXT: key.column: 25,
// CHECK:      key.description: "use of unresolved identifier 'unresolved'",
// CHECK:      key.ranges:
// CHECK-NEXT: {
// CHECK-NEXT:   key.offset: 37,
// CHECK-NEXT:   key.length: 10
// CHECK-NEXT: }

// == After the edit =====

// CHECK:      key.line: 2,
// CHECK-NEXT: key.column: 12,
// CHECK:      key.description: "initialization of immutable value 'b'
// CHECK:      key.fixits:
// CHECK-NEXT: {
// CHECK-NEXT:   key.offset: 20,
// CHECK-NEXT:   key.length: 5,
// CHECK-NEXT:   key.sourcetext: "_"
// CHECK-NEXT: }

// CHECK:      key.line: 2,
// CHECK-NEXT: key.column: 21,
// CHECK:      key.description: "use of unresolved identifier 'unresolved'",
// CHECK:      key.ranges:
// CHECK-NEXT: {
// CHECK-NEXT:   key.offset: 33,
// CHECK-NEXT:   key.length: 10
// CHECK-NEXT: }
