dotty.tools.package.scala Maven / Gradle / Ivy
The newest version!
package dotty
package object tools {
// Ensure this object is already classloaded, since it's only actually used
// when handling stack overflows and every operation (including class loading)
// risks failing.
dotty.tools.dotc.core.handleRecursive
val ListOfNil: List[Nil.type] = Nil :: Nil
/** True if two lists have the same length. Since calling length on linear sequences
* is O(n), it is an inadvisable way to test length equality.
*/
final def sameLength[T](xs: List[T], ys: List[T]): Boolean = xs match {
case _ :: xs1 =>
ys match {
case _ :: ys1 => sameLength(xs1, ys1)
case _ => false
}
case _ => ys.isEmpty
}
/** Throws an `UnsupportedOperationException` with the given method name. */
def unsupported(methodName: String): Nothing =
throw new UnsupportedOperationException(methodName)
object resultWrapper {
opaque type WrappedResult[T] = T
private[tools] def unwrap[T](x: WrappedResult[T]): T = x
private[tools] def wrap[T](x: T): WrappedResult[T] = x
}
type WrappedResult[T] = resultWrapper.WrappedResult[T]
def WrappedResult[T](x: T) = resultWrapper.wrap(x)
def result[T] given (x: WrappedResult[T]): T = resultWrapper.unwrap(x)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy