Rename SuccessOrFailure to Result and hide Failure from ABI
* The members of Result are isSuccess, isFailure, exceptionOrNull, getOrNull * The rest of API is implemented via inline-only extensions * There are two internal functions to hide detailed mechanics of an internal Result.Failure class: createFailure and throwOnFailure * Result.toString is explicit: either Success(v) or Failure(x) See KT-26538
This commit is contained in:
@@ -64,7 +64,7 @@ abstract class AbstractCoroutineCodegen(
|
||||
if (languageVersionSettings.isReleaseCoroutines())
|
||||
createImplMethod(
|
||||
INVOKE_SUSPEND_METHOD_NAME,
|
||||
"result" to classDescriptor.module.getSuccessOrFailure(classDescriptor.builtIns.anyType)
|
||||
"result" to classDescriptor.module.getResult(classDescriptor.builtIns.anyType)
|
||||
)
|
||||
else
|
||||
createImplMethod(
|
||||
|
||||
+3
-3
@@ -759,11 +759,11 @@ private fun InstructionAdapter.generateResumeWithExceptionCheck(isReleaseCorouti
|
||||
val noExceptionLabel = Label()
|
||||
|
||||
if (isReleaseCoroutines) {
|
||||
instanceOf(AsmTypes.SUCCESS_OR_FAILURE_FAILURE)
|
||||
instanceOf(AsmTypes.RESULT_FAILURE)
|
||||
ifeq(noExceptionLabel)
|
||||
// TODO: do we need this checkcast?
|
||||
checkcast(AsmTypes.SUCCESS_OR_FAILURE_FAILURE)
|
||||
getfield(AsmTypes.SUCCESS_OR_FAILURE_FAILURE.internalName, "exception", AsmTypes.JAVA_THROWABLE_TYPE.descriptor)
|
||||
checkcast(AsmTypes.RESULT_FAILURE)
|
||||
getfield(AsmTypes.RESULT_FAILURE.internalName, "exception", AsmTypes.JAVA_THROWABLE_TYPE.descriptor)
|
||||
} else {
|
||||
ifnull(noExceptionLabel)
|
||||
}
|
||||
|
||||
+3
-3
@@ -303,16 +303,16 @@ fun <D : FunctionDescriptor> D.createCustomCopy(
|
||||
private fun FunctionDescriptor.getContinuationParameterTypeOfSuspendFunction(isReleaseCoroutines: Boolean) =
|
||||
module.getContinuationOfTypeOrAny(returnType!!, if (this.needsExperimentalCoroutinesWrapper()) false else isReleaseCoroutines)
|
||||
|
||||
fun ModuleDescriptor.getSuccessOrFailure(kotlinType: KotlinType) =
|
||||
fun ModuleDescriptor.getResult(kotlinType: KotlinType) =
|
||||
module.resolveTopLevelClass(
|
||||
DescriptorUtils.SUCCESS_OR_FAILURE_FQ_NAME,
|
||||
DescriptorUtils.RESULT_FQ_NAME,
|
||||
NoLookupLocation.FROM_BACKEND
|
||||
)?.defaultType?.let {
|
||||
KotlinTypeFactory.simpleType(
|
||||
it,
|
||||
arguments = listOf(kotlinType.asTypeProjection())
|
||||
)
|
||||
} ?: ErrorUtils.createErrorType("For SuccessOrFailure")
|
||||
} ?: ErrorUtils.createErrorType("For Result")
|
||||
|
||||
private fun MethodNode.invokeNormalizeContinuation(languageVersionSettings: LanguageVersionSettings) {
|
||||
visitMethodInsn(
|
||||
|
||||
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.codegen.state
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.load.kotlin.getRepresentativeUpperBound
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.RESULT_FQ_NAME
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.SUCCESS_OR_FAILURE_FQ_NAME
|
||||
import org.jetbrains.kotlin.resolve.InlineClassDescriptorResolver
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
||||
@@ -50,7 +49,7 @@ private fun KotlinType.isInlineClassThatRequiresMangling() =
|
||||
isInlineClassType() && !isDontMangleClass(this.constructor.declarationDescriptor as ClassDescriptor)
|
||||
|
||||
private fun isDontMangleClass(classDescriptor: ClassDescriptor) =
|
||||
classDescriptor.fqNameSafe == SUCCESS_OR_FAILURE_FQ_NAME || classDescriptor.fqNameSafe == RESULT_FQ_NAME
|
||||
classDescriptor.fqNameSafe == RESULT_FQ_NAME
|
||||
|
||||
private fun KotlinType.isTypeParameterWithUpperBoundThatRequiresMangling(): Boolean {
|
||||
val descriptor = constructor.declarationDescriptor as? TypeParameterDescriptor ?: return false
|
||||
|
||||
@@ -36,7 +36,7 @@ public class AsmTypes {
|
||||
public static final Type MUTABLE_PROPERTY_REFERENCE1 = Type.getObjectType("kotlin/jvm/internal/MutablePropertyReference1");
|
||||
public static final Type MUTABLE_PROPERTY_REFERENCE2 = Type.getObjectType("kotlin/jvm/internal/MutablePropertyReference2");
|
||||
|
||||
public static final Type SUCCESS_OR_FAILURE_FAILURE = Type.getObjectType("kotlin/SuccessOrFailure$Failure");
|
||||
public static final Type RESULT_FAILURE = Type.getObjectType("kotlin/Result$Failure");
|
||||
|
||||
public static final Type[] PROPERTY_REFERENCE_IMPL = {
|
||||
Type.getObjectType("kotlin/jvm/internal/PropertyReference0Impl"),
|
||||
|
||||
@@ -99,7 +99,7 @@ fun box(): String {
|
||||
if (res != "first") {
|
||||
return "" + res
|
||||
}
|
||||
continuation!!.resumeWith(SuccessOrFailure.success(Unit))
|
||||
continuation!!.resumeWith(Result.success(Unit))
|
||||
res = (continuation!! as BaseContinuationImpl).getSpilledVariableFieldMapping()!!.toMap()["I$0"] ?: "multipleLocalsInOneSlot fail 2"
|
||||
if (res != "second") {
|
||||
return "" + res
|
||||
|
||||
+8
-8
@@ -10,30 +10,30 @@ fun builder(c: suspend () -> Unit) {
|
||||
}
|
||||
|
||||
@Suppress("UNSUPPORTED_FEATURE")
|
||||
inline class SuccessOrFailure<T>(val a: Any?) {
|
||||
inline class Result<T>(val a: Any?) {
|
||||
fun getOrThrow(): T = a as T
|
||||
}
|
||||
|
||||
abstract class SuccessOrFailureReceiver<T> {
|
||||
abstract suspend fun receive(result: SuccessOrFailure<T>)
|
||||
abstract class ResultReceiver<T> {
|
||||
abstract suspend fun receive(result: Result<T>)
|
||||
}
|
||||
|
||||
inline fun <T> SuccessOrFailureReceiver(crossinline f: (SuccessOrFailure<T>) -> Unit): SuccessOrFailureReceiver<T> =
|
||||
object : SuccessOrFailureReceiver<T>() {
|
||||
override suspend fun receive(result: SuccessOrFailure<T>) {
|
||||
inline fun <T> ResultReceiver(crossinline f: (Result<T>) -> Unit): ResultReceiver<T> =
|
||||
object : ResultReceiver<T>() {
|
||||
override suspend fun receive(result: Result<T>) {
|
||||
f(result)
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
var invoked = false
|
||||
val receiver = SuccessOrFailureReceiver<String> { result ->
|
||||
val receiver = ResultReceiver<String> { result ->
|
||||
val intResult = result.getOrThrow()
|
||||
invoked = true
|
||||
}
|
||||
|
||||
builder {
|
||||
receiver.receive(SuccessOrFailure("42"))
|
||||
receiver.receive(Result("42"))
|
||||
}
|
||||
if (!invoked) {
|
||||
throw RuntimeException("Fail")
|
||||
|
||||
+8
-8
@@ -10,30 +10,30 @@ fun builder(c: suspend () -> Unit) {
|
||||
}
|
||||
|
||||
@Suppress("UNSUPPORTED_FEATURE")
|
||||
inline class SuccessOrFailure<T>(val a: Any?) {
|
||||
inline class Result<T>(val a: Any?) {
|
||||
fun getOrThrow(): T = a as T
|
||||
}
|
||||
|
||||
abstract class SuccessOrFailureReceiver<T> {
|
||||
abstract suspend fun receive(result: SuccessOrFailure<T>)
|
||||
abstract class ResultReceiver<T> {
|
||||
abstract suspend fun receive(result: Result<T>)
|
||||
}
|
||||
|
||||
fun <T> SuccessOrFailureReceiver(f: (SuccessOrFailure<T>) -> Unit): SuccessOrFailureReceiver<T> =
|
||||
object : SuccessOrFailureReceiver<T>() {
|
||||
override suspend fun receive(result: SuccessOrFailure<T>) {
|
||||
fun <T> ResultReceiver(f: (Result<T>) -> Unit): ResultReceiver<T> =
|
||||
object : ResultReceiver<T>() {
|
||||
override suspend fun receive(result: Result<T>) {
|
||||
f(result)
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
var invoked = false
|
||||
val receiver = SuccessOrFailureReceiver<Int> { result ->
|
||||
val receiver = ResultReceiver<Int> { result ->
|
||||
val intResult = result.getOrThrow()
|
||||
invoked = true
|
||||
}
|
||||
|
||||
builder {
|
||||
receiver.receive(SuccessOrFailure(42))
|
||||
receiver.receive(Result(42))
|
||||
}
|
||||
if (!invoked) {
|
||||
throw RuntimeException("Fail")
|
||||
|
||||
@@ -30,7 +30,7 @@ var proceed = {}
|
||||
|
||||
suspend fun suspendHere() = suspendCoroutineUninterceptedOrReturn<Unit> { cont ->
|
||||
proceed = {
|
||||
cont.resumeWith(SuccessOrFailure.success(Unit))
|
||||
cont.resumeWith(Result.success(Unit))
|
||||
}
|
||||
COROUTINE_SUSPENDED
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ var proceed = {}
|
||||
|
||||
suspend fun suspendHere() = suspendCoroutineUninterceptedOrReturn<Unit> { cont ->
|
||||
proceed = {
|
||||
cont.resumeWith(SuccessOrFailure.success(Unit))
|
||||
cont.resumeWith(Result.success(Unit))
|
||||
}
|
||||
COROUTINE_SUSPENDED
|
||||
}
|
||||
|
||||
+8
-8
@@ -1,29 +1,29 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
inline class SuccessOrFailure<T>(val a: Any?) {
|
||||
inline class Result<T>(val a: Any?) {
|
||||
fun getOrThrow(): T = a as T
|
||||
}
|
||||
|
||||
abstract class SuccessOrFailureReceiver<T> {
|
||||
abstract fun receive(result: SuccessOrFailure<T>)
|
||||
abstract class ResultReceiver<T> {
|
||||
abstract fun receive(result: Result<T>)
|
||||
}
|
||||
|
||||
fun <T> SuccessOrFailureReceiver(f: (SuccessOrFailure<T>) -> Unit): SuccessOrFailureReceiver<T> =
|
||||
object : SuccessOrFailureReceiver<T>() {
|
||||
override fun receive(result: SuccessOrFailure<T>) {
|
||||
fun <T> ResultReceiver(f: (Result<T>) -> Unit): ResultReceiver<T> =
|
||||
object : ResultReceiver<T>() {
|
||||
override fun receive(result: Result<T>) {
|
||||
f(result)
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
var invoked = false
|
||||
val receiver = SuccessOrFailureReceiver<Int> { result ->
|
||||
val receiver = ResultReceiver<Int> { result ->
|
||||
val intResult = result.getOrThrow()
|
||||
invoked = true
|
||||
}
|
||||
|
||||
receiver.receive(SuccessOrFailure(42))
|
||||
receiver.receive(Result(42))
|
||||
if (!invoked) {
|
||||
throw RuntimeException("Fail")
|
||||
}
|
||||
|
||||
+8
-8
@@ -1,29 +1,29 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
inline class SuccessOrFailure<T>(val a: Any?) {
|
||||
inline class Result<T>(val a: Any?) {
|
||||
fun getOrThrow(): T = a as T
|
||||
}
|
||||
|
||||
abstract class SuccessOrFailureReceiver<T> {
|
||||
abstract fun receive(result: SuccessOrFailure<T>)
|
||||
abstract class ResultReceiver<T> {
|
||||
abstract fun receive(result: Result<T>)
|
||||
}
|
||||
|
||||
inline fun <T> SuccessOrFailureReceiver(crossinline f: (SuccessOrFailure<T>) -> Unit): SuccessOrFailureReceiver<T> =
|
||||
object : SuccessOrFailureReceiver<T>() {
|
||||
override fun receive(result: SuccessOrFailure<T>) {
|
||||
inline fun <T> ResultReceiver(crossinline f: (Result<T>) -> Unit): ResultReceiver<T> =
|
||||
object : ResultReceiver<T>() {
|
||||
override fun receive(result: Result<T>) {
|
||||
f(result)
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
var invoked = false
|
||||
val receiver = SuccessOrFailureReceiver<String> { result ->
|
||||
val receiver = ResultReceiver<String> { result ->
|
||||
val intResult = result.getOrThrow()
|
||||
invoked = true
|
||||
}
|
||||
|
||||
receiver.receive(SuccessOrFailure("42"))
|
||||
receiver.receive(Result("42"))
|
||||
if (!invoked) {
|
||||
throw RuntimeException("Fail")
|
||||
}
|
||||
|
||||
+8
-8
@@ -1,15 +1,15 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
inline class SuccessOrFailure<out T>(val value: Any?) {
|
||||
inline class Result<out T>(val value: Any?) {
|
||||
val isFailure: Boolean get() = value is Failure
|
||||
|
||||
public companion object {
|
||||
public inline fun <T> success(value: T): SuccessOrFailure<T> =
|
||||
SuccessOrFailure(value)
|
||||
public inline fun <T> success(value: T): Result<T> =
|
||||
Result(value)
|
||||
|
||||
public inline fun <T> failure(exception: Throwable): SuccessOrFailure<T> =
|
||||
SuccessOrFailure(Failure(exception))
|
||||
public inline fun <T> failure(exception: Throwable): Result<T> =
|
||||
Result(Failure(exception))
|
||||
}
|
||||
|
||||
class Failure (
|
||||
@@ -17,11 +17,11 @@ inline class SuccessOrFailure<out T>(val value: Any?) {
|
||||
)
|
||||
}
|
||||
|
||||
inline fun <R> runCatching(block: () -> R): SuccessOrFailure<R> {
|
||||
inline fun <R> runCatching(block: () -> R): Result<R> {
|
||||
return try {
|
||||
SuccessOrFailure.success(block())
|
||||
Result.success(block())
|
||||
} catch (e: Throwable) {
|
||||
SuccessOrFailure.failure(e)
|
||||
Result.failure(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ fun builder(c: suspend () -> Unit) {
|
||||
override val context: CoroutineContext
|
||||
get() = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Unit>) {
|
||||
override fun resumeWith(result: Result<Unit>) {
|
||||
result.getOrThrow()
|
||||
}
|
||||
})
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ fun builder(c: suspend () -> Unit) {
|
||||
override val context: CoroutineContext
|
||||
get() = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Unit>) {
|
||||
override fun resumeWith(result: Result<Unit>) {
|
||||
result.getOrThrow()
|
||||
}
|
||||
})
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ fun builder(c: suspend () -> Unit) {
|
||||
override val context: CoroutineContext
|
||||
get() = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(r: SuccessOrFailure<Unit>) {
|
||||
override fun resumeWith(r: Result<Unit>) {
|
||||
r.getOrThrow()
|
||||
proceed = {
|
||||
result = "OK"
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ fun builder(c: suspend () -> Unit) {
|
||||
override val context: CoroutineContext
|
||||
get() = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(r: SuccessOrFailure<Unit>) {
|
||||
override fun resumeWith(r: Result<Unit>) {
|
||||
r.getOrThrow()
|
||||
proceed = {
|
||||
result = "OK"
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
import kotlin.coroutines.*
|
||||
import kotlin.coroutines.intrinsics.*
|
||||
suspend fun suspendHere(): String = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
x.resumeWith(SuccessOrFailure.success("OK"))
|
||||
x.resumeWith(Result.success("OK"))
|
||||
}
|
||||
|
||||
suspend fun suspendThere(param: Int, param2: String, param3: Long): String {
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// WITH_COROUTINES
|
||||
// FILE: test.kt
|
||||
fun test() {
|
||||
val result = Result.success("yes!")
|
||||
val failure = Result.failure<String>(Exception())
|
||||
|
||||
if (result.isSuccess) println("success")
|
||||
if (result.isFailure) println("failure")
|
||||
println(result.getOrThrow())
|
||||
println(failure.getOrNull())
|
||||
println(failure.exceptionOrNull())
|
||||
|
||||
val other = Result.success("nope")
|
||||
if (result == other) println("==")
|
||||
if (result != other) println("!=")
|
||||
if (result.equals(other)) println("equals")
|
||||
if (!result.equals(other)) println("!equals")
|
||||
|
||||
println(result.hashCode())
|
||||
println(result.toString())
|
||||
println("$result")
|
||||
|
||||
val ans1 = runCatching { 42 }
|
||||
println(ans1)
|
||||
|
||||
val ans2 = 42.runCatching { this }
|
||||
println(ans2)
|
||||
|
||||
println(result.getOrElse { "oops" })
|
||||
println(result.getOrDefault("oops"))
|
||||
}
|
||||
|
||||
// @TestKt.class:
|
||||
// 0 INVOKESTATIC Result.box-impl
|
||||
// 0 INVOKESTATIC Result.unbox-impl
|
||||
// 0 Result\$Failure
|
||||
// 53 Result
|
||||
Vendored
-36
@@ -1,36 +0,0 @@
|
||||
// WITH_COROUTINES
|
||||
// FILE: test.kt
|
||||
fun testSoF() {
|
||||
val sof = SuccessOrFailure.success("yes!")
|
||||
val failure = SuccessOrFailure.failure<String>(Exception())
|
||||
|
||||
if (sof.isSuccess) println("success")
|
||||
if (sof.isFailure) println("failure")
|
||||
println(sof.getOrThrow())
|
||||
println(failure.getOrNull())
|
||||
println(failure.exceptionOrNull())
|
||||
|
||||
val other = SuccessOrFailure.success("nope")
|
||||
if (sof == other) println("==")
|
||||
if (sof != other) println("!=")
|
||||
if (sof.equals(other)) println("equals")
|
||||
if (!sof.equals(other)) println("!equals")
|
||||
|
||||
println(sof.hashCode())
|
||||
println(sof.toString())
|
||||
println("$sof")
|
||||
|
||||
val ans1 = runCatching { 42 }
|
||||
println(ans1)
|
||||
|
||||
val ans2 = 42.runCatching { this }
|
||||
println(ans2)
|
||||
|
||||
println(sof.getOrElse { "oops" })
|
||||
println(sof.getOrDefault("oops"))
|
||||
}
|
||||
|
||||
// @TestKt.class:
|
||||
// 0 SuccessOrFailure\$Erased
|
||||
// 0 SuccessOrFailure\-Erased
|
||||
// 58 SuccessOrFailure
|
||||
@@ -19,7 +19,7 @@ fun builder(x: suspend () -> Unit) {
|
||||
x.startCoroutine(object : Continuation<Any?> {
|
||||
override val context: CoroutineContext = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) {
|
||||
override fun resumeWith(result: Result<Any?>) {
|
||||
result.getOrThrow()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -17,7 +17,7 @@ fun createTextForHelpers(isReleaseCoroutines: Boolean): String {
|
||||
val emptyContinuationBody =
|
||||
if (isReleaseCoroutines)
|
||||
"""
|
||||
|override fun resumeWith(result: SuccessOrFailure<Any?>) {
|
||||
|override fun resumeWith(result: Result<Any?>) {
|
||||
| result.getOrThrow()
|
||||
|}
|
||||
""".trimMargin()
|
||||
@@ -30,7 +30,7 @@ fun createTextForHelpers(isReleaseCoroutines: Boolean): String {
|
||||
val handleResultContinuationBody =
|
||||
if (isReleaseCoroutines)
|
||||
"""
|
||||
|override fun resumeWith(result: SuccessOrFailure<T>) {
|
||||
|override fun resumeWith(result: Result<T>) {
|
||||
| x(result.getOrThrow())
|
||||
|}
|
||||
""".trimMargin()
|
||||
@@ -46,7 +46,7 @@ fun createTextForHelpers(isReleaseCoroutines: Boolean): String {
|
||||
val handleExceptionContinuationBody =
|
||||
if (isReleaseCoroutines)
|
||||
"""
|
||||
|override fun resumeWith(result: SuccessOrFailure<Any?>) {
|
||||
|override fun resumeWith(result: Result<Any?>) {
|
||||
| result.exceptionOrNull()?.let(x)
|
||||
|}
|
||||
""".trimMargin()
|
||||
@@ -62,7 +62,7 @@ fun createTextForHelpers(isReleaseCoroutines: Boolean): String {
|
||||
val continuationAdapterBody =
|
||||
if (isReleaseCoroutines)
|
||||
"""
|
||||
|override fun resumeWith(result: SuccessOrFailure<T>) {
|
||||
|override fun resumeWith(result: Result<T>) {
|
||||
| if (result.isSuccess) {
|
||||
| resume(result.getOrThrow())
|
||||
| } else {
|
||||
|
||||
+5
-5
@@ -2168,16 +2168,16 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inlineClasses/propertySetterWithInlineClassTypeArgument.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("resultApiDoesntUseBox.kt")
|
||||
public void testResultApiDoesntUseBox() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inlineClasses/resultApiDoesntUseBox.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("skipCallToUnderlyingValueOfInlineClass.kt")
|
||||
public void testSkipCallToUnderlyingValueOfInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inlineClasses/skipCallToUnderlyingValueOfInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("successOrFailureApiDoesntUseErasedClass.kt")
|
||||
public void testSuccessOrFailureApiDoesntUseErasedClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inlineClasses/successOrFailureApiDoesntUseErasedClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("toStringIsCalledByInlineClass.kt")
|
||||
public void testToStringIsCalledByInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inlineClasses/toStringIsCalledByInlineClass.kt");
|
||||
|
||||
@@ -44,7 +44,6 @@ public class DescriptorUtils {
|
||||
COROUTINES_PACKAGE_FQ_NAME_EXPERIMENTAL.child(Name.identifier("Continuation"));
|
||||
public static final FqName CONTINUATION_INTERFACE_FQ_NAME_RELEASE =
|
||||
COROUTINES_PACKAGE_FQ_NAME_RELEASE.child(Name.identifier("Continuation"));
|
||||
public static final FqName SUCCESS_OR_FAILURE_FQ_NAME = new FqName("kotlin.SuccessOrFailure");
|
||||
public static final FqName RESULT_FQ_NAME = new FqName("kotlin.Result");
|
||||
|
||||
// This JVM-specific class FQ name is declared here only because it's used in MainFunctionDetector which is in frontend
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<html>
|
||||
<body>
|
||||
This inspection reports functions with <b>Result</b> result.
|
||||
|
||||
<b>Result</b> should never be used as return type.
|
||||
Throw exception, or use nullable type, or use domain-specific result class to indicate failure.
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,8 +0,0 @@
|
||||
<html>
|
||||
<body>
|
||||
This inspection reports functions with <b>SuccessOrFailure</b> result.
|
||||
|
||||
<b>SuccessOrFailure</b> should never be used as return type.
|
||||
Throw exception, or use nullable type, or use domain-specific result class to indicate failure.
|
||||
</body>
|
||||
</html>
|
||||
@@ -3021,8 +3021,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
language="kotlin"
|
||||
/>
|
||||
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection"
|
||||
displayName="Function returning SuccessOrFailure"
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection"
|
||||
displayName="Function returning Result"
|
||||
groupPath="Kotlin"
|
||||
groupName="Style issues"
|
||||
enabledByDefault="true"
|
||||
|
||||
@@ -3019,8 +3019,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
language="kotlin"
|
||||
/>
|
||||
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection"
|
||||
displayName="Function returning SuccessOrFailure"
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection"
|
||||
displayName="Function returning Result"
|
||||
groupPath="Kotlin"
|
||||
groupName="Style issues"
|
||||
enabledByDefault="true"
|
||||
|
||||
@@ -3020,8 +3020,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
language="kotlin"
|
||||
/>
|
||||
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection"
|
||||
displayName="Function returning SuccessOrFailure"
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection"
|
||||
displayName="Function returning Result"
|
||||
groupPath="Kotlin"
|
||||
groupName="Style issues"
|
||||
enabledByDefault="true"
|
||||
|
||||
@@ -3021,8 +3021,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
language="kotlin"
|
||||
/>
|
||||
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection"
|
||||
displayName="Function returning SuccessOrFailure"
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection"
|
||||
displayName="Function returning Result"
|
||||
groupPath="Kotlin"
|
||||
groupName="Style issues"
|
||||
enabledByDefault="true"
|
||||
|
||||
@@ -3019,8 +3019,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
language="kotlin"
|
||||
/>
|
||||
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection"
|
||||
displayName="Function returning SuccessOrFailure"
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection"
|
||||
displayName="Function returning Result"
|
||||
groupPath="Kotlin"
|
||||
groupName="Style issues"
|
||||
enabledByDefault="true"
|
||||
|
||||
@@ -3019,8 +3019,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
language="kotlin"
|
||||
/>
|
||||
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection"
|
||||
displayName="Function returning SuccessOrFailure"
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection"
|
||||
displayName="Function returning Result"
|
||||
groupPath="Kotlin"
|
||||
groupName="Style issues"
|
||||
enabledByDefault="true"
|
||||
|
||||
@@ -3021,8 +3021,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
language="kotlin"
|
||||
/>
|
||||
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection"
|
||||
displayName="Function returning SuccessOrFailure"
|
||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection"
|
||||
displayName="Function returning Result"
|
||||
groupPath="Kotlin"
|
||||
groupName="Style issues"
|
||||
enabledByDefault="true"
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ class RedundantRunCatchingInspection : AbstractCallChainChecker() {
|
||||
private val conversions = listOf(
|
||||
Conversion(
|
||||
"kotlin.runCatching",
|
||||
"kotlin.SuccessOrFailure.getOrThrow",
|
||||
"kotlin.Result.getOrThrow",
|
||||
"run"
|
||||
)
|
||||
)
|
||||
|
||||
+4
-4
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
|
||||
class ResultIsSuccessOrFailureInspection : AbstractKotlinInspection() {
|
||||
class ResultIsResultInspection : AbstractKotlinInspection() {
|
||||
|
||||
private fun MemberScope.hasCorrespondingNonCatchingFunction(
|
||||
nameWithoutCatching: String,
|
||||
@@ -85,13 +85,13 @@ class ResultIsSuccessOrFailureInspection : AbstractKotlinInspection() {
|
||||
if (name in ALLOWED_NAMES) return
|
||||
if (function is KtNamedFunction) {
|
||||
val receiverTypeReference = function.receiverTypeReference
|
||||
// Filter SuccessOrFailure extensions
|
||||
// Filter Result extensions
|
||||
if (receiverTypeReference != null && SHORT_NAME in receiverTypeReference.text) return
|
||||
}
|
||||
if (function is KtFunctionLiteral || returnTypeText == null) {
|
||||
// Heuristics to save performance
|
||||
val text = function.bodyExpression?.text
|
||||
// Check there is something creating SuccessOrFailure in function text
|
||||
// Check there is something creating Result in function text
|
||||
if (text != null && ALLOWED_NAMES.none { it in text } && SHORT_NAME !in text && CATCHING !in text) return
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ class ResultIsSuccessOrFailureInspection : AbstractKotlinInspection() {
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val SHORT_NAME = "SuccessOrFailure"
|
||||
private const val SHORT_NAME = "Result"
|
||||
|
||||
private const val FULL_NAME = "kotlin.$SHORT_NAME"
|
||||
|
||||
@@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
|
||||
|
||||
+24
-24
@@ -5,8 +5,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function returning SuccessOrFailure with a name that does not end with Catching</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function returning Result with a name that does not end with Catching</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -14,8 +14,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function returning SuccessOrFailure with a name that does not end with Catching</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function returning Result with a name that does not end with Catching</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -23,8 +23,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function 'incorrectCatching' returning 'SuccessOrFailure<Double>' without the corresponding function 'incorrect' returning 'Double'</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function 'incorrectCatching' returning 'Result<Double>' without the corresponding function 'incorrect' returning 'Double'</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -32,8 +32,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function 'strangeCatching' returning 'SuccessOrFailure<Boolean>' without the corresponding function 'strange' returning 'Boolean'</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function 'strangeCatching' returning 'Result<Boolean>' without the corresponding function 'strange' returning 'Boolean'</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -41,8 +41,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function returning SuccessOrFailure with a name that does not end with Catching</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function returning Result with a name that does not end with Catching</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -50,8 +50,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function returning SuccessOrFailure with a name that does not end with Catching</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function returning Result with a name that does not end with Catching</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -59,8 +59,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function 'classIncorrectCatching' returning 'SuccessOrFailure<Double>' without the corresponding function 'classIncorrect' returning 'Double'</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function 'classIncorrectCatching' returning 'Result<Double>' without the corresponding function 'classIncorrect' returning 'Double'</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -68,8 +68,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function returning SuccessOrFailure with a name that does not end with Catching</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function returning Result with a name that does not end with Catching</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -77,8 +77,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function returning SuccessOrFailure with a name that does not end with Catching</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function returning Result with a name that does not end with Catching</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -86,8 +86,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function returning SuccessOrFailure with a name that does not end with Catching</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function returning Result with a name that does not end with Catching</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -95,8 +95,8 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function 'calcComplexCatching' returning 'SuccessOrFailure<Double>' without the corresponding function 'calcComplex' returning 'Double'</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function 'calcComplexCatching' returning 'Result<Double>' without the corresponding function 'calcComplex' returning 'Double'</description>
|
||||
</problem>
|
||||
<problem>
|
||||
<file>test.kt</file>
|
||||
@@ -104,7 +104,7 @@
|
||||
<module>light_idea_test_case</module>
|
||||
<package><default></package>
|
||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning SuccessOrFailure</problem_class>
|
||||
<description>Function 'extensionActCatching' returning 'SuccessOrFailure<Int>' without the corresponding function 'extensionAct' returning 'Int'</description>
|
||||
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Function returning Result</problem_class>
|
||||
<description>Function 'extensionActCatching' returning 'Result<Int>' without the corresponding function 'extensionAct' returning 'Int'</description>
|
||||
</problem>
|
||||
</problems>
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
// INSPECTION_CLASS: org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection
|
||||
// INSPECTION_CLASS: org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection
|
||||
|
||||
@@ -1,67 +1,67 @@
|
||||
package kotlin
|
||||
// NO (constructor)
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
// YES
|
||||
fun getSuccess() = success()
|
||||
// YES
|
||||
fun getSuccessExplicit(): SuccessOrFailure<Int> = SuccessOrFailure(456)
|
||||
fun getSuccessExplicit(): Result<Int> = Result(456)
|
||||
// NO (not catching 'correct' available)
|
||||
fun correctCatching() = SuccessOrFailure(true)
|
||||
// NO (not SuccessOrFailure)
|
||||
fun correctCatching() = Result(true)
|
||||
// NO (not Result)
|
||||
fun correct() = true
|
||||
// YES
|
||||
fun incorrectCatching() = SuccessOrFailure(3.14)
|
||||
fun incorrectCatching() = Result(3.14)
|
||||
// YES
|
||||
fun strangeCatching() = runCatching { false }
|
||||
// NO (not SuccessOrFailure)
|
||||
// NO (not Result)
|
||||
fun strange() = 1
|
||||
|
||||
class Container {
|
||||
// YES
|
||||
fun classGetSuccess() = SuccessOrFailure("123")
|
||||
fun classGetSuccess() = Result("123")
|
||||
// YES
|
||||
fun classGetSuccessExplicit(): SuccessOrFailure<Int> = SuccessOrFailure(456)
|
||||
fun classGetSuccessExplicit(): Result<Int> = Result(456)
|
||||
// NO (not catching 'classCorrect' available)
|
||||
fun classCorrectCatching() = SuccessOrFailure(true)
|
||||
// NO (not SuccessOrFailure)
|
||||
fun classCorrectCatching() = Result(true)
|
||||
// NO (not Result)
|
||||
fun classCorrect() = true
|
||||
// YES
|
||||
fun classIncorrectCatching() = SuccessOrFailure(3.14)
|
||||
fun classIncorrectCatching() = Result(3.14)
|
||||
}
|
||||
|
||||
fun test() {
|
||||
// YES
|
||||
fun localGetSuccess() = SuccessOrFailure("123")
|
||||
fun localGetSuccess() = Result("123")
|
||||
// YES
|
||||
val anonymous = fun() = SuccessOrFailure(45)
|
||||
val anonymous = fun() = Result(45)
|
||||
// YES
|
||||
val lambda = { SuccessOrFailure(true) }
|
||||
val lambda = { Result(true) }
|
||||
// NO yet (we do not report local *catching functions)
|
||||
fun localCatching() = SuccessOrFailure(2.72)
|
||||
fun localCatching() = Result(2.72)
|
||||
}
|
||||
|
||||
// NO (stdlib)
|
||||
fun success() = SuccessOrFailure(true)
|
||||
fun success() = Result(true)
|
||||
// NO (stdlib)
|
||||
fun failure() = SuccessOrFailure(false)
|
||||
fun failure() = Result(false)
|
||||
// NO (stdlib)
|
||||
fun <T> runCatching(block: () -> T) = SuccessOrFailure(block())
|
||||
fun <T> runCatching(block: () -> T) = Result(block())
|
||||
// NO (stdlib)
|
||||
fun <T> SuccessOrFailure<T>.id() = this
|
||||
fun <T> Result<T>.id() = this
|
||||
|
||||
class ClassWithExtension() {
|
||||
// NO (not SuccessOrFailure)
|
||||
// NO (not Result)
|
||||
fun calc() = 12345
|
||||
// NO (not SuccessOrFailure)
|
||||
// NO (not Result)
|
||||
fun calcComplex(arg1: Int, arg2: Double): Double = arg1 + arg2
|
||||
// YES (different parameters)
|
||||
fun calcComplexCatching() = SuccessOrFailure(0.0)
|
||||
fun calcComplexCatching() = Result(0.0)
|
||||
}
|
||||
// NO (extension to calc)
|
||||
fun ClassWithExtension.calcCatching() = SuccessOrFailure(calc())
|
||||
// NO (not SuccessOrFailure)
|
||||
fun ClassWithExtension.calcCatching() = Result(calc())
|
||||
// NO (not Result)
|
||||
fun Container.extensionAct() = 42
|
||||
// YES (different extension receiver)
|
||||
fun ClassWithExtension.extensionActCatching() = SuccessOrFailure(42)
|
||||
fun ClassWithExtension.extensionActCatching() = Result(42)
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun <T> runCatching(block: () -> T) = SuccessOrFailure(block())
|
||||
fun <T> runCatching(block: () -> T) = Result(block())
|
||||
|
||||
fun correct(arg: Boolean) = runCatching<caret> { if (arg) throw AssertionError("") else 12 }.getOrThrow()
|
||||
|
||||
+2
-2
@@ -2,10 +2,10 @@
|
||||
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun <T> runCatching(block: () -> T) = SuccessOrFailure(block())
|
||||
fun <T> runCatching(block: () -> T) = Result(block())
|
||||
|
||||
fun correct(arg: Boolean) = run { if (arg) throw AssertionError("") else 12 }
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsSuccessOrFailureInspection
|
||||
org.jetbrains.kotlin.idea.inspections.coroutines.ResultIsResultInspection
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
// FIX: Unwrap 'SuccessOrFailure' return type (breaks use-sites!)
|
||||
// FIX: Unwrap 'Result' return type (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
abstract class Abstract {
|
||||
abstract fun <caret>foo(): SuccessOrFailure<Int>
|
||||
abstract fun <caret>foo(): Result<Int>
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// FIX: Unwrap 'SuccessOrFailure' return type (breaks use-sites!)
|
||||
// FIX: Unwrap 'Result' return type (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = <caret>fun() = SuccessOrFailure("123")
|
||||
val x = <caret>fun() = Result("123")
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = fun() = SuccessOrFailure("123").getOrThrow()
|
||||
val x = fun() = Result("123").getOrThrow()
|
||||
}
|
||||
|
||||
+11
-11
@@ -3,28 +3,28 @@
|
||||
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun <caret>incorrectBlock(arg: Boolean, arg2: Boolean?): SuccessOrFailure<Int> {
|
||||
fun <caret>incorrectBlock(arg: Boolean, arg2: Boolean?): Result<Int> {
|
||||
if (arg) {
|
||||
class Local {
|
||||
fun foo(): SuccessOrFailure<String> {
|
||||
return SuccessOrFailure("NO")
|
||||
fun foo(): Result<String> {
|
||||
return Result("NO")
|
||||
}
|
||||
}
|
||||
return SuccessOrFailure(1)
|
||||
return Result(1)
|
||||
} else {
|
||||
when (arg2) {
|
||||
true -> {
|
||||
val x = fun(): SuccessOrFailure<Boolean> {
|
||||
return SuccessOrFailure(false)
|
||||
val x = fun(): Result<Boolean> {
|
||||
return Result(false)
|
||||
}
|
||||
if (x().getOrThrow()) {
|
||||
return SuccessOrFailure(2)
|
||||
return Result(2)
|
||||
} else {
|
||||
return SuccessOrFailure(0)
|
||||
return Result(0)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
@@ -32,9 +32,9 @@ fun <caret>incorrectBlock(arg: Boolean, arg2: Boolean?): SuccessOrFailure<Int> {
|
||||
listOf(1, 2, 3).forEach {
|
||||
if (it == 2) return@forEach
|
||||
}
|
||||
return SuccessOrFailure(3)
|
||||
return Result(3)
|
||||
}
|
||||
return SuccessOrFailure(4)
|
||||
return Result(4)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+10
-10
@@ -3,28 +3,28 @@
|
||||
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun incorrectBlock(arg: Boolean, arg2: Boolean?): Int {
|
||||
if (arg) {
|
||||
class Local {
|
||||
fun foo(): SuccessOrFailure<String> {
|
||||
return SuccessOrFailure("NO")
|
||||
fun foo(): Result<String> {
|
||||
return Result("NO")
|
||||
}
|
||||
}
|
||||
return SuccessOrFailure(1).getOrThrow()
|
||||
return Result(1).getOrThrow()
|
||||
} else {
|
||||
when (arg2) {
|
||||
true -> {
|
||||
val x = fun(): SuccessOrFailure<Boolean> {
|
||||
return SuccessOrFailure(false)
|
||||
val x = fun(): Result<Boolean> {
|
||||
return Result(false)
|
||||
}
|
||||
if (x().getOrThrow()) {
|
||||
return SuccessOrFailure(2).getOrThrow()
|
||||
return Result(2).getOrThrow()
|
||||
} else {
|
||||
return SuccessOrFailure(0).getOrThrow()
|
||||
return Result(0).getOrThrow()
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
@@ -32,9 +32,9 @@ fun incorrectBlock(arg: Boolean, arg2: Boolean?): Int {
|
||||
listOf(1, 2, 3).forEach {
|
||||
if (it == 2) return@forEach
|
||||
}
|
||||
return SuccessOrFailure(3).getOrThrow()
|
||||
return Result(3).getOrThrow()
|
||||
}
|
||||
return SuccessOrFailure(4).getOrThrow()
|
||||
return Result(4).getOrThrow()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = <caret>{ SuccessOrFailure(true) }
|
||||
val x = <caret>{ Result(true) }
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = { SuccessOrFailure(true).getOrThrow() }
|
||||
val x = { Result(true).getOrThrow() }
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -1,15 +1,15 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test(arg: Boolean) {
|
||||
val x = foo@<caret>{
|
||||
if (!arg) {
|
||||
return@foo SuccessOrFailure(true)
|
||||
return@foo Result(true)
|
||||
} else {
|
||||
SuccessOrFailure(false)
|
||||
Result(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -1,15 +1,15 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test(arg: Boolean) {
|
||||
val x = foo@{
|
||||
(if (!arg) {
|
||||
return@foo SuccessOrFailure(true).getOrThrow()
|
||||
return@foo Result(true).getOrThrow()
|
||||
} else {
|
||||
SuccessOrFailure(false)
|
||||
Result(false)
|
||||
}).getOrThrow()
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = foo@<caret>{ return@foo SuccessOrFailure(true) }
|
||||
val x = foo@<caret>{ return@foo Result(true) }
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -1,9 +1,9 @@
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = foo@<caret>{ return@foo SuccessOrFailure(true).getOrThrow() }
|
||||
val x = foo@<caret>{ return@foo Result(true).getOrThrow() }
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
// FIX: Add '.getOrThrow()' to function result (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
|
||||
operator fun plus(other: SuccessOrFailure<T>) = other
|
||||
operator fun plus(other: Result<T>) = other
|
||||
}
|
||||
|
||||
fun <caret>incorrect() = SuccessOrFailure("123") + SuccessOrFailure("456")
|
||||
fun <caret>incorrect() = Result("123") + Result("456")
|
||||
|
||||
Vendored
+3
-3
@@ -1,10 +1,10 @@
|
||||
// FIX: Add '.getOrThrow()' to function result (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
|
||||
operator fun plus(other: SuccessOrFailure<T>) = other
|
||||
operator fun plus(other: Result<T>) = other
|
||||
}
|
||||
|
||||
fun incorrect() = (SuccessOrFailure("123") + SuccessOrFailure("456")).getOrThrow()
|
||||
fun incorrect() = (Result("123") + Result("456")).getOrThrow()
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
// FIX: Rename to 'incorrectCatching'
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun <caret>incorrect() = SuccessOrFailure("123")
|
||||
fun <caret>incorrect() = Result("123")
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
// FIX: Rename to 'incorrectCatching'
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun <caret>incorrectCatching() = SuccessOrFailure("123")
|
||||
fun <caret>incorrectCatching() = Result("123")
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
// FIX: Add '.getOrThrow()' to function result (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun <caret>incorrect() = SuccessOrFailure("123")
|
||||
fun <caret>incorrect() = Result("123")
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
// FIX: Add '.getOrThrow()' to function result (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun incorrect() = SuccessOrFailure("123").getOrThrow()
|
||||
fun incorrect() = Result("123").getOrThrow()
|
||||
|
||||
+6
-6
@@ -1,21 +1,21 @@
|
||||
// FIX: Add '.getOrThrow()' to function result (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun <caret>incorrectBlock(arg: Boolean, arg2: Boolean?): SuccessOrFailure<Int> {
|
||||
fun <caret>incorrectBlock(arg: Boolean, arg2: Boolean?): Result<Int> {
|
||||
if (arg) {
|
||||
return SuccessOrFailure(1)
|
||||
return Result(1)
|
||||
} else {
|
||||
when (arg2) {
|
||||
true -> return SuccessOrFailure(2)
|
||||
true -> return Result(2)
|
||||
else -> {
|
||||
if (arg2 == false) {
|
||||
return SuccessOrFailure(3)
|
||||
return Result(3)
|
||||
}
|
||||
return SuccessOrFailure(4)
|
||||
return Result(4)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -1,21 +1,21 @@
|
||||
// FIX: Add '.getOrThrow()' to function result (breaks use-sites!)
|
||||
package kotlin
|
||||
|
||||
class SuccessOrFailure<T>(val value: T?) {
|
||||
class Result<T>(val value: T?) {
|
||||
fun getOrThrow(): T = value ?: throw AssertionError("")
|
||||
}
|
||||
|
||||
fun incorrectBlock(arg: Boolean, arg2: Boolean?): Int {
|
||||
if (arg) {
|
||||
return SuccessOrFailure(1).getOrThrow()
|
||||
return Result(1).getOrThrow()
|
||||
} else {
|
||||
when (arg2) {
|
||||
true -> return SuccessOrFailure(2).getOrThrow()
|
||||
true -> return Result(2).getOrThrow()
|
||||
else -> {
|
||||
if (arg2 == false) {
|
||||
return SuccessOrFailure(3).getOrThrow()
|
||||
return Result(3).getOrThrow()
|
||||
}
|
||||
return SuccessOrFailure(4).getOrThrow()
|
||||
return Result(4).getOrThrow()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ fun build(x: suspend () -> Unit) {
|
||||
x.startCoroutine(object : Continuation<Unit> {
|
||||
override val context = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(x: SuccessOrFailure<Unit>) {
|
||||
override fun resumeWith(x: Result<Unit>) {
|
||||
complete = true
|
||||
}
|
||||
})
|
||||
|
||||
@@ -12,7 +12,7 @@ suspend fun delay(): Unit = suspendCoroutine { c ->
|
||||
|
||||
fun build(c: suspend () -> Unit) {
|
||||
c.startCoroutine(object : Continuation<Unit> {
|
||||
override fun resumeWith(x: SuccessOrFailure<Unit>) {
|
||||
override fun resumeWith(x: Result<Unit>) {
|
||||
stopped = true
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ fun builder(c: suspend () -> Unit) {
|
||||
c.startCoroutine(object : Continuation<Unit> {
|
||||
override val context = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Unit>) {}
|
||||
override fun resumeWith(result: Result<Unit>) {}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -79,7 +79,7 @@ private class ExperimentalContinuationMigration<T>(val continuation: Continuatio
|
||||
|
||||
private class ContinuationMigration<T>(val continuation: ExperimentalContinuation<T>): Continuation<T> {
|
||||
override val context: CoroutineContext = continuation.context.toCoroutineContext()
|
||||
override fun resumeWith(result: SuccessOrFailure<T>) {
|
||||
override fun resumeWith(result: Result<T>) {
|
||||
result
|
||||
.onSuccess { continuation.resume(it) }
|
||||
.onFailure { continuation.resumeWithException(it) }
|
||||
|
||||
@@ -17,5 +17,5 @@ internal expect class SafeContinuation<in T> : Continuation<T> {
|
||||
internal fun getOrThrow(): Any?
|
||||
|
||||
override val context: CoroutineContext
|
||||
override fun resumeWith(result: SuccessOrFailure<T>): Unit
|
||||
override fun resumeWith(result: Result<T>): Unit
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ internal actual constructor(
|
||||
|
||||
private var result: Any? = initialResult
|
||||
|
||||
public actual override fun resumeWith(result: SuccessOrFailure<T>) {
|
||||
public actual override fun resumeWith(result: Result<T>) {
|
||||
val cur = this.result
|
||||
when {
|
||||
cur === UNDECIDED -> {
|
||||
@@ -46,7 +46,7 @@ internal actual constructor(
|
||||
val result = this.result
|
||||
return when {
|
||||
result === RESUMED -> COROUTINE_SUSPENDED // already called continuation, indicate COROUTINE_SUSPENDED upstream
|
||||
result is SuccessOrFailure.Failure -> throw result.exception
|
||||
result is Result.Failure -> throw result.exception
|
||||
else -> result // either COROUTINE_SUSPENDED or data
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ internal abstract class CoroutineImpl(private val resultContinuation: Continuati
|
||||
?: (context[ContinuationInterceptor]?.interceptContinuation(this) ?: this)
|
||||
.also { intercepted_ = it }
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) {
|
||||
override fun resumeWith(result: Result<Any?>) {
|
||||
var current = this
|
||||
var currentResult: Any? = result.getOrNull()
|
||||
var currentException: Throwable? = result.exceptionOrNull()
|
||||
@@ -84,7 +84,7 @@ internal object CompletedContinuation : Continuation<Any?> {
|
||||
override val context: CoroutineContext
|
||||
get() = error("This continuation is already complete")
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) {
|
||||
override fun resumeWith(result: Result<Any?>) {
|
||||
error("This continuation is already complete")
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ internal actual constructor(
|
||||
)
|
||||
}
|
||||
|
||||
public actual override fun resumeWith(result: SuccessOrFailure<T>) {
|
||||
public actual override fun resumeWith(result: Result<T>) {
|
||||
while (true) { // lock-free loop
|
||||
val cur = this.result // atomic read
|
||||
when {
|
||||
@@ -57,7 +57,7 @@ internal actual constructor(
|
||||
}
|
||||
return when {
|
||||
result === RESUMED -> COROUTINE_SUSPENDED // already called continuation, indicate COROUTINE_SUSPENDED upstream
|
||||
result is SuccessOrFailure.Failure -> throw result.exception
|
||||
result is Result.Failure -> throw result.exception
|
||||
else -> result // either COROUTINE_SUSPENDED or data
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ private inline fun <T> createCoroutineFromSuspendFunction(
|
||||
object : RestrictedContinuationImpl(completion as Continuation<Any?>) {
|
||||
private var label = 0
|
||||
|
||||
override fun invokeSuspend(result: SuccessOrFailure<Any?>): Any? =
|
||||
override fun invokeSuspend(result: Result<Any?>): Any? =
|
||||
when (label) {
|
||||
0 -> {
|
||||
label = 1
|
||||
@@ -180,7 +180,7 @@ private inline fun <T> createCoroutineFromSuspendFunction(
|
||||
object : ContinuationImpl(completion as Continuation<Any?>, context) {
|
||||
private var label = 0
|
||||
|
||||
override fun invokeSuspend(result: SuccessOrFailure<Any?>): Any? =
|
||||
override fun invokeSuspend(result: Result<Any?>): Any? =
|
||||
when (label) {
|
||||
0 -> {
|
||||
label = 1
|
||||
|
||||
+6
-6
@@ -18,7 +18,7 @@ internal abstract class BaseContinuationImpl(
|
||||
public val completion: Continuation<Any?>?
|
||||
) : Continuation<Any?>, CoroutineStackFrame, Serializable {
|
||||
// This implementation is final. This fact is used to unroll resumeWith recursion.
|
||||
public final override fun resumeWith(result: SuccessOrFailure<Any?>) {
|
||||
public final override fun resumeWith(result: Result<Any?>) {
|
||||
// Invoke "resume" debug probe only once, even if previous frames are "resumed" in the loop below, too
|
||||
probeCoroutineResumed(this)
|
||||
// This loop unrolls recursion in current.resumeWith(param) to make saner and shorter stack traces on resume
|
||||
@@ -27,13 +27,13 @@ internal abstract class BaseContinuationImpl(
|
||||
while (true) {
|
||||
with(current) {
|
||||
val completion = completion!! // fail fast when trying to resume continuation without completion
|
||||
val outcome: SuccessOrFailure<Any?> =
|
||||
val outcome: Result<Any?> =
|
||||
try {
|
||||
val outcome = invokeSuspend(param)
|
||||
if (outcome === COROUTINE_SUSPENDED) return
|
||||
SuccessOrFailure.success(outcome)
|
||||
Result.success(outcome)
|
||||
} catch (exception: Throwable) {
|
||||
SuccessOrFailure.failure(exception)
|
||||
Result.failure(exception)
|
||||
}
|
||||
releaseIntercepted() // this state machine instance is terminating
|
||||
if (completion is BaseContinuationImpl) {
|
||||
@@ -49,7 +49,7 @@ internal abstract class BaseContinuationImpl(
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract fun invokeSuspend(result: SuccessOrFailure<Any?>): Any?
|
||||
protected abstract fun invokeSuspend(result: Result<Any?>): Any?
|
||||
|
||||
protected open fun releaseIntercepted() {
|
||||
// does nothing here, overridden in ContinuationImpl
|
||||
@@ -124,7 +124,7 @@ internal object CompletedContinuation : Continuation<Any?> {
|
||||
override val context: CoroutineContext
|
||||
get() = error("This continuation is already complete")
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) {
|
||||
override fun resumeWith(result: Result<Any?>) {
|
||||
error("This continuation is already complete")
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,9 @@ private class RunSuspend : Continuation<Unit> {
|
||||
override val context: CoroutineContext
|
||||
get() = EmptyCoroutineContext
|
||||
|
||||
var result: SuccessOrFailure<Unit>? = null
|
||||
var result: Result<Unit>? = null
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<Unit>) = synchronized(this) {
|
||||
override fun resumeWith(result: Result<Unit>) = synchronized(this) {
|
||||
this.result = result
|
||||
(this as Object).notifyAll()
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ private class MyContinuation : BaseContinuationImpl(null) {
|
||||
|
||||
var label = 0
|
||||
|
||||
override fun invokeSuspend(result: SuccessOrFailure<Any?>): Any? = null
|
||||
override fun invokeSuspend(result: Result<Any?>): Any? = null
|
||||
}
|
||||
|
||||
class DebugMetadataTest {
|
||||
|
||||
+6
-6
@@ -7,7 +7,7 @@ package test.kotlin
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
class SuccessOrFailureTest {
|
||||
class ResultTest {
|
||||
@Test
|
||||
fun testRunCatchingSuccess() {
|
||||
val ok = runCatching { "OK" }
|
||||
@@ -22,17 +22,17 @@ class SuccessOrFailureTest {
|
||||
|
||||
@Test
|
||||
fun testConstructedSuccess() {
|
||||
val ok = SuccessOrFailure.success("OK")
|
||||
val ok = Result.success("OK")
|
||||
checkSuccess(ok, "OK", true)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testConstructedFailure() {
|
||||
val fail = SuccessOrFailure.failure<Unit>(IllegalStateException("F"))
|
||||
val fail = Result.failure<Unit>(IllegalStateException("F"))
|
||||
checkFailure(fail, "F", true)
|
||||
}
|
||||
|
||||
private fun <T> checkSuccess(ok: SuccessOrFailure<T>, v: T, topLevel: Boolean = false) {
|
||||
private fun <T> checkSuccess(ok: Result<T>, v: T, topLevel: Boolean = false) {
|
||||
assertTrue(ok.isSuccess)
|
||||
assertFalse(ok.isFailure)
|
||||
assertEquals(v, ok.getOrThrow())
|
||||
@@ -44,7 +44,7 @@ class SuccessOrFailureTest {
|
||||
assertEquals("V:$v", ok.fold({ "V:$it" }, { "EX:$it" }))
|
||||
assertEquals(null, ok.exceptionOrNull())
|
||||
assertEquals(null, ok.fold(onSuccess = { null }, onFailure = { it }))
|
||||
assertEquals(v.toString(), ok.toString())
|
||||
assertEquals("Success($v)", ok.toString())
|
||||
assertEquals(ok, ok)
|
||||
if (topLevel) {
|
||||
checkSuccess(ok.map { 42 }, 42)
|
||||
@@ -62,7 +62,7 @@ class SuccessOrFailureTest {
|
||||
assertEquals(0, fCnt)
|
||||
}
|
||||
|
||||
private fun <T> checkFailure(fail: SuccessOrFailure<T>, msg: String, topLevel: Boolean = false) {
|
||||
private fun <T> checkFailure(fail: Result<T>, msg: String, topLevel: Boolean = false) {
|
||||
assertFalse(fail.isSuccess)
|
||||
assertTrue(fail.isFailure)
|
||||
assertFails { fail.getOrThrow() }
|
||||
@@ -41,7 +41,7 @@ class TestDispatcher(
|
||||
inner class DispatchedContinuation<T>(val delegate: Continuation<T>) : Continuation<T> {
|
||||
override val context: CoroutineContext = delegate.context
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<T>) {
|
||||
override fun resumeWith(result: Result<T>) {
|
||||
executor.execute {
|
||||
delegate.resumeWith(result)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,328 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("UNCHECKED_CAST", "RedundantVisibilityModifier")
|
||||
|
||||
package kotlin
|
||||
|
||||
import kotlin.contracts.*
|
||||
import kotlin.internal.InlineOnly
|
||||
import kotlin.jvm.JvmField
|
||||
|
||||
/**
|
||||
* A discriminated union that encapsulates successful outcome with a value of type [T]
|
||||
* or a failure with an arbitrary [Throwable] exception.
|
||||
*/
|
||||
@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS")
|
||||
public inline class Result<out T> @PublishedApi internal constructor(
|
||||
@PublishedApi
|
||||
internal val value: Any?
|
||||
) : Serializable {
|
||||
// discovery
|
||||
|
||||
/**
|
||||
* Returns `true` if this instance represents successful outcome.
|
||||
* In this case [isFailure] returns `false`.
|
||||
*/
|
||||
public val isSuccess: Boolean get() = value !is Failure
|
||||
|
||||
/**
|
||||
* Returns `true` if this instance represents failed outcome.
|
||||
* In this case [isSuccess] returns `false`.
|
||||
*/
|
||||
public val isFailure: Boolean get() = value is Failure
|
||||
|
||||
// value & exception retrieval
|
||||
|
||||
/**
|
||||
* Returns the encapsulated value if this instance represents [success][Result.isSuccess] or `null`
|
||||
* if it is [failure][Result.isFailure].
|
||||
*
|
||||
* This function is shorthand for `getOrElse { null }` (see [getOrElse]) or
|
||||
* `fold(onSuccess = { it }, onFailure = { null })` (see [fold]).
|
||||
*/
|
||||
public fun getOrNull(): T? =
|
||||
when (value) {
|
||||
is Failure -> null
|
||||
else -> value as T
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the encapsulated exception if this instance represents [failure][isFailure] or `null`
|
||||
* if it is [success][isSuccess].
|
||||
*
|
||||
* This function is shorthand for `fold(onSuccess = { null }, onFailure = { it })` (see [fold]).
|
||||
*/
|
||||
public fun exceptionOrNull(): Throwable? =
|
||||
when (value) {
|
||||
is Failure -> value.exception
|
||||
else -> null
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string `Success(v)` if this instance represents [success][Result.isSuccess]
|
||||
* where `v` is a string representation of the value or a string `Failure(x)` if
|
||||
* it is [failure][isFailure] where `x` is a string representation of the exception.
|
||||
*/
|
||||
public override fun toString(): String =
|
||||
when (value) {
|
||||
is Failure -> value.toString() // "Failure($exception)"
|
||||
else -> "Success($value)"
|
||||
}
|
||||
|
||||
// companion with constructors
|
||||
|
||||
/**
|
||||
* Companion object for [Result] class that contains its constructor functions
|
||||
* [success] and [failure].
|
||||
*/
|
||||
public companion object {
|
||||
/**
|
||||
* Returns an instance that encapsulates the given [value] as successful value.
|
||||
*/
|
||||
@InlineOnly public inline fun <T> success(value: T): Result<T> =
|
||||
Result(value)
|
||||
|
||||
/**
|
||||
* Returns an instance that encapsulates the given [exception] as failure.
|
||||
*/
|
||||
@InlineOnly public inline fun <T> failure(exception: Throwable): Result<T> =
|
||||
Result(createFailure(exception))
|
||||
}
|
||||
|
||||
internal class Failure(
|
||||
@JvmField
|
||||
val exception: Throwable
|
||||
) : Serializable {
|
||||
override fun equals(other: Any?): Boolean = other is Failure && exception == other.exception
|
||||
override fun hashCode(): Int = exception.hashCode()
|
||||
override fun toString(): String = "Failure($exception)"
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of internal marker [Result.Failure] class to
|
||||
* make sure that this class is not exposed in ABI.
|
||||
*/
|
||||
@PublishedApi
|
||||
internal fun createFailure(exception: Throwable): Any =
|
||||
Result.Failure(exception)
|
||||
|
||||
/**
|
||||
* Throws exception if the result is failure. This internal function minimizes
|
||||
* inlined bytecode for [getOrThrow] and makes sure that in the future we can
|
||||
* add some exception-augmenting logic here (if needed).
|
||||
*/
|
||||
@PublishedApi
|
||||
internal fun Result<*>.throwOnFailure() {
|
||||
if (value is Result.Failure) throw value.exception
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls the specified function [block] and returns its encapsulated result if invocation was successful,
|
||||
* catching and encapsulating any thrown exception as a failure.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R> runCatching(block: () -> R): Result<R> {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
return try {
|
||||
Result.success(block())
|
||||
} catch (e: Throwable) {
|
||||
Result.failure(e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls the specified function [block] with `this` value as its receiver and returns its encapsulated result
|
||||
* if invocation was successful, catching and encapsulating any thrown exception as a failure.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <T, R> T.runCatching(block: T.() -> R): Result<R> {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
return try {
|
||||
Result.success(block())
|
||||
} catch (e: Throwable) {
|
||||
Result.failure(e)
|
||||
}
|
||||
}
|
||||
|
||||
// -- extensions ---
|
||||
|
||||
/**
|
||||
* Returns the encapsulated value if this instance represents [success][Result.isSuccess] or throws the encapsulated exception
|
||||
* if it is [failure][Result.isFailure].
|
||||
*
|
||||
* This function is shorthand for `getOrElse { throw it }` (see [getOrElse]).
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <T> Result<T>.getOrThrow(): T {
|
||||
throwOnFailure()
|
||||
return value as T
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the
|
||||
* result of [onFailure] function for encapsulated exception if it is [failure][Result.isFailure].
|
||||
*
|
||||
* Note, that an exception thrown by [onFailure] function is rethrown by this function.
|
||||
*
|
||||
* This function is shorthand for `fold(onSuccess = { it }, onFailure = onFailure)` (see [fold]).
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R, T : R> Result<T>.getOrElse(onFailure: (exception: Throwable) -> R): R {
|
||||
contract {
|
||||
callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
return when(val exception = exceptionOrNull()) {
|
||||
null -> value as T
|
||||
else -> onFailure(exception)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the
|
||||
* [defaultValue] if it is [failure][Result.isFailure].
|
||||
*
|
||||
* This function is shorthand for `getOrElse { defaultValue }` (see [getOrElse]).
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R, T : R> Result<T>.getOrDefault(defaultValue: R): R {
|
||||
if (isFailure) return defaultValue
|
||||
return value as T
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the the result of [onSuccess] for encapsulated value if this instance represents [success][Result.isSuccess]
|
||||
* or the result of [onFailure] function for encapsulated exception if it is [failure][Result.isFailure].
|
||||
*
|
||||
* Note, that an exception thrown by [onSuccess] or by [onFailure] function is rethrown by this function.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R, T> Result<T>.fold(
|
||||
onSuccess: (value: T) -> R,
|
||||
onFailure: (exception: Throwable) -> R
|
||||
): R {
|
||||
contract {
|
||||
callsInPlace(onSuccess, InvocationKind.AT_MOST_ONCE)
|
||||
callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
return when(val exception = exceptionOrNull()) {
|
||||
null -> onSuccess(value as T)
|
||||
else -> onFailure(exception)
|
||||
}
|
||||
}
|
||||
|
||||
// transformation
|
||||
|
||||
/**
|
||||
* Returns the encapsulated result of the given [transform] function applied to encapsulated value
|
||||
* if this instance represents [success][Result.isSuccess] or the
|
||||
* original encapsulated exception if it is [failure][Result.isFailure].
|
||||
*
|
||||
* Note, that an exception thrown by [transform] function is rethrown by this function.
|
||||
* See [mapCatching] for an alternative that encapsulates exceptions.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R, T> Result<T>.map(transform: (value: T) -> R): Result<R> {
|
||||
contract {
|
||||
callsInPlace(transform, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
return when(val exception = exceptionOrNull()) {
|
||||
null -> Result.success(transform(value as T))
|
||||
else -> Result(value)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the encapsulated result of the given [transform] function applied to encapsulated value
|
||||
* if this instance represents [success][Result.isSuccess] or the
|
||||
* original encapsulated exception if it is [failure][Result.isFailure].
|
||||
*
|
||||
* Any exception thrown by [transform] function is caught, encapsulated as a failure and returned by this function.
|
||||
* See [map] for an alternative that rethrows exceptions.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R, T> Result<T>.mapCatching(transform: (value: T) -> R): Result<R> {
|
||||
contract {
|
||||
callsInPlace(transform, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
return when(val exception = exceptionOrNull()) {
|
||||
null -> runCatching { transform(value as T) }
|
||||
else -> Result(value)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the encapsulated result of the given [transform] function applied to encapsulated exception
|
||||
* if this instance represents [failure][Result.isFailure] or the
|
||||
* original encapsulated value if it is [success][Result.isSuccess].
|
||||
*
|
||||
* Note, that an exception thrown by [transform] function is rethrown by this function.
|
||||
* See [recoverCatching] for an alternative that encapsulates exceptions.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R, T: R> Result<T>.recover(transform: (exception: Throwable) -> R): Result<R> {
|
||||
contract {
|
||||
callsInPlace(transform, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
return when(val exception = exceptionOrNull()) {
|
||||
null -> this
|
||||
else -> Result.success(transform(exception))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the encapsulated result of the given [transform] function applied to encapsulated exception
|
||||
* if this instance represents [failure][Result.isFailure] or the
|
||||
* original encapsulated value if it is [success][Result.isSuccess].
|
||||
*
|
||||
* Any exception thrown by [transform] function is caught, encapsulated as a failure and returned by this function.
|
||||
* See [recover] for an alternative that rethrows exceptions.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <R, T: R> Result<T>.recoverCatching(transform: (exception: Throwable) -> R): Result<R> {
|
||||
contract {
|
||||
callsInPlace(transform, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
val value = value // workaround for inline classes BE bug
|
||||
return when(val exception = exceptionOrNull()) {
|
||||
null -> this
|
||||
else -> runCatching { transform(exception) }
|
||||
}
|
||||
}
|
||||
|
||||
// "peek" onto value/exception and pipe
|
||||
|
||||
/**
|
||||
* Performs the given [action] on encapsulated value if this instance represents [success][Result.isSuccess].
|
||||
* Returns the original `Result` unchanged.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <T> Result<T>.onFailure(action: (exception: Throwable) -> Unit): Result<T> {
|
||||
contract {
|
||||
callsInPlace(action, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
exceptionOrNull()?.let { action(it) }
|
||||
return this
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the given [action] on encapsulated exception if this instance represents [failure][Result.isFailure].
|
||||
* Returns the original `Result` unchanged.
|
||||
*/
|
||||
@InlineOnly
|
||||
public inline fun <T> Result<T>.onSuccess(action: (value: T) -> Unit): Result<T> {
|
||||
contract {
|
||||
callsInPlace(action, InvocationKind.AT_MOST_ONCE)
|
||||
}
|
||||
if (isSuccess) action(value as T)
|
||||
return this
|
||||
}
|
||||
|
||||
// -------------------
|
||||
@@ -7,6 +7,7 @@ package kotlin.coroutines
|
||||
|
||||
import kotlin.coroutines.intrinsics.*
|
||||
import kotlin.internal.InlineOnly
|
||||
import kotlin.jvm.JvmName
|
||||
|
||||
/**
|
||||
* Interface representing a continuation after a suspension point that returns value of type `T`.
|
||||
@@ -23,7 +24,7 @@ public interface Continuation<in T> {
|
||||
* Resumes the execution of the corresponding coroutine passing successful or failed [result] as the
|
||||
* return value of the last suspension point.
|
||||
*/
|
||||
public fun resumeWith(result: SuccessOrFailure<T>)
|
||||
public fun resumeWith(result: Result<T>)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -41,7 +42,7 @@ public annotation class RestrictsSuspension
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@InlineOnly public inline fun <T> Continuation<T>.resume(value: T): Unit =
|
||||
resumeWith(SuccessOrFailure.success(value))
|
||||
resumeWith(Result.success(value))
|
||||
|
||||
/**
|
||||
* Resumes the execution of the corresponding coroutine so that the [exception] is re-thrown right after the
|
||||
@@ -49,7 +50,7 @@ public annotation class RestrictsSuspension
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@InlineOnly public inline fun <T> Continuation<T>.resumeWithException(exception: Throwable): Unit =
|
||||
resumeWith(SuccessOrFailure.failure(exception))
|
||||
resumeWith(Result.failure(exception))
|
||||
|
||||
|
||||
/**
|
||||
@@ -58,13 +59,13 @@ public annotation class RestrictsSuspension
|
||||
@SinceKotlin("1.3")
|
||||
@InlineOnly public inline fun <T> Continuation(
|
||||
context: CoroutineContext,
|
||||
crossinline resumeWith: (SuccessOrFailure<T>) -> Unit
|
||||
crossinline resumeWith: (Result<T>) -> Unit
|
||||
): Continuation<T> =
|
||||
object : Continuation<T> {
|
||||
override val context: CoroutineContext
|
||||
get() = context
|
||||
|
||||
override fun resumeWith(result: SuccessOrFailure<T>) =
|
||||
override fun resumeWith(result: Result<T>) =
|
||||
resumeWith(result)
|
||||
}
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@ private class SequenceBuilderIterator<T> : SequenceBuilder<T>(), Iterator<T>, Co
|
||||
}
|
||||
|
||||
// Completion continuation implementation
|
||||
override fun resumeWith(result: SuccessOrFailure<Unit>) {
|
||||
override fun resumeWith(result: Result<Unit>) {
|
||||
result.getOrThrow() // just rethrow exception if it is there
|
||||
state = State_Done
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ class CoroutinesReferenceValuesTest {
|
||||
bad.startCoroutine(object : Continuation<BadClass> {
|
||||
override val context: CoroutineContext = EmptyCoroutineContext
|
||||
|
||||
override fun resumeWith(result_: SuccessOrFailure<BadClass>) {
|
||||
override fun resumeWith(result_: Result<BadClass>) {
|
||||
assertTrue(result == null)
|
||||
result = result_.getOrThrow()
|
||||
}
|
||||
|
||||
+347
-319
@@ -141,27 +141,53 @@ public abstract interface annotation class kotlin/ReplaceWith : java/lang/annota
|
||||
public abstract fun imports ()[Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class kotlin/Result : java/io/Serializable {
|
||||
public static final field Companion Lkotlin/Result$Companion;
|
||||
public static final synthetic fun box-impl (Ljava/lang/Object;)Lkotlin/Result;
|
||||
public static fun constructor-impl (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals-impl (Ljava/lang/Object;Ljava/lang/Object;)Z
|
||||
public static final fun equals-impl0 (Ljava/lang/Object;Ljava/lang/Object;)Z
|
||||
public static final fun exceptionOrNull-impl (Ljava/lang/Object;)Ljava/lang/Throwable;
|
||||
public static final fun getOrNull-impl (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode-impl (Ljava/lang/Object;)I
|
||||
public static final fun isFailure-impl (Ljava/lang/Object;)Z
|
||||
public static final fun isSuccess-impl (Ljava/lang/Object;)Z
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString-impl (Ljava/lang/Object;)Ljava/lang/String;
|
||||
public final synthetic fun unbox-impl ()Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class kotlin/Result$Companion {
|
||||
}
|
||||
|
||||
public final class kotlin/ResultKt {
|
||||
public static final fun createFailure (Ljava/lang/Throwable;)Ljava/lang/Object;
|
||||
public static final fun throwOnFailure (Ljava/lang/Object;)V
|
||||
}
|
||||
|
||||
public abstract interface annotation class kotlin/SinceKotlin : java/lang/annotation/Annotation {
|
||||
public abstract fun version ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class kotlin/SuccessOrFailure : java/io/Serializable {
|
||||
public static final field Companion Lkotlin/SuccessOrFailure$Companion;
|
||||
public synthetic fun <init> (Ljava/lang/Object;)V
|
||||
public static final fun box (Ljava/lang/Object;)Lkotlin/SuccessOrFailure;
|
||||
public static fun constructor (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public static final synthetic fun box-impl (Ljava/lang/Object;)Lkotlin/SuccessOrFailure;
|
||||
public static fun constructor-impl (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals (Ljava/lang/Object;Ljava/lang/Object;)Z
|
||||
public static final fun exceptionOrNull (Ljava/lang/Object;)Ljava/lang/Throwable;
|
||||
public static final fun getOrNull (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public static final fun getOrThrow (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public static fun equals-impl (Ljava/lang/Object;Ljava/lang/Object;)Z
|
||||
public static final fun equals-impl0 (Ljava/lang/Object;Ljava/lang/Object;)Z
|
||||
public static final fun exceptionOrNull-impl (Ljava/lang/Object;)Ljava/lang/Throwable;
|
||||
public static final fun getOrNull-impl (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public static final fun getOrThrow-impl (Ljava/lang/Object;)Ljava/lang/Object;
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode (Ljava/lang/Object;)I
|
||||
public static final fun isFailure (Ljava/lang/Object;)Z
|
||||
public static final fun isSuccess (Ljava/lang/Object;)Z
|
||||
public static fun hashCode-impl (Ljava/lang/Object;)I
|
||||
public static final fun isFailure-impl (Ljava/lang/Object;)Z
|
||||
public static final fun isSuccess-impl (Ljava/lang/Object;)Z
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString (Ljava/lang/Object;)Ljava/lang/String;
|
||||
public final fun unbox ()Ljava/lang/Object;
|
||||
public static fun toString-impl (Ljava/lang/Object;)Ljava/lang/String;
|
||||
public final synthetic fun unbox-impl ()Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class kotlin/SuccessOrFailure$Companion {
|
||||
@@ -175,10 +201,6 @@ public final class kotlin/SuccessOrFailure$Failure : java/io/Serializable {
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class kotlin/SuccessOrFailureKt {
|
||||
public static final fun getOrDefault (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public abstract interface annotation class kotlin/Suppress : java/lang/annotation/Annotation {
|
||||
public abstract fun names ()[Ljava/lang/String;
|
||||
}
|
||||
@@ -215,97 +237,98 @@ public final class kotlin/UByte : java/lang/Comparable {
|
||||
public static final field MIN_VALUE B
|
||||
public static final field SIZE_BITS I
|
||||
public static final field SIZE_BYTES I
|
||||
public static final fun and-d0xlk1d1 (BB)B
|
||||
public static final fun box (B)Lkotlin/UByte;
|
||||
public static final fun and-7apg3OU (BB)B
|
||||
public static final synthetic fun box-impl (B)Lkotlin/UByte;
|
||||
public synthetic fun compareTo (Ljava/lang/Object;)I
|
||||
public static final fun compareTo-4n0qz0s4 (BJ)I
|
||||
public static final fun compareTo-4wtlwgkb (BI)I
|
||||
public static final fun compareTo-av578izg (BS)I
|
||||
public fun compareTo-d0xlk1d1 (B)I
|
||||
public static fun compareTo-d0xlk1d1 (BB)I
|
||||
public static fun constructor (B)B
|
||||
public static final fun dec (B)B
|
||||
public static final fun div-4n0qz0s4 (BJ)J
|
||||
public static final fun div-4wtlwgkb (BI)I
|
||||
public static final fun div-av578izg (BS)I
|
||||
public static final fun div-d0xlk1d1 (BB)I
|
||||
public static fun equals (BLjava/lang/Object;)Z
|
||||
public fun compareTo-7apg3OU (B)I
|
||||
public static fun compareTo-7apg3OU (BB)I
|
||||
public static final fun compareTo-VKZWuLQ (BJ)I
|
||||
public static final fun compareTo-WZ4Q5Ns (BI)I
|
||||
public static final fun compareTo-xj2QHRw (BS)I
|
||||
public static fun constructor-impl (B)B
|
||||
public static final fun dec-impl (B)B
|
||||
public static final fun div-7apg3OU (BB)I
|
||||
public static final fun div-VKZWuLQ (BJ)J
|
||||
public static final fun div-WZ4Q5Ns (BI)I
|
||||
public static final fun div-xj2QHRw (BS)I
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals-impl (BLjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 (BB)Z
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode (B)I
|
||||
public static final fun inc (B)B
|
||||
public static final fun inv (B)B
|
||||
public static final fun minus-4n0qz0s4 (BJ)J
|
||||
public static final fun minus-4wtlwgkb (BI)I
|
||||
public static final fun minus-av578izg (BS)I
|
||||
public static final fun minus-d0xlk1d1 (BB)I
|
||||
public static final fun or-d0xlk1d1 (BB)B
|
||||
public static final fun plus-4n0qz0s4 (BJ)J
|
||||
public static final fun plus-4wtlwgkb (BI)I
|
||||
public static final fun plus-av578izg (BS)I
|
||||
public static final fun plus-d0xlk1d1 (BB)I
|
||||
public static final fun rangeTo-d0xlk1d1 (BB)Lkotlin/ranges/UIntRange;
|
||||
public static final fun rem-4n0qz0s4 (BJ)J
|
||||
public static final fun rem-4wtlwgkb (BI)I
|
||||
public static final fun rem-av578izg (BS)I
|
||||
public static final fun rem-d0xlk1d1 (BB)I
|
||||
public static final fun times-4n0qz0s4 (BJ)J
|
||||
public static final fun times-4wtlwgkb (BI)I
|
||||
public static final fun times-av578izg (BS)I
|
||||
public static final fun times-d0xlk1d1 (BB)I
|
||||
public static final fun toByte (B)B
|
||||
public static final fun toInt (B)I
|
||||
public static final fun toLong (B)J
|
||||
public static final fun toShort (B)S
|
||||
public static fun hashCode-impl (B)I
|
||||
public static final fun inc-impl (B)B
|
||||
public static final fun inv-impl (B)B
|
||||
public static final fun minus-7apg3OU (BB)I
|
||||
public static final fun minus-VKZWuLQ (BJ)J
|
||||
public static final fun minus-WZ4Q5Ns (BI)I
|
||||
public static final fun minus-xj2QHRw (BS)I
|
||||
public static final fun or-7apg3OU (BB)B
|
||||
public static final fun plus-7apg3OU (BB)I
|
||||
public static final fun plus-VKZWuLQ (BJ)J
|
||||
public static final fun plus-WZ4Q5Ns (BI)I
|
||||
public static final fun plus-xj2QHRw (BS)I
|
||||
public static final fun rangeTo-7apg3OU (BB)Lkotlin/ranges/UIntRange;
|
||||
public static final fun rem-7apg3OU (BB)I
|
||||
public static final fun rem-VKZWuLQ (BJ)J
|
||||
public static final fun rem-WZ4Q5Ns (BI)I
|
||||
public static final fun rem-xj2QHRw (BS)I
|
||||
public static final fun times-7apg3OU (BB)I
|
||||
public static final fun times-VKZWuLQ (BJ)J
|
||||
public static final fun times-WZ4Q5Ns (BI)I
|
||||
public static final fun times-xj2QHRw (BS)I
|
||||
public static final fun toByte-impl (B)B
|
||||
public static final fun toInt-impl (B)I
|
||||
public static final fun toLong-impl (B)J
|
||||
public static final fun toShort-impl (B)S
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString (B)Ljava/lang/String;
|
||||
public static final fun toUByte (B)B
|
||||
public static final fun toUInt (B)I
|
||||
public static final fun toULong (B)J
|
||||
public static final fun toUShort (B)S
|
||||
public final fun unbox ()B
|
||||
public static final fun xor-d0xlk1d1 (BB)B
|
||||
public static fun toString-impl (B)Ljava/lang/String;
|
||||
public static final fun toUByte-impl (B)B
|
||||
public static final fun toUInt-impl (B)I
|
||||
public static final fun toULong-impl (B)J
|
||||
public static final fun toUShort-impl (B)S
|
||||
public final synthetic fun unbox-impl ()B
|
||||
public static final fun xor-7apg3OU (BB)B
|
||||
}
|
||||
|
||||
public final class kotlin/UByte$Companion {
|
||||
}
|
||||
|
||||
public final class kotlin/UByteArray : java/util/Collection, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
public synthetic fun <init> ([B)V
|
||||
public synthetic fun add (Ljava/lang/Object;)Z
|
||||
public fun add-d0xlk1d1 (B)Z
|
||||
public fun add-7apg3OU (B)Z
|
||||
public fun addAll (Ljava/util/Collection;)Z
|
||||
public static final fun box ([B)Lkotlin/UByteArray;
|
||||
public static final synthetic fun box-impl ([B)Lkotlin/UByteArray;
|
||||
public fun clear ()V
|
||||
public static fun constructor (I)[B
|
||||
public static fun constructor ([B)[B
|
||||
public static fun constructor-impl (I)[B
|
||||
public static fun constructor-impl ([B)[B
|
||||
public final fun contains (Ljava/lang/Object;)Z
|
||||
public fun contains-d0xlk1d1 (B)Z
|
||||
public static fun contains-d0xlk1d1 ([BB)Z
|
||||
public fun contains-7apg3OU (B)Z
|
||||
public static fun contains-7apg3OU ([BB)Z
|
||||
public fun containsAll (Ljava/util/Collection;)Z
|
||||
public static fun containsAll ([BLjava/util/Collection;)Z
|
||||
public static fun containsAll-impl ([BLjava/util/Collection;)Z
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals ([BLjava/lang/Object;)Z
|
||||
public static final fun get ([BI)B
|
||||
public static fun equals-impl ([BLjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 ([B[B)Z
|
||||
public static final fun get-impl ([BI)B
|
||||
public fun getSize ()I
|
||||
public static fun getSize ([B)I
|
||||
public static fun getSize-impl ([B)I
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode ([B)I
|
||||
public static fun hashCode-impl ([B)I
|
||||
public fun isEmpty ()Z
|
||||
public static fun isEmpty ([B)Z
|
||||
public static fun isEmpty-impl ([B)Z
|
||||
public synthetic fun iterator ()Ljava/util/Iterator;
|
||||
public fun iterator ()Lkotlin/collections/UByteIterator;
|
||||
public static fun iterator ([B)Lkotlin/collections/UByteIterator;
|
||||
public static fun iterator-impl ([B)Lkotlin/collections/UByteIterator;
|
||||
public fun remove (Ljava/lang/Object;)Z
|
||||
public fun removeAll (Ljava/util/Collection;)Z
|
||||
public fun retainAll (Ljava/util/Collection;)Z
|
||||
public static final fun set-4rhu7tbx ([BIB)V
|
||||
public static final fun set-VurrAj0 ([BIB)V
|
||||
public final fun size ()I
|
||||
public fun toArray ()[Ljava/lang/Object;
|
||||
public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString ([B)Ljava/lang/String;
|
||||
public final fun unbox ()[B
|
||||
public static fun toString-impl ([B)Ljava/lang/String;
|
||||
public final synthetic fun unbox-impl ()[B
|
||||
}
|
||||
|
||||
public final class kotlin/UByteKt {
|
||||
@@ -321,99 +344,100 @@ public final class kotlin/UInt : java/lang/Comparable {
|
||||
public static final field MIN_VALUE I
|
||||
public static final field SIZE_BITS I
|
||||
public static final field SIZE_BYTES I
|
||||
public static final fun and-4wtlwgkb (II)I
|
||||
public static final fun box (I)Lkotlin/UInt;
|
||||
public static final fun and-WZ4Q5Ns (II)I
|
||||
public static final synthetic fun box-impl (I)Lkotlin/UInt;
|
||||
public synthetic fun compareTo (Ljava/lang/Object;)I
|
||||
public static final fun compareTo-4n0qz0s4 (IJ)I
|
||||
public fun compareTo-4wtlwgkb (I)I
|
||||
public static fun compareTo-4wtlwgkb (II)I
|
||||
public static final fun compareTo-av578izg (IS)I
|
||||
public static final fun compareTo-d0xlk1d1 (IB)I
|
||||
public static fun constructor (I)I
|
||||
public static final fun dec (I)I
|
||||
public static final fun div-4n0qz0s4 (IJ)J
|
||||
public static final fun div-4wtlwgkb (II)I
|
||||
public static final fun div-av578izg (IS)I
|
||||
public static final fun div-d0xlk1d1 (IB)I
|
||||
public static fun equals (ILjava/lang/Object;)Z
|
||||
public static final fun compareTo-7apg3OU (IB)I
|
||||
public static final fun compareTo-VKZWuLQ (IJ)I
|
||||
public fun compareTo-WZ4Q5Ns (I)I
|
||||
public static fun compareTo-WZ4Q5Ns (II)I
|
||||
public static final fun compareTo-xj2QHRw (IS)I
|
||||
public static fun constructor-impl (I)I
|
||||
public static final fun dec-impl (I)I
|
||||
public static final fun div-7apg3OU (IB)I
|
||||
public static final fun div-VKZWuLQ (IJ)J
|
||||
public static final fun div-WZ4Q5Ns (II)I
|
||||
public static final fun div-xj2QHRw (IS)I
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals-impl (ILjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 (II)Z
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode (I)I
|
||||
public static final fun inc (I)I
|
||||
public static final fun inv (I)I
|
||||
public static final fun minus-4n0qz0s4 (IJ)J
|
||||
public static final fun minus-4wtlwgkb (II)I
|
||||
public static final fun minus-av578izg (IS)I
|
||||
public static final fun minus-d0xlk1d1 (IB)I
|
||||
public static final fun or-4wtlwgkb (II)I
|
||||
public static final fun plus-4n0qz0s4 (IJ)J
|
||||
public static final fun plus-4wtlwgkb (II)I
|
||||
public static final fun plus-av578izg (IS)I
|
||||
public static final fun plus-d0xlk1d1 (IB)I
|
||||
public static final fun rangeTo-4wtlwgkb (II)Lkotlin/ranges/UIntRange;
|
||||
public static final fun rem-4n0qz0s4 (IJ)J
|
||||
public static final fun rem-4wtlwgkb (II)I
|
||||
public static final fun rem-av578izg (IS)I
|
||||
public static final fun rem-d0xlk1d1 (IB)I
|
||||
public static final fun shl (II)I
|
||||
public static final fun shr (II)I
|
||||
public static final fun times-4n0qz0s4 (IJ)J
|
||||
public static final fun times-4wtlwgkb (II)I
|
||||
public static final fun times-av578izg (IS)I
|
||||
public static final fun times-d0xlk1d1 (IB)I
|
||||
public static final fun toByte (I)B
|
||||
public static final fun toInt (I)I
|
||||
public static final fun toLong (I)J
|
||||
public static final fun toShort (I)S
|
||||
public static fun hashCode-impl (I)I
|
||||
public static final fun inc-impl (I)I
|
||||
public static final fun inv-impl (I)I
|
||||
public static final fun minus-7apg3OU (IB)I
|
||||
public static final fun minus-VKZWuLQ (IJ)J
|
||||
public static final fun minus-WZ4Q5Ns (II)I
|
||||
public static final fun minus-xj2QHRw (IS)I
|
||||
public static final fun or-WZ4Q5Ns (II)I
|
||||
public static final fun plus-7apg3OU (IB)I
|
||||
public static final fun plus-VKZWuLQ (IJ)J
|
||||
public static final fun plus-WZ4Q5Ns (II)I
|
||||
public static final fun plus-xj2QHRw (IS)I
|
||||
public static final fun rangeTo-WZ4Q5Ns (II)Lkotlin/ranges/UIntRange;
|
||||
public static final fun rem-7apg3OU (IB)I
|
||||
public static final fun rem-VKZWuLQ (IJ)J
|
||||
public static final fun rem-WZ4Q5Ns (II)I
|
||||
public static final fun rem-xj2QHRw (IS)I
|
||||
public static final fun shl-impl (II)I
|
||||
public static final fun shr-impl (II)I
|
||||
public static final fun times-7apg3OU (IB)I
|
||||
public static final fun times-VKZWuLQ (IJ)J
|
||||
public static final fun times-WZ4Q5Ns (II)I
|
||||
public static final fun times-xj2QHRw (IS)I
|
||||
public static final fun toByte-impl (I)B
|
||||
public static final fun toInt-impl (I)I
|
||||
public static final fun toLong-impl (I)J
|
||||
public static final fun toShort-impl (I)S
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString (I)Ljava/lang/String;
|
||||
public static final fun toUByte (I)B
|
||||
public static final fun toUInt (I)I
|
||||
public static final fun toULong (I)J
|
||||
public static final fun toUShort (I)S
|
||||
public final fun unbox ()I
|
||||
public static final fun xor-4wtlwgkb (II)I
|
||||
public static fun toString-impl (I)Ljava/lang/String;
|
||||
public static final fun toUByte-impl (I)B
|
||||
public static final fun toUInt-impl (I)I
|
||||
public static final fun toULong-impl (I)J
|
||||
public static final fun toUShort-impl (I)S
|
||||
public final synthetic fun unbox-impl ()I
|
||||
public static final fun xor-WZ4Q5Ns (II)I
|
||||
}
|
||||
|
||||
public final class kotlin/UInt$Companion {
|
||||
}
|
||||
|
||||
public final class kotlin/UIntArray : java/util/Collection, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
public synthetic fun <init> ([I)V
|
||||
public synthetic fun add (Ljava/lang/Object;)Z
|
||||
public fun add-4wtlwgkb (I)Z
|
||||
public fun add-WZ4Q5Ns (I)Z
|
||||
public fun addAll (Ljava/util/Collection;)Z
|
||||
public static final fun box ([I)Lkotlin/UIntArray;
|
||||
public static final synthetic fun box-impl ([I)Lkotlin/UIntArray;
|
||||
public fun clear ()V
|
||||
public static fun constructor (I)[I
|
||||
public static fun constructor ([I)[I
|
||||
public static fun constructor-impl (I)[I
|
||||
public static fun constructor-impl ([I)[I
|
||||
public final fun contains (Ljava/lang/Object;)Z
|
||||
public fun contains-4wtlwgkb (I)Z
|
||||
public static fun contains-4wtlwgkb ([II)Z
|
||||
public fun contains-WZ4Q5Ns (I)Z
|
||||
public static fun contains-WZ4Q5Ns ([II)Z
|
||||
public fun containsAll (Ljava/util/Collection;)Z
|
||||
public static fun containsAll ([ILjava/util/Collection;)Z
|
||||
public static fun containsAll-impl ([ILjava/util/Collection;)Z
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals ([ILjava/lang/Object;)Z
|
||||
public static final fun get ([II)I
|
||||
public static fun equals-impl ([ILjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 ([I[I)Z
|
||||
public static final fun get-impl ([II)I
|
||||
public fun getSize ()I
|
||||
public static fun getSize ([I)I
|
||||
public static fun getSize-impl ([I)I
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode ([I)I
|
||||
public static fun hashCode-impl ([I)I
|
||||
public fun isEmpty ()Z
|
||||
public static fun isEmpty ([I)Z
|
||||
public static fun isEmpty-impl ([I)Z
|
||||
public synthetic fun iterator ()Ljava/util/Iterator;
|
||||
public fun iterator ()Lkotlin/collections/UIntIterator;
|
||||
public static fun iterator ([I)Lkotlin/collections/UIntIterator;
|
||||
public static fun iterator-impl ([I)Lkotlin/collections/UIntIterator;
|
||||
public fun remove (Ljava/lang/Object;)Z
|
||||
public fun removeAll (Ljava/util/Collection;)Z
|
||||
public fun retainAll (Ljava/util/Collection;)Z
|
||||
public static final fun set-4olz5s4v ([III)V
|
||||
public static final fun set-VXSXFK8 ([III)V
|
||||
public final fun size ()I
|
||||
public fun toArray ()[Ljava/lang/Object;
|
||||
public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString ([I)Ljava/lang/String;
|
||||
public final fun unbox ()[I
|
||||
public static fun toString-impl ([I)Ljava/lang/String;
|
||||
public final synthetic fun unbox-impl ()[I
|
||||
}
|
||||
|
||||
public final class kotlin/UIntKt {
|
||||
@@ -429,99 +453,100 @@ public final class kotlin/ULong : java/lang/Comparable {
|
||||
public static final field MIN_VALUE J
|
||||
public static final field SIZE_BITS I
|
||||
public static final field SIZE_BYTES I
|
||||
public static final fun and-4n0qz0s4 (JJ)J
|
||||
public static final fun box (J)Lkotlin/ULong;
|
||||
public static final fun and-VKZWuLQ (JJ)J
|
||||
public static final synthetic fun box-impl (J)Lkotlin/ULong;
|
||||
public synthetic fun compareTo (Ljava/lang/Object;)I
|
||||
public fun compareTo-4n0qz0s4 (J)I
|
||||
public static fun compareTo-4n0qz0s4 (JJ)I
|
||||
public static final fun compareTo-4wtlwgkb (JI)I
|
||||
public static final fun compareTo-av578izg (JS)I
|
||||
public static final fun compareTo-d0xlk1d1 (JB)I
|
||||
public static fun constructor (J)J
|
||||
public static final fun dec (J)J
|
||||
public static final fun div-4n0qz0s4 (JJ)J
|
||||
public static final fun div-4wtlwgkb (JI)J
|
||||
public static final fun div-av578izg (JS)J
|
||||
public static final fun div-d0xlk1d1 (JB)J
|
||||
public static fun equals (JLjava/lang/Object;)Z
|
||||
public static final fun compareTo-7apg3OU (JB)I
|
||||
public fun compareTo-VKZWuLQ (J)I
|
||||
public static fun compareTo-VKZWuLQ (JJ)I
|
||||
public static final fun compareTo-WZ4Q5Ns (JI)I
|
||||
public static final fun compareTo-xj2QHRw (JS)I
|
||||
public static fun constructor-impl (J)J
|
||||
public static final fun dec-impl (J)J
|
||||
public static final fun div-7apg3OU (JB)J
|
||||
public static final fun div-VKZWuLQ (JJ)J
|
||||
public static final fun div-WZ4Q5Ns (JI)J
|
||||
public static final fun div-xj2QHRw (JS)J
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals-impl (JLjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 (JJ)Z
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode (J)I
|
||||
public static final fun inc (J)J
|
||||
public static final fun inv (J)J
|
||||
public static final fun minus-4n0qz0s4 (JJ)J
|
||||
public static final fun minus-4wtlwgkb (JI)J
|
||||
public static final fun minus-av578izg (JS)J
|
||||
public static final fun minus-d0xlk1d1 (JB)J
|
||||
public static final fun or-4n0qz0s4 (JJ)J
|
||||
public static final fun plus-4n0qz0s4 (JJ)J
|
||||
public static final fun plus-4wtlwgkb (JI)J
|
||||
public static final fun plus-av578izg (JS)J
|
||||
public static final fun plus-d0xlk1d1 (JB)J
|
||||
public static final fun rangeTo-4n0qz0s4 (JJ)Lkotlin/ranges/ULongRange;
|
||||
public static final fun rem-4n0qz0s4 (JJ)J
|
||||
public static final fun rem-4wtlwgkb (JI)J
|
||||
public static final fun rem-av578izg (JS)J
|
||||
public static final fun rem-d0xlk1d1 (JB)J
|
||||
public static final fun shl (JI)J
|
||||
public static final fun shr (JI)J
|
||||
public static final fun times-4n0qz0s4 (JJ)J
|
||||
public static final fun times-4wtlwgkb (JI)J
|
||||
public static final fun times-av578izg (JS)J
|
||||
public static final fun times-d0xlk1d1 (JB)J
|
||||
public static final fun toByte (J)B
|
||||
public static final fun toInt (J)I
|
||||
public static final fun toLong (J)J
|
||||
public static final fun toShort (J)S
|
||||
public static fun hashCode-impl (J)I
|
||||
public static final fun inc-impl (J)J
|
||||
public static final fun inv-impl (J)J
|
||||
public static final fun minus-7apg3OU (JB)J
|
||||
public static final fun minus-VKZWuLQ (JJ)J
|
||||
public static final fun minus-WZ4Q5Ns (JI)J
|
||||
public static final fun minus-xj2QHRw (JS)J
|
||||
public static final fun or-VKZWuLQ (JJ)J
|
||||
public static final fun plus-7apg3OU (JB)J
|
||||
public static final fun plus-VKZWuLQ (JJ)J
|
||||
public static final fun plus-WZ4Q5Ns (JI)J
|
||||
public static final fun plus-xj2QHRw (JS)J
|
||||
public static final fun rangeTo-VKZWuLQ (JJ)Lkotlin/ranges/ULongRange;
|
||||
public static final fun rem-7apg3OU (JB)J
|
||||
public static final fun rem-VKZWuLQ (JJ)J
|
||||
public static final fun rem-WZ4Q5Ns (JI)J
|
||||
public static final fun rem-xj2QHRw (JS)J
|
||||
public static final fun shl-impl (JI)J
|
||||
public static final fun shr-impl (JI)J
|
||||
public static final fun times-7apg3OU (JB)J
|
||||
public static final fun times-VKZWuLQ (JJ)J
|
||||
public static final fun times-WZ4Q5Ns (JI)J
|
||||
public static final fun times-xj2QHRw (JS)J
|
||||
public static final fun toByte-impl (J)B
|
||||
public static final fun toInt-impl (J)I
|
||||
public static final fun toLong-impl (J)J
|
||||
public static final fun toShort-impl (J)S
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString (J)Ljava/lang/String;
|
||||
public static final fun toUByte (J)B
|
||||
public static final fun toUInt (J)I
|
||||
public static final fun toULong (J)J
|
||||
public static final fun toUShort (J)S
|
||||
public final fun unbox ()J
|
||||
public static final fun xor-4n0qz0s4 (JJ)J
|
||||
public static fun toString-impl (J)Ljava/lang/String;
|
||||
public static final fun toUByte-impl (J)B
|
||||
public static final fun toUInt-impl (J)I
|
||||
public static final fun toULong-impl (J)J
|
||||
public static final fun toUShort-impl (J)S
|
||||
public final synthetic fun unbox-impl ()J
|
||||
public static final fun xor-VKZWuLQ (JJ)J
|
||||
}
|
||||
|
||||
public final class kotlin/ULong$Companion {
|
||||
}
|
||||
|
||||
public final class kotlin/ULongArray : java/util/Collection, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
public synthetic fun <init> ([J)V
|
||||
public synthetic fun add (Ljava/lang/Object;)Z
|
||||
public fun add-4n0qz0s4 (J)Z
|
||||
public fun add-VKZWuLQ (J)Z
|
||||
public fun addAll (Ljava/util/Collection;)Z
|
||||
public static final fun box ([J)Lkotlin/ULongArray;
|
||||
public static final synthetic fun box-impl ([J)Lkotlin/ULongArray;
|
||||
public fun clear ()V
|
||||
public static fun constructor (I)[J
|
||||
public static fun constructor ([J)[J
|
||||
public static fun constructor-impl (I)[J
|
||||
public static fun constructor-impl ([J)[J
|
||||
public final fun contains (Ljava/lang/Object;)Z
|
||||
public fun contains-4n0qz0s4 (J)Z
|
||||
public static fun contains-4n0qz0s4 ([JJ)Z
|
||||
public fun contains-VKZWuLQ (J)Z
|
||||
public static fun contains-VKZWuLQ ([JJ)Z
|
||||
public fun containsAll (Ljava/util/Collection;)Z
|
||||
public static fun containsAll ([JLjava/util/Collection;)Z
|
||||
public static fun containsAll-impl ([JLjava/util/Collection;)Z
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals ([JLjava/lang/Object;)Z
|
||||
public static final fun get ([JI)J
|
||||
public static fun equals-impl ([JLjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 ([J[J)Z
|
||||
public static final fun get-impl ([JI)J
|
||||
public fun getSize ()I
|
||||
public static fun getSize ([J)I
|
||||
public static fun getSize-impl ([J)I
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode ([J)I
|
||||
public static fun hashCode-impl ([J)I
|
||||
public fun isEmpty ()Z
|
||||
public static fun isEmpty ([J)Z
|
||||
public static fun isEmpty-impl ([J)Z
|
||||
public synthetic fun iterator ()Ljava/util/Iterator;
|
||||
public fun iterator ()Lkotlin/collections/ULongIterator;
|
||||
public static fun iterator ([J)Lkotlin/collections/ULongIterator;
|
||||
public static fun iterator-impl ([J)Lkotlin/collections/ULongIterator;
|
||||
public fun remove (Ljava/lang/Object;)Z
|
||||
public fun removeAll (Ljava/util/Collection;)Z
|
||||
public fun retainAll (Ljava/util/Collection;)Z
|
||||
public static final fun set-83j4ar8e ([JIJ)V
|
||||
public static final fun set-k8EXiF4 ([JIJ)V
|
||||
public final fun size ()I
|
||||
public fun toArray ()[Ljava/lang/Object;
|
||||
public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString ([J)Ljava/lang/String;
|
||||
public final fun unbox ()[J
|
||||
public static fun toString-impl ([J)Ljava/lang/String;
|
||||
public final synthetic fun unbox-impl ()[J
|
||||
}
|
||||
|
||||
public final class kotlin/ULongKt {
|
||||
@@ -537,97 +562,98 @@ public final class kotlin/UShort : java/lang/Comparable {
|
||||
public static final field MIN_VALUE S
|
||||
public static final field SIZE_BITS I
|
||||
public static final field SIZE_BYTES I
|
||||
public static final fun and-av578izg (SS)S
|
||||
public static final fun box (S)Lkotlin/UShort;
|
||||
public static final fun and-xj2QHRw (SS)S
|
||||
public static final synthetic fun box-impl (S)Lkotlin/UShort;
|
||||
public synthetic fun compareTo (Ljava/lang/Object;)I
|
||||
public static final fun compareTo-4n0qz0s4 (SJ)I
|
||||
public static final fun compareTo-4wtlwgkb (SI)I
|
||||
public fun compareTo-av578izg (S)I
|
||||
public static fun compareTo-av578izg (SS)I
|
||||
public static final fun compareTo-d0xlk1d1 (SB)I
|
||||
public static fun constructor (S)S
|
||||
public static final fun dec (S)S
|
||||
public static final fun div-4n0qz0s4 (SJ)J
|
||||
public static final fun div-4wtlwgkb (SI)I
|
||||
public static final fun div-av578izg (SS)I
|
||||
public static final fun div-d0xlk1d1 (SB)I
|
||||
public static final fun compareTo-7apg3OU (SB)I
|
||||
public static final fun compareTo-VKZWuLQ (SJ)I
|
||||
public static final fun compareTo-WZ4Q5Ns (SI)I
|
||||
public fun compareTo-xj2QHRw (S)I
|
||||
public static fun compareTo-xj2QHRw (SS)I
|
||||
public static fun constructor-impl (S)S
|
||||
public static final fun dec-impl (S)S
|
||||
public static final fun div-7apg3OU (SB)I
|
||||
public static final fun div-VKZWuLQ (SJ)J
|
||||
public static final fun div-WZ4Q5Ns (SI)I
|
||||
public static final fun div-xj2QHRw (SS)I
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals (SLjava/lang/Object;)Z
|
||||
public static fun equals-impl (SLjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 (SS)Z
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode (S)I
|
||||
public static final fun inc (S)S
|
||||
public static final fun inv (S)S
|
||||
public static final fun minus-4n0qz0s4 (SJ)J
|
||||
public static final fun minus-4wtlwgkb (SI)I
|
||||
public static final fun minus-av578izg (SS)I
|
||||
public static final fun minus-d0xlk1d1 (SB)I
|
||||
public static final fun or-av578izg (SS)S
|
||||
public static final fun plus-4n0qz0s4 (SJ)J
|
||||
public static final fun plus-4wtlwgkb (SI)I
|
||||
public static final fun plus-av578izg (SS)I
|
||||
public static final fun plus-d0xlk1d1 (SB)I
|
||||
public static final fun rangeTo-av578izg (SS)Lkotlin/ranges/UIntRange;
|
||||
public static final fun rem-4n0qz0s4 (SJ)J
|
||||
public static final fun rem-4wtlwgkb (SI)I
|
||||
public static final fun rem-av578izg (SS)I
|
||||
public static final fun rem-d0xlk1d1 (SB)I
|
||||
public static final fun times-4n0qz0s4 (SJ)J
|
||||
public static final fun times-4wtlwgkb (SI)I
|
||||
public static final fun times-av578izg (SS)I
|
||||
public static final fun times-d0xlk1d1 (SB)I
|
||||
public static final fun toByte (S)B
|
||||
public static final fun toInt (S)I
|
||||
public static final fun toLong (S)J
|
||||
public static final fun toShort (S)S
|
||||
public static fun hashCode-impl (S)I
|
||||
public static final fun inc-impl (S)S
|
||||
public static final fun inv-impl (S)S
|
||||
public static final fun minus-7apg3OU (SB)I
|
||||
public static final fun minus-VKZWuLQ (SJ)J
|
||||
public static final fun minus-WZ4Q5Ns (SI)I
|
||||
public static final fun minus-xj2QHRw (SS)I
|
||||
public static final fun or-xj2QHRw (SS)S
|
||||
public static final fun plus-7apg3OU (SB)I
|
||||
public static final fun plus-VKZWuLQ (SJ)J
|
||||
public static final fun plus-WZ4Q5Ns (SI)I
|
||||
public static final fun plus-xj2QHRw (SS)I
|
||||
public static final fun rangeTo-xj2QHRw (SS)Lkotlin/ranges/UIntRange;
|
||||
public static final fun rem-7apg3OU (SB)I
|
||||
public static final fun rem-VKZWuLQ (SJ)J
|
||||
public static final fun rem-WZ4Q5Ns (SI)I
|
||||
public static final fun rem-xj2QHRw (SS)I
|
||||
public static final fun times-7apg3OU (SB)I
|
||||
public static final fun times-VKZWuLQ (SJ)J
|
||||
public static final fun times-WZ4Q5Ns (SI)I
|
||||
public static final fun times-xj2QHRw (SS)I
|
||||
public static final fun toByte-impl (S)B
|
||||
public static final fun toInt-impl (S)I
|
||||
public static final fun toLong-impl (S)J
|
||||
public static final fun toShort-impl (S)S
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString (S)Ljava/lang/String;
|
||||
public static final fun toUByte (S)B
|
||||
public static final fun toUInt (S)I
|
||||
public static final fun toULong (S)J
|
||||
public static final fun toUShort (S)S
|
||||
public final fun unbox ()S
|
||||
public static final fun xor-av578izg (SS)S
|
||||
public static fun toString-impl (S)Ljava/lang/String;
|
||||
public static final fun toUByte-impl (S)B
|
||||
public static final fun toUInt-impl (S)I
|
||||
public static final fun toULong-impl (S)J
|
||||
public static final fun toUShort-impl (S)S
|
||||
public final synthetic fun unbox-impl ()S
|
||||
public static final fun xor-xj2QHRw (SS)S
|
||||
}
|
||||
|
||||
public final class kotlin/UShort$Companion {
|
||||
}
|
||||
|
||||
public final class kotlin/UShortArray : java/util/Collection, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
public synthetic fun <init> ([S)V
|
||||
public synthetic fun add (Ljava/lang/Object;)Z
|
||||
public fun add-av578izg (S)Z
|
||||
public fun add-xj2QHRw (S)Z
|
||||
public fun addAll (Ljava/util/Collection;)Z
|
||||
public static final fun box ([S)Lkotlin/UShortArray;
|
||||
public static final synthetic fun box-impl ([S)Lkotlin/UShortArray;
|
||||
public fun clear ()V
|
||||
public static fun constructor (I)[S
|
||||
public static fun constructor ([S)[S
|
||||
public static fun constructor-impl (I)[S
|
||||
public static fun constructor-impl ([S)[S
|
||||
public final fun contains (Ljava/lang/Object;)Z
|
||||
public fun contains-av578izg (S)Z
|
||||
public static fun contains-av578izg ([SS)Z
|
||||
public fun contains-xj2QHRw (S)Z
|
||||
public static fun contains-xj2QHRw ([SS)Z
|
||||
public fun containsAll (Ljava/util/Collection;)Z
|
||||
public static fun containsAll ([SLjava/util/Collection;)Z
|
||||
public static fun containsAll-impl ([SLjava/util/Collection;)Z
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals ([SLjava/lang/Object;)Z
|
||||
public static final fun get ([SI)S
|
||||
public static fun equals-impl ([SLjava/lang/Object;)Z
|
||||
public static final fun equals-impl0 ([S[S)Z
|
||||
public static final fun get-impl ([SI)S
|
||||
public fun getSize ()I
|
||||
public static fun getSize ([S)I
|
||||
public static fun getSize-impl ([S)I
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode ([S)I
|
||||
public static fun hashCode-impl ([S)I
|
||||
public fun isEmpty ()Z
|
||||
public static fun isEmpty ([S)Z
|
||||
public static fun isEmpty-impl ([S)Z
|
||||
public synthetic fun iterator ()Ljava/util/Iterator;
|
||||
public fun iterator ()Lkotlin/collections/UShortIterator;
|
||||
public static fun iterator ([S)Lkotlin/collections/UShortIterator;
|
||||
public static fun iterator-impl ([S)Lkotlin/collections/UShortIterator;
|
||||
public fun remove (Ljava/lang/Object;)Z
|
||||
public fun removeAll (Ljava/util/Collection;)Z
|
||||
public fun retainAll (Ljava/util/Collection;)Z
|
||||
public static final fun set-bky83bo1 ([SIS)V
|
||||
public static final fun set-01HTLdE ([SIS)V
|
||||
public final fun size ()I
|
||||
public fun toArray ()[Ljava/lang/Object;
|
||||
public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString ([S)Ljava/lang/String;
|
||||
public final fun unbox ()[S
|
||||
public static fun toString-impl ([S)Ljava/lang/String;
|
||||
public final synthetic fun unbox-impl ()[S
|
||||
}
|
||||
|
||||
public final class kotlin/UShortKt {
|
||||
@@ -2460,26 +2486,26 @@ public abstract class kotlin/collections/ShortIterator : java/util/Iterator, kot
|
||||
}
|
||||
|
||||
public final class kotlin/collections/UArraysKt {
|
||||
public static final fun contentEquals-6ajjrs7m ([I[I)Z
|
||||
public static final fun contentEquals-7zqa7xiz ([B[B)Z
|
||||
public static final fun contentEquals-8f7oupw0 ([S[S)Z
|
||||
public static final fun contentEquals-a8l8huwo ([J[J)Z
|
||||
public static final fun contentHashCode-1biuymyp ([B)I
|
||||
public static final fun contentHashCode-3o8tnvbt ([J)I
|
||||
public static final fun contentHashCode-9gu3s6ig ([S)I
|
||||
public static final fun contentHashCode-doljm8k0 ([I)I
|
||||
public static final fun contentToString-1biuymyp ([B)Ljava/lang/String;
|
||||
public static final fun contentToString-3o8tnvbt ([J)Ljava/lang/String;
|
||||
public static final fun contentToString-9gu3s6ig ([S)Ljava/lang/String;
|
||||
public static final fun contentToString-doljm8k0 ([I)Ljava/lang/String;
|
||||
public static final fun random-25eqzsg0 ([JLkotlin/random/Random;)J
|
||||
public static final fun random-8tx9e8n3 ([BLkotlin/random/Random;)B
|
||||
public static final fun random-9uc5g3in ([SLkotlin/random/Random;)S
|
||||
public static final fun random-bunzpqo3 ([ILkotlin/random/Random;)I
|
||||
public static final fun toTypedArray-1biuymyp ([B)[Lkotlin/UByte;
|
||||
public static final fun toTypedArray-3o8tnvbt ([J)[Lkotlin/ULong;
|
||||
public static final fun toTypedArray-9gu3s6ig ([S)[Lkotlin/UShort;
|
||||
public static final fun toTypedArray-doljm8k0 ([I)[Lkotlin/UInt;
|
||||
public static final fun contentEquals-ctEhBpI ([I[I)Z
|
||||
public static final fun contentEquals-kdPth3s ([B[B)Z
|
||||
public static final fun contentEquals-mazbYpA ([S[S)Z
|
||||
public static final fun contentEquals-us8wMrg ([J[J)Z
|
||||
public static final fun contentHashCode--ajY-9A ([I)I
|
||||
public static final fun contentHashCode-GBYM_sE ([B)I
|
||||
public static final fun contentHashCode-QwZRm1k ([J)I
|
||||
public static final fun contentHashCode-rL5Bavg ([S)I
|
||||
public static final fun contentToString--ajY-9A ([I)Ljava/lang/String;
|
||||
public static final fun contentToString-GBYM_sE ([B)Ljava/lang/String;
|
||||
public static final fun contentToString-QwZRm1k ([J)Ljava/lang/String;
|
||||
public static final fun contentToString-rL5Bavg ([S)Ljava/lang/String;
|
||||
public static final fun random-2D5oskM ([ILkotlin/random/Random;)I
|
||||
public static final fun random-JzugnMA ([JLkotlin/random/Random;)J
|
||||
public static final fun random-oSF2wD8 ([BLkotlin/random/Random;)B
|
||||
public static final fun random-s5X_as8 ([SLkotlin/random/Random;)S
|
||||
public static final fun toTypedArray--ajY-9A ([I)[Lkotlin/UInt;
|
||||
public static final fun toTypedArray-GBYM_sE ([B)[Lkotlin/UByte;
|
||||
public static final fun toTypedArray-QwZRm1k ([J)[Lkotlin/ULong;
|
||||
public static final fun toTypedArray-rL5Bavg ([S)[Lkotlin/UShort;
|
||||
}
|
||||
|
||||
public abstract class kotlin/collections/UByteIterator : java/util/Iterator, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
@@ -2841,8 +2867,8 @@ public final class kotlin/internal/ProgressionUtilKt {
|
||||
}
|
||||
|
||||
public final class kotlin/internal/UProgressionUtilKt {
|
||||
public static final fun getProgressionLastElement-2z3rwsob (III)I
|
||||
public static final fun getProgressionLastElement-d1k1ewy0 (JJJ)J
|
||||
public static final fun getProgressionLastElement-7ftBX0g (JJJ)J
|
||||
public static final fun getProgressionLastElement-Nkh28Cs (III)I
|
||||
}
|
||||
|
||||
public final class kotlin/io/AccessDeniedException : kotlin/io/FileSystemException {
|
||||
@@ -3907,17 +3933,17 @@ public final class kotlin/random/RandomKt {
|
||||
public static final fun Random (I)Lkotlin/random/Random;
|
||||
public static final fun Random (J)Lkotlin/random/Random;
|
||||
public static final fun nextUBytes (Lkotlin/random/Random;I)[B
|
||||
public static final fun nextUBytes-4zielkbi (Lkotlin/random/Random;[BII)[B
|
||||
public static synthetic fun nextUBytes-4zielkbi$default (Lkotlin/random/Random;[BIIILjava/lang/Object;)[B
|
||||
public static final fun nextUBytes-y7z55vk (Lkotlin/random/Random;[B)[B
|
||||
public static final fun nextUBytes-EVgfTAA (Lkotlin/random/Random;[B)[B
|
||||
public static final fun nextUBytes-Wvrt4B4 (Lkotlin/random/Random;[BII)[B
|
||||
public static synthetic fun nextUBytes-Wvrt4B4$default (Lkotlin/random/Random;[BIIILjava/lang/Object;)[B
|
||||
public static final fun nextUInt (Lkotlin/random/Random;)I
|
||||
public static final fun nextUInt (Lkotlin/random/Random;Lkotlin/ranges/UIntRange;)I
|
||||
public static final fun nextUInt-5wlsgfq1 (Lkotlin/random/Random;II)I
|
||||
public static final fun nextUInt-97rx7kg5 (Lkotlin/random/Random;I)I
|
||||
public static final fun nextUInt-a8DCA5k (Lkotlin/random/Random;II)I
|
||||
public static final fun nextUInt-qCasIEU (Lkotlin/random/Random;I)I
|
||||
public static final fun nextULong (Lkotlin/random/Random;)J
|
||||
public static final fun nextULong (Lkotlin/random/Random;Lkotlin/ranges/ULongRange;)J
|
||||
public static final fun nextULong-4sbioyd2 (Lkotlin/random/Random;J)J
|
||||
public static final fun nextULong-7szwbobr (Lkotlin/random/Random;JJ)J
|
||||
public static final fun nextULong-V1Xi4fY (Lkotlin/random/Random;J)J
|
||||
public static final fun nextULong-jmpaW-c (Lkotlin/random/Random;JJ)J
|
||||
}
|
||||
|
||||
public class kotlin/ranges/CharProgression : java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
@@ -4157,6 +4183,7 @@ public final class kotlin/ranges/RangesKt {
|
||||
|
||||
public class kotlin/ranges/UIntProgression : java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
public static final field Companion Lkotlin/ranges/UIntProgression$Companion;
|
||||
public synthetic fun <init> (IIILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getFirst ()I
|
||||
public final fun getLast ()I
|
||||
@@ -4169,14 +4196,14 @@ public class kotlin/ranges/UIntProgression : java/lang/Iterable, kotlin/jvm/inte
|
||||
}
|
||||
|
||||
public final class kotlin/ranges/UIntProgression$Companion {
|
||||
public final fun fromClosedRange-2z3rwsob (III)Lkotlin/ranges/UIntProgression;
|
||||
public final fun fromClosedRange-Nkh28Cs (III)Lkotlin/ranges/UIntProgression;
|
||||
}
|
||||
|
||||
public final class kotlin/ranges/UIntRange : kotlin/ranges/UIntProgression, kotlin/ranges/ClosedRange {
|
||||
public static final field Companion Lkotlin/ranges/UIntRange$Companion;
|
||||
public fun <init> (II)V
|
||||
public synthetic fun <init> (IILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public synthetic fun contains (Ljava/lang/Comparable;)Z
|
||||
public fun contains-4wtlwgkb (I)Z
|
||||
public fun contains-WZ4Q5Ns (I)Z
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public synthetic fun getEndInclusive ()Ljava/lang/Comparable;
|
||||
public fun getEndInclusive ()Lkotlin/UInt;
|
||||
@@ -4193,6 +4220,7 @@ public final class kotlin/ranges/UIntRange$Companion {
|
||||
|
||||
public class kotlin/ranges/ULongProgression : java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker {
|
||||
public static final field Companion Lkotlin/ranges/ULongProgression$Companion;
|
||||
public synthetic fun <init> (JJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getFirst ()J
|
||||
public final fun getLast ()J
|
||||
@@ -4205,14 +4233,14 @@ public class kotlin/ranges/ULongProgression : java/lang/Iterable, kotlin/jvm/int
|
||||
}
|
||||
|
||||
public final class kotlin/ranges/ULongProgression$Companion {
|
||||
public final fun fromClosedRange-d1k1ewy0 (JJJ)Lkotlin/ranges/ULongProgression;
|
||||
public final fun fromClosedRange-7ftBX0g (JJJ)Lkotlin/ranges/ULongProgression;
|
||||
}
|
||||
|
||||
public final class kotlin/ranges/ULongRange : kotlin/ranges/ULongProgression, kotlin/ranges/ClosedRange {
|
||||
public static final field Companion Lkotlin/ranges/ULongRange$Companion;
|
||||
public fun <init> (JJ)V
|
||||
public synthetic fun <init> (JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public synthetic fun contains (Ljava/lang/Comparable;)Z
|
||||
public fun contains-4n0qz0s4 (J)Z
|
||||
public fun contains-VKZWuLQ (J)Z
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public synthetic fun getEndInclusive ()Ljava/lang/Comparable;
|
||||
public fun getEndInclusive ()Lkotlin/ULong;
|
||||
@@ -4228,20 +4256,20 @@ public final class kotlin/ranges/ULongRange$Companion {
|
||||
}
|
||||
|
||||
public final class kotlin/ranges/URangesKt {
|
||||
public static final fun downTo-25l8n7yt (II)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun downTo-2ccbonl2 (BB)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun downTo-6o7e3yo2 (JJ)Lkotlin/ranges/ULongProgression;
|
||||
public static final fun downTo-cjsx449s (SS)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun downTo-5PvTz6A (SS)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun downTo-J1ME1BU (II)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun downTo-Kr8caGY (BB)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun downTo-eb3DHEI (JJ)Lkotlin/ranges/ULongProgression;
|
||||
public static final fun random (Lkotlin/ranges/UIntRange;Lkotlin/random/Random;)I
|
||||
public static final fun random (Lkotlin/ranges/ULongRange;Lkotlin/random/Random;)J
|
||||
public static final fun reversed (Lkotlin/ranges/UIntProgression;)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun reversed (Lkotlin/ranges/ULongProgression;)Lkotlin/ranges/ULongProgression;
|
||||
public static final fun step (Lkotlin/ranges/UIntProgression;I)Lkotlin/ranges/UIntProgression;
|
||||
public static final fun step (Lkotlin/ranges/ULongProgression;J)Lkotlin/ranges/ULongProgression;
|
||||
public static final fun until-25l8n7yt (II)Lkotlin/ranges/UIntRange;
|
||||
public static final fun until-2ccbonl2 (BB)Lkotlin/ranges/UIntRange;
|
||||
public static final fun until-6o7e3yo2 (JJ)Lkotlin/ranges/ULongRange;
|
||||
public static final fun until-cjsx449s (SS)Lkotlin/ranges/UIntRange;
|
||||
public static final fun until-5PvTz6A (SS)Lkotlin/ranges/UIntRange;
|
||||
public static final fun until-J1ME1BU (II)Lkotlin/ranges/UIntRange;
|
||||
public static final fun until-Kr8caGY (BB)Lkotlin/ranges/UIntRange;
|
||||
public static final fun until-eb3DHEI (JJ)Lkotlin/ranges/ULongRange;
|
||||
}
|
||||
|
||||
public abstract interface class kotlin/reflect/KAnnotatedElement {
|
||||
@@ -5137,10 +5165,10 @@ public final class kotlin/text/Typography {
|
||||
}
|
||||
|
||||
public final class kotlin/text/UStringNumberConversionsKt {
|
||||
public static final fun toString-21alb53h (JI)Ljava/lang/String;
|
||||
public static final fun toString-2kxm18v2 (BI)Ljava/lang/String;
|
||||
public static final fun toString-4t3x8z9q (II)Ljava/lang/String;
|
||||
public static final fun toString-8wantzby (SI)Ljava/lang/String;
|
||||
public static final fun toString-JSWoG40 (JI)Ljava/lang/String;
|
||||
public static final fun toString-LxnNnR4 (BI)Ljava/lang/String;
|
||||
public static final fun toString-V7xB4Y4 (II)Ljava/lang/String;
|
||||
public static final fun toString-olVBNx4 (SI)Ljava/lang/String;
|
||||
public static final fun toUByte (Ljava/lang/String;)B
|
||||
public static final fun toUByte (Ljava/lang/String;I)B
|
||||
public static final fun toUByteOrNull (Ljava/lang/String;)Lkotlin/UByte;
|
||||
|
||||
Reference in New Issue
Block a user