@@ -23,7 +23,7 @@ fileprivate func emitDiagnosticParts(
2323 position: AbsolutePosition ,
2424 offset: Int ,
2525 highlights: [ Syntax ] = [ ] ,
26- fixItChanges : [ FixIt . Change ] = [ ]
26+ edits : [ SourceEdit ] = [ ]
2727) {
2828 // Map severity
2929 let bridgedSeverity = severity. bridged
@@ -52,40 +52,12 @@ fileprivate func emitDiagnosticParts(
5252 }
5353
5454 // Emit changes for a Fix-It.
55- for change in fixItChanges {
56- let replaceStartLoc : BridgedSourceLoc
57- let replaceEndLoc : BridgedSourceLoc
58- var newText : String
59-
60- switch change {
61- case . replace( let oldNode, let newNode) :
62- replaceStartLoc = bridgedSourceLoc ( at: oldNode. position)
63- replaceEndLoc = bridgedSourceLoc ( at: oldNode. endPosition)
64- newText = newNode. description
65-
66- case . replaceLeadingTrivia( let oldToken, let newTrivia) :
67- replaceStartLoc = bridgedSourceLoc ( at: oldToken. position)
68- replaceEndLoc = bridgedSourceLoc (
69- at: oldToken. positionAfterSkippingLeadingTrivia
70- )
71- newText = newTrivia. description
72-
73- case . replaceTrailingTrivia( let oldToken, let newTrivia) :
74- replaceStartLoc = bridgedSourceLoc ( at: oldToken. endPositionBeforeTrailingTrivia)
75- replaceEndLoc = bridgedSourceLoc ( at: oldToken. endPosition)
76- newText = newTrivia. description
77-
78- case . replaceChild( let replacingChildData) :
79- let replacementRange = replacingChildData. replacementRange
80- replaceStartLoc = bridgedSourceLoc ( at: replacementRange. lowerBound)
81- replaceEndLoc = bridgedSourceLoc ( at: replacementRange. upperBound)
82- newText = replacingChildData. newChild. description
83- }
84-
55+ for edit in edits {
56+ var newText : String = edit. replacement
8557 newText. withBridgedString { bridgedMessage in
8658 diag. fixItReplace (
87- start: replaceStartLoc ,
88- end: replaceEndLoc ,
59+ start: bridgedSourceLoc ( at : edit . range . lowerBound ) ,
60+ end: bridgedSourceLoc ( at : edit . range . upperBound ) ,
8961 replacement: bridgedMessage
9062 )
9163 }
@@ -115,6 +87,7 @@ public func emitDiagnostic(
11587 )
11688
11789 // Emit Fix-Its.
90+ // FIXME: Ths assumes the fixIt is on the same tree/buffer, which is not guaranteed.
11891 for fixIt in diagnostic. fixIts {
11992 emitDiagnosticParts (
12093 diagnosticEngine: diagnosticEngine,
@@ -123,11 +96,12 @@ public func emitDiagnostic(
12396 severity: . note,
12497 position: diagnostic. position,
12598 offset: sourceFileBufferOffset,
126- fixItChanges : fixIt. changes
99+ edits : fixIt. edits
127100 )
128101 }
129102
130103 // Emit any notes as follow-ons.
104+ // FIXME: Ths assumes the node is on the same tree/buffer, which is not guaranteed.
131105 for note in diagnostic. notes {
132106 emitDiagnosticParts (
133107 diagnosticEngine: diagnosticEngine,
0 commit comments