From 8b3d439d5ba5c2a7d64f9846f1c50ca10f71208a Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 12 Jan 2018 18:17:56 +0100 Subject: [PATCH] JS: minor, simplify code locating default argument values At the only call site of getDefaultArgument it is checked that the parameter actually _declares_ default value, so it's not necessary to try to load that value from supertypes --- .../kotlin/js/translate/utils/BindingUtils.java | 17 +---------------- .../translate/utils/FunctionBodyTranslator.java | 3 +-- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/BindingUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/BindingUtils.java index 4bccf837d7e..a8118ac309d 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/BindingUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/BindingUtils.java @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilKt; import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall; import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant; import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator; -import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.TypeUtils; @@ -178,26 +177,12 @@ public final class BindingUtils { @NotNull public static KtExpression getDefaultArgument(@NotNull ValueParameterDescriptor parameterDescriptor) { - ValueParameterDescriptor descriptorWhichDeclaresDefaultValue = - getOriginalDescriptorWhichDeclaresDefaultValue(parameterDescriptor); - KtParameter psiParameter = getParameterForDescriptor(descriptorWhichDeclaresDefaultValue); + KtParameter psiParameter = getParameterForDescriptor(parameterDescriptor); KtExpression defaultValue = psiParameter.getDefaultValue(); assert defaultValue != null : message(parameterDescriptor, "No default value found in PSI"); return defaultValue; } - private static ValueParameterDescriptor getOriginalDescriptorWhichDeclaresDefaultValue( - @NotNull ValueParameterDescriptor parameterDescriptor - ) { - ValueParameterDescriptor result = parameterDescriptor; - assert DescriptorUtilsKt.hasDefaultValue(result) : message(parameterDescriptor, "Unsupplied parameter must have default value"); - // TODO: this seems incorrect, as the default value may come from _not the first_ overridden parameter - while (!result.declaresDefaultValue()) { - result = result.getOverriddenDescriptors().iterator().next(); - } - return result; - } - @NotNull public static ResolvedCall getIteratorFunction(@NotNull BindingContext context, @NotNull KtExpression rangeExpression) { diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java index 0e685494856..7cd5664544a 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/FunctionBodyTranslator.java @@ -43,7 +43,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import static org.jetbrains.kotlin.js.translate.utils.BindingUtils.getDefaultArgument; import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.*; import static org.jetbrains.kotlin.js.translate.utils.mutator.LastExpressionMutator.mutateLastExpression; @@ -84,7 +83,7 @@ public final class FunctionBodyTranslator extends AbstractTranslator { if (!valueParameter.declaresDefaultValue()) continue; JsExpression jsNameRef = ReferenceTranslator.translateAsValueReference(valueParameter, functionBodyContext); - KtExpression defaultArgument = getDefaultArgument(valueParameter); + KtExpression defaultArgument = BindingUtils.getDefaultArgument(valueParameter); JsBlock defaultArgBlock = new JsBlock(); JsExpression defaultValue = Translation.translateAsExpression(defaultArgument, functionBodyContext, defaultArgBlock); PsiElement psi = KotlinSourceElementKt.getPsi(valueParameter.getSource());