Write to trace in case class qualifier is a short reference to default object
This allows to fix some cases when there is a difference between explicit and short reference to default object Fix shorten reference, optimize imports and import insert helper for default objects ShortenReferences always transforms default object references to shorter form for now Fix DescriptorUtils#getFqName() for default objects (affects test data mostly) Fix DescriptorUtils#getImportableDescriptor()
This commit is contained in:
@@ -104,20 +104,14 @@ public class DescriptorUtils {
|
||||
|
||||
@NotNull
|
||||
private static FqNameUnsafe getFqNameUnsafe(@NotNull DeclarationDescriptor descriptor) {
|
||||
DeclarationDescriptor containingDeclaration = getContainingDeclarationSkippingClassObjects(descriptor);
|
||||
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
|
||||
assert containingDeclaration != null : "Not package/module descriptor doesn't have containing declaration: " + descriptor;
|
||||
return getFqName(containingDeclaration).child(descriptor.getName());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static DeclarationDescriptor getContainingDeclarationSkippingClassObjects(@NotNull DeclarationDescriptor descriptor) {
|
||||
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
|
||||
return isClassObject(containingDeclaration) ? containingDeclaration.getContainingDeclaration() : containingDeclaration;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static FqName getFqNameFromTopLevelClass(@NotNull DeclarationDescriptor descriptor) {
|
||||
DeclarationDescriptor containingDeclaration = getContainingDeclarationSkippingClassObjects(descriptor);
|
||||
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
|
||||
Name name = descriptor.getName();
|
||||
if (!(containingDeclaration instanceof ClassDescriptor)) {
|
||||
return FqName.topLevel(name);
|
||||
|
||||
@@ -26,7 +26,7 @@ public fun ClassDescriptor.getClassObjectReferenceTarget(): ClassDescriptor = ge
|
||||
|
||||
public fun DeclarationDescriptor.getImportableDescriptor(): DeclarationDescriptor {
|
||||
return when {
|
||||
this is ConstructorDescriptor, DescriptorUtils.isClassObject(this) -> getContainingDeclaration()!!
|
||||
this is ConstructorDescriptor -> getContainingDeclaration()
|
||||
this is PropertyAccessorDescriptor -> getCorrespondingProperty()
|
||||
else -> this
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user