creation JvmClassName from class descriptor
This commit is contained in:
@@ -19,6 +19,10 @@ package org.jetbrains.jet.lang.resolve.java;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.asm4.Type;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
/**
|
||||
@@ -65,6 +69,19 @@ public class JvmClassName {
|
||||
return StringUtil.replace(decodedObjectNames, TRAIT_IMPL_REPLACE_GUARD, JvmAbi.TRAIT_IMPL_CLASS_NAME);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JvmClassName byClassDescriptor(@NotNull ClassifierDescriptor classDescriptor) {
|
||||
//todo inner inner classes
|
||||
DeclarationDescriptor containingDeclaration = classDescriptor.getContainingDeclaration();
|
||||
|
||||
if (!(containingDeclaration instanceof ClassDescriptor)) {
|
||||
return byFqNameWithoutInnerClasses(DescriptorUtils.getFQName(classDescriptor).toSafe());
|
||||
}
|
||||
|
||||
String fqName = DescriptorUtils.getFQName(containingDeclaration).getFqName();
|
||||
return new JvmClassName(fqName.replace('.', '/') + "." + classDescriptor.getName());
|
||||
}
|
||||
|
||||
private final static String CLASS_OBJECT_REPLACE_GUARD = "<class_object>";
|
||||
private final static String TRAIT_IMPL_REPLACE_GUARD = "<trait_impl>";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user