Skip to content

Commit 840804f

Browse files
authored
do not expose flexible types (#24292)
Do not infer public flexible type in the stdlib. This is the only remaining exposed flexible type in the library: ```scala [warn] -- Warning: /Users/hamzaremmal/Desktop/scala/scala3/library/src/scala/util/control/NoStackTrace.scala:27:42 [warn] 27 | if (NoStackTrace.noSuppression) super.fillInStackTrace() [warn] | ^ [warn] |method scala$util$control$NoStackTrace$$super$fillInStackTrace exposes a flexible type in its inferred result type (Throwable)?. Consider annotating the type explicitly ```
2 parents 66b14d3 + 73afc2c commit 840804f

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

library/src/scala/collection/convert/JavaCollectionWrappers.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ private[collection] object JavaCollectionWrappers extends Serializable {
279279
new ju.Map.Entry[K, V] {
280280
def getKey = k
281281
def getValue = v
282-
def setValue(v1 : V) = self.put(k, v1)
282+
def setValue(v1 : V): V = self.put(k, v1)
283283

284284
// It's important that this implementation conform to the contract
285285
// specified in the javadocs of java.util.Map.Entry.hashCode
@@ -421,7 +421,7 @@ private[collection] object JavaCollectionWrappers extends Serializable {
421421
}
422422

423423
def iterator: Iterator[(K, V)] = new AbstractIterator[(K, V)] {
424-
val ui = underlying.entrySet.iterator
424+
val ui: java.util.Iterator[java.util.Map.Entry[K, V]] = underlying.entrySet.iterator
425425
def hasNext = ui.hasNext
426426
def next() = { val e = ui.next(); (e.getKey, e.getValue) }
427427
}
@@ -610,7 +610,7 @@ private[collection] object JavaCollectionWrappers extends Serializable {
610610
}
611611

612612
def iterator: Iterator[(String, String)] = new AbstractIterator[(String, String)] {
613-
val ui = underlying.entrySet.iterator
613+
val ui: java.util.Iterator[java.util.Map.Entry[Object, Object]] = underlying.entrySet.iterator
614614
def hasNext = ui.hasNext
615615
def next() = {
616616
val e = ui.next()

library/src/scala/concurrent/impl/ExecutionContextImpl.scala

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,17 +123,17 @@ private[concurrent] object ExecutionContextImpl {
123123
new ExecutionContextImpl(some, reporter) with ExecutionContextExecutorService {
124124
private final def asExecutorService: ExecutorService = executor.asInstanceOf[ExecutorService]
125125
final override def shutdown() = asExecutorService.shutdown()
126-
final override def shutdownNow() = asExecutorService.shutdownNow()
126+
final override def shutdownNow(): java.util.List[Runnable] = asExecutorService.shutdownNow()
127127
final override def isShutdown = asExecutorService.isShutdown
128128
final override def isTerminated = asExecutorService.isTerminated
129129
final override def awaitTermination(l: Long, timeUnit: TimeUnit) = asExecutorService.awaitTermination(l, timeUnit)
130-
final override def submit[T](callable: Callable[T]) = asExecutorService.submit(callable)
131-
final override def submit[T](runnable: Runnable, t: T) = asExecutorService.submit(runnable, t)
132-
final override def submit(runnable: Runnable) = asExecutorService.submit(runnable)
133-
final override def invokeAll[T](callables: Collection[? <: Callable[T]]) = asExecutorService.invokeAll(callables)
134-
final override def invokeAll[T](callables: Collection[? <: Callable[T]], l: Long, timeUnit: TimeUnit) = asExecutorService.invokeAll(callables, l, timeUnit)
135-
final override def invokeAny[T](callables: Collection[? <: Callable[T]]) = asExecutorService.invokeAny(callables)
136-
final override def invokeAny[T](callables: Collection[? <: Callable[T]], l: Long, timeUnit: TimeUnit) = asExecutorService.invokeAny(callables, l, timeUnit)
130+
final override def submit[T](callable: Callable[T]): java.util.concurrent.Future[T] = asExecutorService.submit(callable)
131+
final override def submit[T](runnable: Runnable, t: T): java.util.concurrent.Future[T] = asExecutorService.submit(runnable, t)
132+
final override def submit(runnable: Runnable): java.util.concurrent.Future[?] = asExecutorService.submit(runnable)
133+
final override def invokeAll[T](callables: Collection[? <: Callable[T]]): java.util.List[java.util.concurrent.Future[T]] = asExecutorService.invokeAll(callables)
134+
final override def invokeAll[T](callables: Collection[? <: Callable[T]], l: Long, timeUnit: TimeUnit): java.util.List[java.util.concurrent.Future[T]] = asExecutorService.invokeAll(callables, l, timeUnit)
135+
final override def invokeAny[T](callables: Collection[? <: Callable[T]]): T = asExecutorService.invokeAny(callables)
136+
final override def invokeAny[T](callables: Collection[? <: Callable[T]], l: Long, timeUnit: TimeUnit): T = asExecutorService.invokeAny(callables, l, timeUnit)
137137
}
138138
}
139139
}

library/src/scala/sys/process/ProcessImpl.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ private[process] trait ProcessImpl {
9797
def exitValue() = futureValue() getOrElse scala.sys.error("No exit code: process destroyed.")
9898
def start() = { futureThread ;() }
9999

100-
protected lazy val (processThread, (futureThread, futureValue), destroyer) = {
100+
protected lazy val (processThread, (futureThread, futureValue: (() => Option[Int])), destroyer) = {
101101
val code = new LinkedBlockingQueue[Option[Int]](1)
102102
val thread = Spawn("CompoundProcess") {
103103
var value: Option[Int] = None

0 commit comments

Comments
 (0)