Skip to content

Commit 742f928

Browse files
author
Martijn Hoekstra
committed
provide Resource for all closables
1 parent a7af40c commit 742f928

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

compat/src/main/scala-2.11_2.12/scala/util/compat/Using.scala

+6-4
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ object Using {
139139

140140
@inline def safeAddSuppressed(t: Throwable, suppressed: Throwable): Unit = {
141141
// don't `addSuppressed` to something which is a `ControlThrowable`
142-
if (!t.isInstanceOf[ControlThrowable]) t.addSuppressed(suppressed)
142+
// nor to scalaJS
143+
if (!t.isInstanceOf[ControlThrowable] && (1.0.toString == "1.0")) t.addSuppressed(suppressed)
143144
}
144145

145146
var primary: Throwable = null
@@ -281,9 +282,10 @@ object Using {
281282
}
282283

283284
object Resource {
284-
/** An implicit `Resource` for [[java.lang.AutoCloseable `AutoCloseable`s]]. */
285-
implicit val autoCloseableResource: Resource[AutoCloseable] = new Resource[AutoCloseable] {
286-
def release(resource: AutoCloseable) = resource.close()
285+
import java.io.Closeable
286+
/** An implicit `Resource` for [[java.lang.Closeable `Closeable`s]]. */
287+
implicit val closeableResource: Resource[Closeable] = new Resource[Closeable] {
288+
def release(resource: Closeable) = resource.close()
287289
}
288290
}
289291

compat/src/test/scala/test/scala/util/UsingTest.scala

+5-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.junit.Assert._
77

88
import scala.reflect.ClassTag
99
import scala.util.control.ControlThrowable
10+
import java.io.Closeable
1011

1112
@RunWith(classOf[JUnit4])
1213
class UsingTest {
@@ -380,19 +381,19 @@ class UsingTest {
380381

381382
@Test
382383
def usingDisallowsNull(): Unit = {
383-
val npe = catchThrowable(Using.resource(null: AutoCloseable)(_ => "test"))
384+
val npe = catchThrowable(Using.resource(null: Closeable)(_ => "test"))
384385
assertThrowableClass[NullPointerException](npe)
385386
}
386387

387388
@Test
388389
def safeUsingDisallowsNull(): Unit = {
389-
val npe = Using(null: AutoCloseable)(_ => "test").failed.get
390+
val npe = Using(null: Closeable)(_ => "test").failed.get
390391
assertThrowableClass[NullPointerException](npe)
391392
}
392393

393394
@Test
394395
def safeUsingCatchesOpeningException(): Unit = {
395-
val ex = Using({ throw new RuntimeException }: AutoCloseable)(_ => "test").failed.get
396+
val ex = Using({ throw new RuntimeException }: Closeable)(_ => "test").failed.get
396397
assertThrowableClass[RuntimeException](ex)
397398
}
398399
}
@@ -405,7 +406,7 @@ object UsingTest {
405406
final class ClosingMarker(message: String) extends Throwable(message) with ControlThrowable
406407
final class UsingMarker(message: String) extends Throwable(message) with ControlThrowable
407408

408-
abstract class BaseResource extends AutoCloseable {
409+
abstract class BaseResource extends Closeable {
409410
final def identity[A](a: A): A = a
410411
}
411412

0 commit comments

Comments
 (0)