[IR] Generify lowerings
#KT-1179
This commit is contained in:
committed by
teamcity
parent
22b2554368
commit
282ab398c6
+1
@@ -95,6 +95,7 @@ class SyntheticClassOrObjectDescriptor(
|
||||
override fun getUnsubstitutedMemberScope(kotlinTypeRefiner: KotlinTypeRefiner) = unsubstitutedMemberScope
|
||||
override fun getSealedSubclasses() = emptyList<ClassDescriptor>()
|
||||
override fun getInlineClassRepresentation(): InlineClassRepresentation<SimpleType>? = null
|
||||
override fun getMultiFieldValueClassRepresentation(): MultiFieldValueClassRepresentation<SimpleType>? = null
|
||||
|
||||
init {
|
||||
assert(modality != Modality.SEALED) { "Implement getSealedSubclasses() for this class: ${this::class.java}" }
|
||||
|
||||
+24
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.resolve.lazy.descriptors;
|
||||
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiNameIdentifierOwner;
|
||||
import kotlin.Pair;
|
||||
import kotlin.annotations.jvm.ReadOnly;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
@@ -48,6 +49,7 @@ import org.jetbrains.kotlin.storage.NullableLazyValue;
|
||||
import org.jetbrains.kotlin.storage.StorageManager;
|
||||
import org.jetbrains.kotlin.types.*;
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner;
|
||||
import org.jetbrains.kotlin.types.checker.SimpleClassicTypeSystemContext;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -646,6 +648,28 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public MultiFieldValueClassRepresentation<SimpleType> getMultiFieldValueClassRepresentation() {
|
||||
if (!InlineClassesUtilsKt.isValueClass(this) || InlineClassesUtilsKt.isInlineClass(this)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
ClassConstructorDescriptor constructor = getUnsubstitutedPrimaryConstructor();
|
||||
// Don't crash on invalid code. It is IC, not MFVC.
|
||||
if (constructor == null) {
|
||||
return null;
|
||||
}
|
||||
List<ValueParameterDescriptor> parameters = constructor.getValueParameters();
|
||||
if (parameters.size() <= 1) {
|
||||
return null;
|
||||
}
|
||||
List<Pair<Name, SimpleType>> properties = parameters.stream()
|
||||
.map(parameter -> new Pair<>(parameter.getName(), (SimpleType) parameter.getType()))
|
||||
.collect(Collectors.toList());
|
||||
return new MultiFieldValueClassRepresentation<>(properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
// not using DescriptorRenderer to preserve laziness
|
||||
|
||||
Reference in New Issue
Block a user