180 lines
11 KiB
Java
180 lines
11 KiB
Java
package kotlin.reflect.jvm.internal;
|
|
|
|
import java.util.List;
|
|
import kotlin.Metadata;
|
|
import kotlin.collections.CollectionsKt___CollectionsKt;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.internal.Intrinsics;
|
|
import kotlin.reflect.KParameter;
|
|
import kotlin.reflect.jvm.internal.impl.descriptors.CallableDescriptor;
|
|
import kotlin.reflect.jvm.internal.impl.descriptors.FunctionDescriptor;
|
|
import kotlin.reflect.jvm.internal.impl.descriptors.PropertyDescriptor;
|
|
import kotlin.reflect.jvm.internal.impl.descriptors.ReceiverParameterDescriptor;
|
|
import kotlin.reflect.jvm.internal.impl.descriptors.ValueParameterDescriptor;
|
|
import kotlin.reflect.jvm.internal.impl.name.Name;
|
|
import kotlin.reflect.jvm.internal.impl.renderer.DescriptorRenderer;
|
|
import kotlin.reflect.jvm.internal.impl.types.KotlinType;
|
|
|
|
@Metadata(d1 = {"\u0000P\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\bÀ\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J\u0010\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\bH\u0002J\u000e\u0010\t\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\nJ\u000e\u0010\u000b\u001a\u00020\u00062\u0006\u0010\f\u001a\u00020\nJ\u000e\u0010\r\u001a\u00020\u00062\u0006\u0010\u000e\u001a\u00020\u000fJ\u000e\u0010\u0010\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\u0011J\u000e\u0010\u0012\u001a\u00020\u00062\u0006\u0010\u0013\u001a\u00020\u0014J\u001a\u0010\u0015\u001a\u00020\u0016*\u00060\u0017j\u0002`\u00182\b\u0010\u0019\u001a\u0004\u0018\u00010\u001aH\u0002J\u0018\u0010\u001b\u001a\u00020\u0016*\u00060\u0017j\u0002`\u00182\u0006\u0010\u001c\u001a\u00020\bH\u0002R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u001d"}, d2 = {"Lkotlin/reflect/jvm/internal/ReflectionObjectRenderer;", "", "()V", "renderer", "Lkotlin/reflect/jvm/internal/impl/renderer/DescriptorRenderer;", "renderCallable", "", "descriptor", "Lkotlin/reflect/jvm/internal/impl/descriptors/CallableDescriptor;", "renderFunction", "Lkotlin/reflect/jvm/internal/impl/descriptors/FunctionDescriptor;", "renderLambda", "invoke", "renderParameter", "parameter", "Lkotlin/reflect/jvm/internal/KParameterImpl;", "renderProperty", "Lkotlin/reflect/jvm/internal/impl/descriptors/PropertyDescriptor;", "renderType", "type", "Lkotlin/reflect/jvm/internal/impl/types/KotlinType;", "appendReceiverType", "", "Ljava/lang/StringBuilder;", "Lkotlin/text/StringBuilder;", "receiver", "Lkotlin/reflect/jvm/internal/impl/descriptors/ReceiverParameterDescriptor;", "appendReceivers", "callable", "kotlin-reflection"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
|
/* loaded from: classes3.dex */
|
|
public final class ReflectionObjectRenderer {
|
|
public static final ReflectionObjectRenderer INSTANCE = new ReflectionObjectRenderer();
|
|
private static final DescriptorRenderer renderer = DescriptorRenderer.FQ_NAMES_IN_TYPES;
|
|
|
|
@Metadata(k = 3, mv = {1, 9, 0}, xi = 48)
|
|
/* loaded from: classes3.dex */
|
|
public /* synthetic */ class WhenMappings {
|
|
public static final /* synthetic */ int[] $EnumSwitchMapping$0;
|
|
|
|
static {
|
|
int[] iArr = new int[KParameter.Kind.values().length];
|
|
try {
|
|
iArr[KParameter.Kind.EXTENSION_RECEIVER.ordinal()] = 1;
|
|
} catch (NoSuchFieldError unused) {
|
|
}
|
|
try {
|
|
iArr[KParameter.Kind.INSTANCE.ordinal()] = 2;
|
|
} catch (NoSuchFieldError unused2) {
|
|
}
|
|
try {
|
|
iArr[KParameter.Kind.VALUE.ordinal()] = 3;
|
|
} catch (NoSuchFieldError unused3) {
|
|
}
|
|
$EnumSwitchMapping$0 = iArr;
|
|
}
|
|
}
|
|
|
|
private ReflectionObjectRenderer() {
|
|
}
|
|
|
|
private final void appendReceiverType(StringBuilder sb, ReceiverParameterDescriptor receiverParameterDescriptor) {
|
|
if (receiverParameterDescriptor != null) {
|
|
KotlinType type = receiverParameterDescriptor.getType();
|
|
Intrinsics.checkNotNullExpressionValue(type, "getType(...)");
|
|
sb.append(renderType(type));
|
|
sb.append(".");
|
|
}
|
|
}
|
|
|
|
private final void appendReceivers(StringBuilder sb, CallableDescriptor callableDescriptor) {
|
|
ReceiverParameterDescriptor instanceReceiverParameter = UtilKt.getInstanceReceiverParameter(callableDescriptor);
|
|
ReceiverParameterDescriptor extensionReceiverParameter = callableDescriptor.getExtensionReceiverParameter();
|
|
appendReceiverType(sb, instanceReceiverParameter);
|
|
boolean z3 = (instanceReceiverParameter == null || extensionReceiverParameter == null) ? false : true;
|
|
if (z3) {
|
|
sb.append("(");
|
|
}
|
|
appendReceiverType(sb, extensionReceiverParameter);
|
|
if (z3) {
|
|
sb.append(")");
|
|
}
|
|
}
|
|
|
|
private final String renderCallable(CallableDescriptor descriptor) {
|
|
if (descriptor instanceof PropertyDescriptor) {
|
|
return renderProperty((PropertyDescriptor) descriptor);
|
|
}
|
|
if (descriptor instanceof FunctionDescriptor) {
|
|
return renderFunction((FunctionDescriptor) descriptor);
|
|
}
|
|
throw new IllegalStateException(("Illegal callable: " + descriptor).toString());
|
|
}
|
|
|
|
public final String renderFunction(FunctionDescriptor descriptor) {
|
|
Intrinsics.checkNotNullParameter(descriptor, "descriptor");
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("fun ");
|
|
ReflectionObjectRenderer reflectionObjectRenderer = INSTANCE;
|
|
reflectionObjectRenderer.appendReceivers(sb, descriptor);
|
|
DescriptorRenderer descriptorRenderer = renderer;
|
|
Name name = descriptor.getName();
|
|
Intrinsics.checkNotNullExpressionValue(name, "getName(...)");
|
|
sb.append(descriptorRenderer.renderName(name, true));
|
|
List<ValueParameterDescriptor> valueParameters = descriptor.getValueParameters();
|
|
Intrinsics.checkNotNullExpressionValue(valueParameters, "getValueParameters(...)");
|
|
CollectionsKt___CollectionsKt.joinTo$default(valueParameters, sb, ", ", "(", ")", 0, null, new Function1<ValueParameterDescriptor, CharSequence>() { // from class: kotlin.reflect.jvm.internal.ReflectionObjectRenderer$renderFunction$1$1
|
|
@Override // kotlin.jvm.functions.Function1
|
|
public final CharSequence invoke(ValueParameterDescriptor valueParameterDescriptor) {
|
|
ReflectionObjectRenderer reflectionObjectRenderer2 = ReflectionObjectRenderer.INSTANCE;
|
|
KotlinType type = valueParameterDescriptor.getType();
|
|
Intrinsics.checkNotNullExpressionValue(type, "getType(...)");
|
|
return reflectionObjectRenderer2.renderType(type);
|
|
}
|
|
}, 48, null);
|
|
sb.append(": ");
|
|
KotlinType returnType = descriptor.getReturnType();
|
|
Intrinsics.checkNotNull(returnType);
|
|
sb.append(reflectionObjectRenderer.renderType(returnType));
|
|
String sb2 = sb.toString();
|
|
Intrinsics.checkNotNullExpressionValue(sb2, "toString(...)");
|
|
return sb2;
|
|
}
|
|
|
|
public final String renderLambda(FunctionDescriptor invoke) {
|
|
Intrinsics.checkNotNullParameter(invoke, "invoke");
|
|
StringBuilder sb = new StringBuilder();
|
|
ReflectionObjectRenderer reflectionObjectRenderer = INSTANCE;
|
|
reflectionObjectRenderer.appendReceivers(sb, invoke);
|
|
List<ValueParameterDescriptor> valueParameters = invoke.getValueParameters();
|
|
Intrinsics.checkNotNullExpressionValue(valueParameters, "getValueParameters(...)");
|
|
CollectionsKt___CollectionsKt.joinTo$default(valueParameters, sb, ", ", "(", ")", 0, null, new Function1<ValueParameterDescriptor, CharSequence>() { // from class: kotlin.reflect.jvm.internal.ReflectionObjectRenderer$renderLambda$1$1
|
|
@Override // kotlin.jvm.functions.Function1
|
|
public final CharSequence invoke(ValueParameterDescriptor valueParameterDescriptor) {
|
|
ReflectionObjectRenderer reflectionObjectRenderer2 = ReflectionObjectRenderer.INSTANCE;
|
|
KotlinType type = valueParameterDescriptor.getType();
|
|
Intrinsics.checkNotNullExpressionValue(type, "getType(...)");
|
|
return reflectionObjectRenderer2.renderType(type);
|
|
}
|
|
}, 48, null);
|
|
sb.append(" -> ");
|
|
KotlinType returnType = invoke.getReturnType();
|
|
Intrinsics.checkNotNull(returnType);
|
|
sb.append(reflectionObjectRenderer.renderType(returnType));
|
|
String sb2 = sb.toString();
|
|
Intrinsics.checkNotNullExpressionValue(sb2, "toString(...)");
|
|
return sb2;
|
|
}
|
|
|
|
public final String renderParameter(KParameterImpl parameter) {
|
|
Intrinsics.checkNotNullParameter(parameter, "parameter");
|
|
StringBuilder sb = new StringBuilder();
|
|
int i = WhenMappings.$EnumSwitchMapping$0[parameter.getKind().ordinal()];
|
|
if (i == 1) {
|
|
sb.append("extension receiver parameter");
|
|
} else if (i == 2) {
|
|
sb.append("instance parameter");
|
|
} else if (i == 3) {
|
|
sb.append("parameter #" + parameter.getIndex() + ' ' + parameter.getName());
|
|
}
|
|
sb.append(" of ");
|
|
sb.append(INSTANCE.renderCallable(parameter.getCallable().getDescriptor()));
|
|
String sb2 = sb.toString();
|
|
Intrinsics.checkNotNullExpressionValue(sb2, "toString(...)");
|
|
return sb2;
|
|
}
|
|
|
|
public final String renderProperty(PropertyDescriptor descriptor) {
|
|
Intrinsics.checkNotNullParameter(descriptor, "descriptor");
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(descriptor.isVar() ? "var " : "val ");
|
|
ReflectionObjectRenderer reflectionObjectRenderer = INSTANCE;
|
|
reflectionObjectRenderer.appendReceivers(sb, descriptor);
|
|
DescriptorRenderer descriptorRenderer = renderer;
|
|
Name name = descriptor.getName();
|
|
Intrinsics.checkNotNullExpressionValue(name, "getName(...)");
|
|
sb.append(descriptorRenderer.renderName(name, true));
|
|
sb.append(": ");
|
|
KotlinType type = descriptor.getType();
|
|
Intrinsics.checkNotNullExpressionValue(type, "getType(...)");
|
|
sb.append(reflectionObjectRenderer.renderType(type));
|
|
String sb2 = sb.toString();
|
|
Intrinsics.checkNotNullExpressionValue(sb2, "toString(...)");
|
|
return sb2;
|
|
}
|
|
|
|
public final String renderType(KotlinType type) {
|
|
Intrinsics.checkNotNullParameter(type, "type");
|
|
return renderer.renderType(type);
|
|
}
|
|
}
|