From 775c941f8aab47ced335a1cb078b9c9a51323646 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 30 Apr 2014 14:54:31 +0400 Subject: [PATCH] hasSynthesizedParameterNames() pulled up into CallableDescriptor --- .../java/descriptor/JavaCallableMemberDescriptor.java | 1 - .../jet/lang/descriptors/CallableDescriptor.java | 11 +++++++++++ .../impl/AbstractReceiverParameterDescriptor.java | 5 +++++ .../lang/descriptors/impl/FunctionDescriptorImpl.java | 5 +++++ .../impl/PropertyAccessorDescriptorImpl.java | 5 +++++ .../lang/descriptors/impl/VariableDescriptorImpl.java | 5 +++++ 6 files changed, 31 insertions(+), 1 deletion(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaCallableMemberDescriptor.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaCallableMemberDescriptor.java index d386a3d672e..c2c3229d70a 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaCallableMemberDescriptor.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaCallableMemberDescriptor.java @@ -19,5 +19,4 @@ package org.jetbrains.jet.lang.resolve.java.descriptor; import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; public interface JavaCallableMemberDescriptor extends CallableMemberDescriptor { - boolean hasSynthesizedParameterNames(); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java index 8709d1688ce..4e8fc5a1d40 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java @@ -51,8 +51,19 @@ public interface CallableDescriptor extends DeclarationDescriptorWithVisibility, @NotNull List getValueParameters(); + /** + * Kotlin functions always have stable parameter names that can be reliably used when calling them with named arguments. + * Functions loaded from platform definitions (e.g. Java binaries or JS) may have unstable parameter names that vary from + * one platform installation to another. These names can not be used reliably for calls with named arguments. + */ boolean hasStableParameterNames(); + /** + * Sometimes parameter names are not available at all (e.g. Java binaries with not enough debug information). + * In this case, getName() returns synthetic names such as "p0", "p1" etc. + */ + boolean hasSynthesizedParameterNames(); + // Workaround for KT-4609 Wildcard types (super/extends) shouldn't be loaded as nullable @KotlinSignature("fun getOverriddenDescriptors(): Set") @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java index cb505007356..b4215f03a81 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractReceiverParameterDescriptor.java @@ -87,6 +87,11 @@ public abstract class AbstractReceiverParameterDescriptor extends DeclarationDes return false; } + @Override + public boolean hasSynthesizedParameterNames() { + return false; + } + @NotNull @Override public Set getOverriddenDescriptors() { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java index 7640fd7d609..7e4cc01e53b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/FunctionDescriptorImpl.java @@ -159,6 +159,11 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo return true; } + @Override + public boolean hasSynthesizedParameterNames() { + return false; + } + @Override public JetType getReturnType() { return unsubstitutedReturnType; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java index 73e89fe437e..56a6d78e2aa 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/PropertyAccessorDescriptorImpl.java @@ -89,6 +89,11 @@ public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescript return false; } + @Override + public boolean hasSynthesizedParameterNames() { + return false; + } + @NotNull @Override public Modality getModality() { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java index 6719fee2c1d..3e3c577d2fc 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/VariableDescriptorImpl.java @@ -85,6 +85,11 @@ public abstract class VariableDescriptorImpl extends DeclarationDescriptorNonRoo return false; } + @Override + public boolean hasSynthesizedParameterNames() { + return false; + } + @NotNull @Override public Set getOverriddenDescriptors() {