Skip to content

Commit 0e63626

Browse files
committed
bugfix: Switch to AnalysisCallback2
1 parent 60bd3f9 commit 0e63626

File tree

2 files changed

+73
-7
lines changed

2 files changed

+73
-7
lines changed

backend/src/main/scala/sbt/internal/inc/bloop/internal/BloopAnalysisCallback.scala

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,11 @@ import xsbti.compile.ClassFileManager
3737
import xsbti.compile.IncOptions
3838
import xsbti.compile.Output
3939
import xsbti.compile.analysis.ReadStamps
40+
import xsbti.{Action, DiagnosticCode, DiagnosticRelatedInformation}
4041

41-
trait IBloopAnalysisCallback extends xsbti.AnalysisCallback {
42+
import collection.JavaConverters._
43+
44+
trait IBloopAnalysisCallback extends xsbti.AnalysisCallback2 {
4245
def get: Analysis
4346
}
4447

@@ -118,21 +121,46 @@ final class BloopAnalysisCallback(
118121
startSource(converter.toVirtualFile(source.toPath()))
119122
}
120123

121-
def problem(
124+
def problem2(
122125
category: String,
123126
pos: Position,
124127
msg: String,
125128
severity: Severity,
126-
reported: Boolean
129+
reported: Boolean,
130+
rendered: ju.Optional[String],
131+
diagnosticCode: ju.Optional[DiagnosticCode],
132+
diagnosticRelatedInformation: ju.List[DiagnosticRelatedInformation],
133+
actions: ju.List[Action]
127134
): Unit = {
128135
for (source <- InterfaceUtil.jo2o(pos.sourceFile)) {
129136
val map = if (reported) reportedProblems else unreportedProblems
130137
map
131138
.getOrElseUpdate(source.toPath(), new mutable.ListBuffer())
132-
.+=(InterfaceUtil.problem(category, pos, msg, severity, None, None, Nil))
139+
.+=(
140+
InterfaceUtil.problem(
141+
category,
142+
pos,
143+
msg,
144+
severity,
145+
None,
146+
InterfaceUtil.toOption(diagnosticCode),
147+
diagnosticRelatedInformation.asScala.toList,
148+
actions.asScala.toList
149+
)
150+
)
133151
}
134152
}
135153

154+
def problem(
155+
category: String,
156+
pos: Position,
157+
msg: String,
158+
severity: Severity,
159+
reported: Boolean
160+
): Unit = {
161+
problem(category, pos, msg, severity, reported)
162+
}
163+
136164
def classDependency(
137165
onClassName: String,
138166
sourceClassName: String,

backend/src/main/scala/sbt/internal/inc/bloop/internal/ConcurrentAnalysisCallback.scala

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ import xsbti.compile.ClassFileManager
3535
import xsbti.compile.IncOptions
3636
import xsbti.compile.Output
3737
import xsbti.compile.analysis.ReadStamps
38+
import xsbti.{Action, DiagnosticCode, DiagnosticRelatedInformation}
39+
40+
import collection.JavaConverters._
3841

3942
/**
4043
* This class provides a thread-safe implementation of `xsbti.AnalysisCallback` which is required to compile with the
@@ -123,21 +126,56 @@ final class ConcurrentAnalysisCallback(
123126
startSource(converter.toVirtualFile(source.toPath()))
124127
}
125128

126-
def problem(
129+
def problem2(
127130
category: String,
128131
pos: Position,
129132
msg: String,
130133
severity: Severity,
131-
reported: Boolean
134+
reported: Boolean,
135+
rendered: ju.Optional[String],
136+
diagnosticCode: ju.Optional[DiagnosticCode],
137+
diagnosticRelatedInformation: ju.List[DiagnosticRelatedInformation],
138+
actions: ju.List[Action]
132139
): Unit = {
133140
for (source <- InterfaceUtil.jo2o(pos.sourceFile)) {
134141
val map = if (reported) reportedProblems else unreportedProblems
135142
map
136143
.getOrElseUpdate(source.toPath(), new ConcurrentLinkedQueue)
137-
.add(InterfaceUtil.problem(category, pos, msg, severity, None, None, Nil))
144+
.add(
145+
InterfaceUtil.problem(
146+
category,
147+
pos,
148+
msg,
149+
severity,
150+
None,
151+
InterfaceUtil.toOption(diagnosticCode),
152+
diagnosticRelatedInformation.asScala.toList,
153+
actions.asScala.toList
154+
)
155+
)
138156
}
139157
}
140158

159+
def problem(
160+
category: String,
161+
pos: Position,
162+
msg: String,
163+
severity: Severity,
164+
reported: Boolean
165+
): Unit = {
166+
problem2(
167+
category,
168+
pos,
169+
msg,
170+
severity,
171+
reported,
172+
rendered = ju.Optional.empty(),
173+
diagnosticCode = ju.Optional.empty(),
174+
diagnosticRelatedInformation = Nil.asJava,
175+
actions = Nil.asJava
176+
)
177+
}
178+
141179
def classDependency(
142180
onClassName: String,
143181
sourceClassName: String,

0 commit comments

Comments
 (0)