creation JvmClassName from class descriptor

This commit is contained in:
Svetlana Isakova
2012-09-18 13:15:17 +04:00
parent 00447b8cd4
commit 305c42e15d
@@ -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>";