From 6b2f1ba4e4f631b40b1dd3e571ee4ceff388344a Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 24 Jan 2017 16:50:00 +0300 Subject: [PATCH] JS: move couple of helper functions from TranslationUtils to JsDescriptorUtils --- .../js/translate/declaration/ClassTranslator.kt | 4 ++-- .../initializer/ClassInitializerTranslator.java | 7 +++---- .../js/translate/utils/JsDescriptorUtils.java | 13 +++++++++++++ .../js/translate/utils/TranslationUtils.java | 16 ++-------------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt index bd3d3a0ee82..b73305c4f16 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt @@ -252,7 +252,7 @@ class ClassTranslator private constructor( val delegationClassDescriptor = (resolvedCall?.resultingDescriptor as? ClassConstructorDescriptor)?.constructedClass if (resolvedCall != null && !KotlinBuiltIns.isAny(delegationClassDescriptor!!)) { - if (TranslationUtils.isImmediateSubtypeOfError(classDescriptor)) { + if (JsDescriptorUtils.isImmediateSubtypeOfError(classDescriptor)) { superCallGenerators += { val innerContext = context().innerBlock() ClassInitializerTranslator.emulateSuperCallToNativeError( @@ -468,7 +468,7 @@ class ClassTranslator private constructor( } private fun mayBeAddThrowableProperties(context: TranslationContext) { - if (!TranslationUtils.isImmediateSubtypeOfError(descriptor)) return + if (!JsDescriptorUtils.isImmediateSubtypeOfError(descriptor)) return val properties = listOf("message", "cause") .map { Name.identifier(it) } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java index e1cfef6f71f..5149b482d67 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java @@ -33,7 +33,6 @@ import org.jetbrains.kotlin.js.translate.reference.ReferenceTranslator; import org.jetbrains.kotlin.js.translate.utils.BindingUtils; import org.jetbrains.kotlin.js.translate.utils.JsAstUtils; import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils; -import org.jetbrains.kotlin.js.translate.utils.TranslationUtils; import org.jetbrains.kotlin.js.translate.utils.jsAstUtils.AstUtilsKt; import org.jetbrains.kotlin.lexer.KtTokens; import org.jetbrains.kotlin.name.Name; @@ -188,7 +187,7 @@ public final class ClassInitializerTranslator extends AbstractTranslator { return; } - if (TranslationUtils.isImmediateSubtypeOfError(classDescriptor)) { + if (JsDescriptorUtils.isImmediateSubtypeOfError(classDescriptor)) { emulateSuperCallToNativeError(context, classDescriptor, superCall, JsLiteral.THIS); return; } @@ -385,9 +384,9 @@ public final class ClassInitializerTranslator extends AbstractTranslator { } private void addThrowableCall() { - if (!TranslationUtils.isExceptionClass(classDescriptor)) return; + if (!JsDescriptorUtils.isExceptionClass(classDescriptor)) return; - if (TranslationUtils.isImmediateSubtypeOfError(classDescriptor)) { + if (JsDescriptorUtils.isImmediateSubtypeOfError(classDescriptor)) { ClassDescriptor superClass = DescriptorUtilsKt.getSuperClassOrAny(classDescriptor); JsExpression invocation = new JsInvocation( pureFqn("captureStack", Namer.kotlinObject()), diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsDescriptorUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsDescriptorUtils.java index 73d2617b6fa..1d21a213ea5 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsDescriptorUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsDescriptorUtils.java @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.resolve.calls.tasks.DynamicCallsKt; import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.types.KotlinType; +import org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt; import org.jetbrains.kotlin.util.OperatorNameConventions; import java.util.Collection; @@ -188,4 +189,16 @@ public final class JsDescriptorUtils { String moduleName = moduleDescriptor.getName().asString(); return moduleName.substring(1, moduleName.length() - 1); } + + + public static boolean isImmediateSubtypeOfError(@NotNull ClassDescriptor descriptor) { + if (!isExceptionClass(descriptor)) return false; + ClassDescriptor superClass = org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt.getSuperClassOrAny(descriptor); + return TypeUtilsKt.isThrowable(superClass.getDefaultType()) || AnnotationsUtils.isNativeObject(superClass); + } + + public static boolean isExceptionClass(@NotNull ClassDescriptor descriptor) { + ModuleDescriptor module = DescriptorUtils.getContainingModule(descriptor); + return TypeUtilsKt.isSubtypeOf(descriptor.getDefaultType(), module.getBuiltIns().getThrowable().getDefaultType()); + } } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java index fc583af8c07..30594290fd4 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/TranslationUtils.java @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.js.translate.utils; -import org.jetbrains.kotlin.js.backend.ast.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; @@ -24,6 +23,8 @@ import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor; import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor; import org.jetbrains.kotlin.incremental.components.NoLookupLocation; +import org.jetbrains.kotlin.js.backend.ast.*; +import org.jetbrains.kotlin.js.backend.ast.JsBinaryOperator; import org.jetbrains.kotlin.js.translate.context.Namer; import org.jetbrains.kotlin.js.translate.context.TemporaryConstVariable; import org.jetbrains.kotlin.js.translate.context.TranslationContext; @@ -41,7 +42,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; import org.jetbrains.kotlin.resolve.inline.InlineUtil; import org.jetbrains.kotlin.serialization.deserialization.FindClassInModuleKt; import org.jetbrains.kotlin.types.KotlinType; -import org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt; import java.util.ArrayList; import java.util.List; @@ -399,16 +399,4 @@ public final class TranslationUtils { descriptor.getContainingDeclaration() instanceof ClassDescriptor && ModalityKt.isOverridable(descriptor); } - - - public static boolean isImmediateSubtypeOfError(@NotNull ClassDescriptor descriptor) { - if (!isExceptionClass(descriptor)) return false; - ClassDescriptor superClass = DescriptorUtilsKt.getSuperClassOrAny(descriptor); - return TypeUtilsKt.isThrowable(superClass.getDefaultType()) || AnnotationsUtils.isNativeObject(superClass); - } - - public static boolean isExceptionClass(@NotNull ClassDescriptor descriptor) { - ModuleDescriptor module = DescriptorUtils.getContainingModule(descriptor); - return TypeUtilsKt.isSubtypeOf(descriptor.getDefaultType(), module.getBuiltIns().getThrowable().getDefaultType()); - } }