Skip to content

Commit 7b633eb

Browse files
authored
Merge pull request #155 from tgodzik/updateForking
Update fork to most recent changes
2 parents ef4ea5a + 2b48ccf commit 7b633eb

33 files changed

+315
-238
lines changed

backend/src/main/scala/bloop/io/ParallelOps.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import java.nio.file.attribute.BasicFileAttributes
1010
import java.util.concurrent.ConcurrentHashMap
1111

1212
import scala.concurrent.Promise
13+
import scala.util.control.NonFatal
1314

15+
import bloop.logging.Logger
1416
import bloop.task.Task
1517

1618
import monix.eval.{Task => MonixTask}
@@ -22,8 +24,6 @@ import monix.execution.cancelables.CompositeCancelable
2224
import monix.reactive.Consumer
2325
import monix.reactive.MulticastStrategy
2426
import monix.reactive.Observable
25-
import bloop.logging.Logger
26-
import scala.util.control.NonFatal
2727

2828
object ParallelOps {
2929

backend/src/main/scala/bloop/task/Task.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ sealed trait Task[+A] { self =>
5454
}
5555

5656
final def doOnCancel(f: => Task[Unit]): Task[A] =
57-
applyCancel(() => f.runAsync(monix.execution.Scheduler.Implicits.global))
57+
applyCancel { () => f.runAsync(monix.execution.Scheduler.Implicits.global); () }
5858

5959
final def doOnFinish(f: Option[Throwable] => Task[Unit]): Task[A] =
6060
self.materialize.flatMap { v =>

backend/src/main/scala/bloop/tracing/BraveTracer.scala

+96-14
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,100 @@ import brave.propagation.TraceContextOrSamplingFlags
1414
import zipkin2.codec.SpanBytesEncoder.JSON_V1
1515
import zipkin2.codec.SpanBytesEncoder.JSON_V2
1616

17-
final class BraveTracer private (
17+
sealed trait BraveTracer {
18+
def startNewChildTracer(name: String, tags: (String, String)*): BraveTracer
19+
20+
def trace[T](name: String, tags: (String, String)*)(
21+
thunk: BraveTracer => T
22+
): T
23+
24+
def traceVerbose[T](name: String, tags: (String, String)*)(
25+
thunk: BraveTracer => T
26+
): T
27+
28+
def traceTask[T](name: String, tags: (String, String)*)(
29+
thunk: BraveTracer => Task[T]
30+
): Task[T]
31+
32+
def traceTaskVerbose[T](name: String, tags: (String, String)*)(
33+
thunk: BraveTracer => Task[T]
34+
): Task[T]
35+
36+
def terminate(): Unit
37+
38+
def currentSpan: Option[Span]
39+
40+
def toIndependentTracer(
41+
name: String,
42+
traceProperties: TraceProperties,
43+
tags: (String, String)*
44+
): BraveTracer
45+
46+
}
47+
48+
object NoopTracer extends BraveTracer {
49+
50+
override def startNewChildTracer(name: String, tags: (String, String)*): BraveTracer = this
51+
52+
override def trace[T](name: String, tags: (String, String)*)(thunk: BraveTracer => T): T = thunk(
53+
this
54+
)
55+
56+
override def traceVerbose[T](name: String, tags: (String, String)*)(thunk: BraveTracer => T): T =
57+
thunk(this)
58+
59+
override def traceTask[T](name: String, tags: (String, String)*)(
60+
thunk: BraveTracer => Task[T]
61+
): Task[T] = thunk(this)
62+
63+
override def traceTaskVerbose[T](name: String, tags: (String, String)*)(
64+
thunk: BraveTracer => Task[T]
65+
): Task[T] = thunk(this)
66+
67+
override def terminate(): Unit = ()
68+
69+
override def currentSpan: Option[Span] = None
70+
71+
def toIndependentTracer(
72+
name: String,
73+
traceProperties: TraceProperties,
74+
tags: (String, String)*
75+
): BraveTracer = this
76+
77+
}
78+
79+
object BraveTracer {
80+
81+
def apply(name: String, properties: TraceProperties, tags: (String, String)*): BraveTracer = {
82+
BraveTracer(name, properties, None, tags: _*)
83+
}
84+
85+
def apply(
86+
name: String,
87+
properties: TraceProperties,
88+
ctx: Option[TraceContext],
89+
tags: (String, String)*
90+
): BraveTracer = {
91+
if (properties.enabled) {
92+
BraveTracerInternal(name, properties, ctx, tags: _*)
93+
} else {
94+
NoopTracer
95+
}
96+
97+
}
98+
}
99+
100+
final class BraveTracerInternal private (
18101
tracer: Tracer,
19-
val currentSpan: Span,
102+
val _currentSpan: Span,
20103
closeCurrentSpan: () => Unit,
21104
properties: TraceProperties
22-
) {
105+
) extends BraveTracer {
106+
107+
def currentSpan = Some(_currentSpan)
108+
23109
def startNewChildTracer(name: String, tags: (String, String)*): BraveTracer = {
24-
val span = tags.foldLeft(tracer.newChild(currentSpan.context).name(name)) {
110+
val span = tags.foldLeft(tracer.newChild(_currentSpan.context).name(name)) {
25111
case (span, (tagKey, tagValue)) => span.tag(tagKey, tagValue)
26112
}
27113

@@ -32,7 +118,7 @@ final class BraveTracer private (
32118
span.finish()
33119
}
34120

35-
new BraveTracer(tracer, span, closeHandler, properties)
121+
new BraveTracerInternal(tracer, span, closeHandler, properties)
36122
}
37123

38124
def trace[T](name: String, tags: (String, String)*)(
@@ -67,7 +153,7 @@ final class BraveTracer private (
67153
try thunk(newTracer) // Don't catch and report errors in spans
68154
catch {
69155
case NonFatal(t) =>
70-
newTracer.currentSpan.error(t)
156+
newTracer.currentSpan.foreach(_.error(t))
71157
throw t
72158
} finally {
73159
try newTracer.terminate()
@@ -91,7 +177,7 @@ final class BraveTracer private (
91177
case None => Task.eval(newTracer.terminate())
92178
case Some(value) =>
93179
Task.eval {
94-
newTracer.currentSpan.error(value)
180+
newTracer.currentSpan.foreach(_.error(value))
95181
newTracer.terminate()
96182
}
97183
}
@@ -116,10 +202,10 @@ final class BraveTracer private (
116202
traceProperties: TraceProperties,
117203
tags: (String, String)*
118204
): BraveTracer =
119-
BraveTracer(name, traceProperties, Some(currentSpan.context), tags: _*)
205+
BraveTracer(name, traceProperties, Some(_currentSpan.context), tags: _*)
120206
}
121207

122-
object BraveTracer {
208+
object BraveTracerInternal {
123209
import brave._
124210
import zipkin2.reporter.AsyncReporter
125211
import zipkin2.reporter.urlconnection.URLConnectionSender
@@ -134,10 +220,6 @@ object BraveTracer {
134220
reporterCache.computeIfAbsent(url, newReporter)
135221
}
136222

137-
def apply(name: String, properties: TraceProperties, tags: (String, String)*): BraveTracer = {
138-
BraveTracer(name, properties, None, tags: _*)
139-
}
140-
141223
def apply(
142224
name: String,
143225
properties: TraceProperties,
@@ -178,6 +260,6 @@ object BraveTracer {
178260
spanReporter.flush()
179261
}
180262

181-
new BraveTracer(tracer, rootSpan, closeEverything, properties)
263+
new BraveTracerInternal(tracer, rootSpan, closeEverything, properties)
182264
}
183265
}

backend/src/main/scala/bloop/tracing/TraceProperties.scala

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ case class TraceProperties(
88
verbose: Boolean,
99
localServiceName: String,
1010
traceStartAnnotation: Option[String],
11-
traceEndAnnotation: Option[String]
11+
traceEndAnnotation: Option[String],
12+
enabled: Boolean
1213
)
1314

1415
object TraceProperties {
1516
val default: TraceProperties = {
1617
val verbose = Properties.propOrFalse("bloop.tracing.verbose")
18+
val enabled = Properties.propOrFalse("bloop.tracing.enabled")
1719
val debugTracing = Properties.propOrFalse("bloop.tracing.debugTracing")
1820
val localServiceName = Properties.propOrElse("bloop.tracing.localServiceName", "bloop")
1921
val traceStartAnnotation = Properties.propOrNone("bloop.tracing.traceStartAnnotation")
@@ -30,7 +32,8 @@ object TraceProperties {
3032
verbose,
3133
localServiceName,
3234
traceStartAnnotation,
33-
traceEndAnnotation
35+
traceEndAnnotation,
36+
enabled
3437
)
3538
}
3639
}

backend/src/main/scala/sbt/internal/inc/BloopComponentCompiler.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import java.nio.file.Files
1414
import java.nio.file.Path
1515
import java.nio.file.Paths
1616

17+
import scala.util.control.NonFatal
18+
1719
import _root_.bloop.io.AbsolutePath
1820
import _root_.bloop.logging.DebugFilter
1921
import _root_.bloop.logging.{Logger => BloopLogger}
@@ -27,7 +29,6 @@ import xsbti.ComponentProvider
2729
import xsbti.Logger
2830
import xsbti.compile.ClasspathOptionsUtil
2931
import xsbti.compile.CompilerBridgeProvider
30-
import scala.util.control.NonFatal
3132

3233
object BloopComponentCompiler {
3334
import xsbti.compile.ScalaInstance

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import java.nio.file.FileSystems
66
import java.nio.file.Path
77
import java.{util => ju}
88

9+
import scala.collection.JavaConverters._
10+
911
import sbt.internal.inc.Analysis
1012
import sbt.internal.inc.Compilation
1113
import sbt.internal.inc.Incremental
@@ -17,6 +19,9 @@ import sbt.util.InterfaceUtil
1719
import xsbt.api.APIUtil
1820
import xsbt.api.HashAPI
1921
import xsbt.api.NameHashing
22+
import xsbti.Action
23+
import xsbti.DiagnosticCode
24+
import xsbti.DiagnosticRelatedInformation
2025
import xsbti.Position
2126
import xsbti.Problem
2227
import xsbti.Severity
@@ -37,9 +42,6 @@ import xsbti.compile.ClassFileManager
3742
import xsbti.compile.IncOptions
3843
import xsbti.compile.Output
3944
import xsbti.compile.analysis.ReadStamps
40-
import xsbti.{Action, DiagnosticCode, DiagnosticRelatedInformation}
41-
42-
import collection.JavaConverters._
4345

4446
trait IBloopAnalysisCallback extends xsbti.AnalysisCallback2 {
4547
def get: Analysis

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import java.io.File
44
import java.nio.file.Path
55
import java.{util => ju}
66

7+
import scala.collection.JavaConverters._
8+
79
import sbt.internal.inc.Analysis
810
import sbt.internal.inc.Compilation
911
import sbt.internal.inc.Incremental
@@ -15,6 +17,9 @@ import sbt.util.InterfaceUtil
1517
import xsbt.api.APIUtil
1618
import xsbt.api.HashAPI
1719
import xsbt.api.NameHashing
20+
import xsbti.Action
21+
import xsbti.DiagnosticCode
22+
import xsbti.DiagnosticRelatedInformation
1823
import xsbti.Position
1924
import xsbti.Problem
2025
import xsbti.Severity
@@ -35,9 +40,6 @@ import xsbti.compile.ClassFileManager
3540
import xsbti.compile.IncOptions
3641
import xsbti.compile.Output
3742
import xsbti.compile.analysis.ReadStamps
38-
import xsbti.{Action, DiagnosticCode, DiagnosticRelatedInformation}
39-
40-
import collection.JavaConverters._
4143

4244
/**
4345
* This class provides a thread-safe implementation of `xsbti.AnalysisCallback` which is required to compile with the

bloop-rifle/src/bloop/rifle/BloopRifleLogger.scala

+8-8
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ trait BloopRifleLogger { self =>
3737
object BloopRifleLogger {
3838
def nop: BloopRifleLogger =
3939
new BloopRifleLogger {
40-
def info(msg: => String) = {}
41-
def debug(msg: => String, ex: Throwable) = {}
42-
def error(msg: => String, ex: Throwable) = {}
43-
def error(msg: => String) = {}
44-
def bloopBspStdout = None
45-
def bloopBspStderr = None
46-
def bloopCliInheritStdout = false
47-
def bloopCliInheritStderr = false
40+
def info(msg: => String) = {}
41+
def debug(msg: => String, ex: Throwable) = {}
42+
def error(msg: => String, ex: Throwable) = {}
43+
def error(msg: => String) = {}
44+
def bloopBspStdout: Option[java.io.OutputStream] = None
45+
def bloopBspStderr: Option[java.io.OutputStream] = None
46+
def bloopCliInheritStdout = false
47+
def bloopCliInheritStderr = false
4848
}
4949
}

build.sc

+8-8
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@ import java.io.File
1515

1616
object Dependencies {
1717
def scala212 = "2.12.18"
18-
def scala213 = "2.13.11"
18+
def scala213 = "2.13.12"
1919

2020
def scalaVersions = Seq(scala212, scala213)
2121

2222
def asmVersion = "9.5"
2323
def coursierVersion = "2.1.0-M6-53-gb4f448130"
2424
def graalvmVersion = "22.2.0"
2525
def jsoniterVersion = "2.13.3.2"
26-
def scalaJs1Version = "1.13.2"
26+
def scalaJs1Version = "1.14.0"
2727
def scalaJsEnvsVersion = "1.1.1"
2828

2929
def asm = ivy"org.ow2.asm:asm:$asmVersion"
3030
def asmUtil = ivy"org.ow2.asm:asm-util:$asmVersion"
3131
def bloopConfig = ivy"ch.epfl.scala::bloop-config:1.5.5"
3232
def brave = ivy"io.zipkin.brave:brave:5.16.0"
3333
def bsp4j = ivy"ch.epfl.scala:bsp4j:2.1.0-M6"
34-
def bsp4s = ivy"ch.epfl.scala::bsp4s:2.1.0-M5"
34+
def bsp4s = ivy"ch.epfl.scala::bsp4s:2.1.0-M6"
3535
def caseApp = ivy"com.github.alexarchambault::case-app:2.0.6"
3636
def caseApp21 = ivy"com.github.alexarchambault::case-app:2.1.0-M15"
3737
def collectionCompat = ivy"org.scala-lang.modules::scala-collection-compat:2.9.0"
@@ -48,7 +48,7 @@ object Dependencies {
4848
ivy"com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-macros:$jsoniterVersion"
4949
def junit = ivy"com.github.sbt:junit-interface:0.13.3"
5050
def libdaemonjvm = ivy"io.github.alexarchambault.libdaemon::libdaemon:0.0.11"
51-
def libraryManagement = ivy"org.scala-sbt::librarymanagement-ivy:1.9.2"
51+
def libraryManagement = ivy"org.scala-sbt::librarymanagement-ivy:1.9.3"
5252
def log4j = ivy"org.apache.logging.log4j:log4j-core:2.20.0"
5353
def logback = ivy"ch.qos.logback:logback-classic:1.4.6"
5454
def macroParadise = ivy"org.scalamacros:::paradise:2.1.1"
@@ -57,7 +57,7 @@ object Dependencies {
5757
def nailgun = ivy"io.github.alexarchambault.bleep:nailgun-server:1.0.7"
5858
def osLib = ivy"com.lihaoyi::os-lib:0.9.0"
5959
def pprint = ivy"com.lihaoyi::pprint:0.8.1"
60-
def sbtTestAgent = ivy"org.scala-sbt:test-agent:1.9.4"
60+
def sbtTestAgent = ivy"org.scala-sbt:test-agent:1.9.6"
6161
def sbtTestInterface = ivy"org.scala-sbt:test-interface:1.0"
6262
def scalaDebugAdapter = ivy"ch.epfl.scala::scala-debug-adapter:3.1.4"
6363
def scalaJsLinker1 = ivy"org.scala-js::scalajs-linker:$scalaJs1Version"
@@ -66,14 +66,14 @@ object Dependencies {
6666
def scalaJsEnvJsdomNode1 = ivy"org.scala-js::scalajs-env-jsdom-nodejs:1.1.0"
6767
def scalaJsSbtTestAdapter1 = ivy"org.scala-js::scalajs-sbt-test-adapter:$scalaJs1Version"
6868
def scalaJsLogging1 = ivy"org.scala-js::scalajs-logging:1.1.1"
69-
def scalaNativeTools04 = ivy"org.scala-native::tools:0.4.14"
69+
def scalaNativeTools04 = ivy"org.scala-native::tools:0.4.15"
7070
def scalazCore = ivy"org.scalaz::scalaz-core:7.3.7"
7171
def snailgun = ivy"io.github.alexarchambault.scala-cli.snailgun::snailgun-core:0.4.1-sc2"
72-
def sourcecode = ivy"com.lihaoyi::sourcecode:0.3.0"
72+
def sourcecode = ivy"com.lihaoyi::sourcecode:0.3.1"
7373
def svm = ivy"org.graalvm.nativeimage:svm:$graalvmVersion"
7474
def utest = ivy"com.lihaoyi::utest:0.8.1"
7575
def xxHashLibrary = ivy"net.jpountz.lz4:lz4:1.3.0"
76-
def zinc = ivy"org.scala-sbt::zinc:1.9.3"
76+
def zinc = ivy"org.scala-sbt::zinc:1.9.5"
7777
def zipkinSender = ivy"io.zipkin.reporter2:zipkin-sender-urlconnection:2.16.4"
7878
def zt = ivy"org.zeroturnaround:zt-zip:1.16"
7979

cli/src/bloop/cli/Bloop.scala

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package bloop.cli
22

33
import caseapp.core.app.CommandsEntryPoint
4+
import caseapp.core.app.Command
45

56
object Bloop extends CommandsEntryPoint {
6-
def progName = "bloop"
7-
def commands = Seq(
7+
def progName: String = "bloop"
8+
def commands: Seq[Command[_]] = Seq(
89
Exit,
910
Output,
1011
Start,
1112
Status
1213
)
13-
override def defaultCommand = Some(Default)
14+
override def defaultCommand: Option[Command[_]] = Some(Default)
1415
}

0 commit comments

Comments
 (0)