@@ -23,7 +23,7 @@ fileprivate func emitDiagnosticParts(
23
23
position: AbsolutePosition ,
24
24
offset: Int ,
25
25
highlights: [ Syntax ] = [ ] ,
26
- fixItChanges : [ FixIt . Change ] = [ ]
26
+ edits : [ SourceEdit ] = [ ]
27
27
) {
28
28
// Map severity
29
29
let bridgedSeverity = severity. bridged
@@ -52,40 +52,12 @@ fileprivate func emitDiagnosticParts(
52
52
}
53
53
54
54
// 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
85
57
newText. withBridgedString { bridgedMessage in
86
58
diag. fixItReplace (
87
- start: replaceStartLoc ,
88
- end: replaceEndLoc ,
59
+ start: bridgedSourceLoc ( at : edit . range . lowerBound ) ,
60
+ end: bridgedSourceLoc ( at : edit . range . upperBound ) ,
89
61
replacement: bridgedMessage
90
62
)
91
63
}
@@ -115,6 +87,7 @@ public func emitDiagnostic(
115
87
)
116
88
117
89
// Emit Fix-Its.
90
+ // FIXME: Ths assumes the fixIt is on the same tree/buffer, which is not guaranteed.
118
91
for fixIt in diagnostic. fixIts {
119
92
emitDiagnosticParts (
120
93
diagnosticEngine: diagnosticEngine,
@@ -123,11 +96,12 @@ public func emitDiagnostic(
123
96
severity: . note,
124
97
position: diagnostic. position,
125
98
offset: sourceFileBufferOffset,
126
- fixItChanges : fixIt. changes
99
+ edits : fixIt. edits
127
100
)
128
101
}
129
102
130
103
// Emit any notes as follow-ons.
104
+ // FIXME: Ths assumes the node is on the same tree/buffer, which is not guaranteed.
131
105
for note in diagnostic. notes {
132
106
emitDiagnosticParts (
133
107
diagnosticEngine: diagnosticEngine,
0 commit comments