Convert AccessorForFunctionDescriptor to Kotlin
This commit is contained in:
+46
-60
@@ -14,77 +14,63 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.codegen;
|
package org.jetbrains.kotlin.codegen
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.kotlin.codegen.coroutines.*
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.codegen.coroutines.CoroutineCodegenUtilKt;
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl;
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.name.Name;
|
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap
|
||||||
|
|
||||||
public class AccessorForFunctionDescriptor extends AbstractAccessorForFunctionDescriptor implements AccessorForCallableDescriptor<FunctionDescriptor> {
|
class AccessorForFunctionDescriptor(
|
||||||
private final FunctionDescriptor calleeDescriptor;
|
private val calleeDescriptor: FunctionDescriptor,
|
||||||
private final ClassDescriptor superCallTarget;
|
containingDeclaration: DeclarationDescriptor,
|
||||||
private final String nameSuffix;
|
private val superCallTarget: ClassDescriptor?,
|
||||||
|
private val nameSuffix: String
|
||||||
|
) : AbstractAccessorForFunctionDescriptor(containingDeclaration, Name.identifier("access$$nameSuffix")),
|
||||||
|
AccessorForCallableDescriptor<FunctionDescriptor> {
|
||||||
|
|
||||||
public AccessorForFunctionDescriptor(
|
init {
|
||||||
@NotNull FunctionDescriptor descriptor,
|
initialize(
|
||||||
@NotNull DeclarationDescriptor containingDeclaration,
|
DescriptorUtils.getReceiverParameterType(calleeDescriptor.extensionReceiverParameter),
|
||||||
@Nullable ClassDescriptor superCallTarget,
|
if (calleeDescriptor is ConstructorDescriptor || calleeDescriptor.isJvmStaticInObjectOrClassOrInterface())
|
||||||
@NotNull String nameSuffix
|
null
|
||||||
) {
|
else
|
||||||
super(containingDeclaration,
|
calleeDescriptor.dispatchReceiverParameter,
|
||||||
Name.identifier("access$" + nameSuffix));
|
copyTypeParameters(calleeDescriptor),
|
||||||
this.calleeDescriptor = descriptor;
|
copyValueParameters(calleeDescriptor),
|
||||||
this.superCallTarget = superCallTarget;
|
calleeDescriptor.returnType,
|
||||||
this.nameSuffix = nameSuffix;
|
Modality.FINAL,
|
||||||
|
Visibilities.LOCAL
|
||||||
|
)
|
||||||
|
|
||||||
initialize(DescriptorUtils.getReceiverParameterType(descriptor.getExtensionReceiverParameter()),
|
isSuspend = calleeDescriptor.isSuspend
|
||||||
descriptor instanceof ConstructorDescriptor || CodegenUtilKt.isJvmStaticInObjectOrClassOrInterface(descriptor)
|
if (calleeDescriptor.getUserData(INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION) != null) {
|
||||||
? null
|
userDataMap = LinkedHashMap<FunctionDescriptor.UserDataKey<*>, Any>()
|
||||||
: descriptor.getDispatchReceiverParameter(),
|
userDataMap[INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION] =
|
||||||
copyTypeParameters(descriptor),
|
calleeDescriptor.getUserData(INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION)
|
||||||
copyValueParameters(descriptor),
|
|
||||||
descriptor.getReturnType(),
|
|
||||||
Modality.FINAL,
|
|
||||||
Visibilities.LOCAL);
|
|
||||||
|
|
||||||
setSuspend(descriptor.isSuspend());
|
|
||||||
if (descriptor.getUserData(CoroutineCodegenUtilKt.INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION) != null) {
|
|
||||||
userDataMap = new LinkedHashMap<>();
|
|
||||||
userDataMap.put(
|
|
||||||
CoroutineCodegenUtilKt.INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION,
|
|
||||||
descriptor.getUserData(CoroutineCodegenUtilKt.INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
override fun createSubstitutedCopy(
|
||||||
@Override
|
newOwner: DeclarationDescriptor,
|
||||||
protected FunctionDescriptorImpl createSubstitutedCopy(
|
original: FunctionDescriptor?,
|
||||||
@NotNull DeclarationDescriptor newOwner,
|
kind: CallableMemberDescriptor.Kind,
|
||||||
@Nullable FunctionDescriptor original,
|
newName: Name?,
|
||||||
@NotNull Kind kind,
|
annotations: Annotations,
|
||||||
@Nullable Name newName,
|
source: SourceElement
|
||||||
@NotNull Annotations annotations,
|
): FunctionDescriptorImpl {
|
||||||
@NotNull SourceElement source
|
return AccessorForFunctionDescriptor(calleeDescriptor, newOwner, superCallTarget, nameSuffix)
|
||||||
) {
|
|
||||||
return new AccessorForFunctionDescriptor(calleeDescriptor, newOwner, superCallTarget, nameSuffix);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
override fun getCalleeDescriptor(): FunctionDescriptor {
|
||||||
@Override
|
return calleeDescriptor
|
||||||
public FunctionDescriptor getCalleeDescriptor() {
|
|
||||||
return calleeDescriptor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
override fun getSuperCallTarget(): ClassDescriptor? {
|
||||||
public ClassDescriptor getSuperCallTarget() {
|
return superCallTarget
|
||||||
return superCallTarget;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user