Unify WhenMissingCase from FIR and FE1.0

This commit is contained in:
Ilya Kirillov
2021-02-24 12:23:19 +01:00
parent f4371c670e
commit f19a9af7b3
7 changed files with 47 additions and 50 deletions
@@ -12,12 +12,10 @@ import org.jetbrains.kotlin.builtins.UnsignedTypes;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.annotations.Annotated;
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl;
import org.jetbrains.kotlin.incremental.components.LookupLocation;
import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.FqNameUnsafe;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.name.SpecialNames;
import org.jetbrains.kotlin.name.*;
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
import org.jetbrains.kotlin.resolve.constants.StringValue;
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
@@ -114,6 +112,20 @@ public class DescriptorUtils {
return getFqNameFromTopLevelClass(containingDeclaration).child(name);
}
@NotNull
public static ClassId getClassIdForNonLocalClass(@NotNull DeclarationDescriptor descriptor) {
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
Name name = descriptor.getName();
if (containingDeclaration instanceof PackageFragmentDescriptorImpl) {
FqName packageFqName = ((PackageFragmentDescriptorImpl) containingDeclaration).getFqName();
return new ClassId(packageFqName, name);
}
if (!(containingDeclaration instanceof ClassDescriptor)) {
return new ClassId(FqName.ROOT, name);
}
return getClassIdForNonLocalClass(containingDeclaration).createNestedClassId(name);
}
public static boolean isTopLevelDeclaration(@Nullable DeclarationDescriptor descriptor) {
return descriptor != null && descriptor.getContainingDeclaration() instanceof PackageFragmentDescriptor;
}