Introduced utility method.

This commit is contained in:
Evgeny Gerashchenko
2014-04-11 20:25:11 +04:00
parent 0332353874
commit d3ff9e974b
6 changed files with 17 additions and 11 deletions
@@ -730,7 +730,12 @@ public class AsmUtil {
@NotNull @NotNull
public static Type asmTypeByFqNameWithoutInnerClasses(@NotNull FqName fqName) { public static Type asmTypeByFqNameWithoutInnerClasses(@NotNull FqName fqName) {
return Type.getObjectType(JvmClassName.byFqNameWithoutInnerClasses(fqName).getInternalName()); return Type.getObjectType(internalNameByFqNameWithoutInnerClasses(fqName));
}
@NotNull
public static String internalNameByFqNameWithoutInnerClasses(@NotNull FqName fqName) {
return JvmClassName.byFqNameWithoutInnerClasses(fqName).getInternalName();
} }
public static void writeOuterClassAndEnclosingMethod( public static void writeOuterClassAndEnclosingMethod(
@@ -90,7 +90,7 @@ public class PackageCodegen {
JetFile sourceFile = files.size() == 1 && previouslyCompiledCallables.isEmpty() JetFile sourceFile = files.size() == 1 && previouslyCompiledCallables.isEmpty()
? files.iterator().next() : null; ? files.iterator().next() : null;
String className = JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(fqName)).getInternalName(); String className = AsmUtil.internalNameByFqNameWithoutInnerClasses(getPackageClassFqName(fqName));
ClassBuilder v = PackageCodegen.this.state.getFactory().newVisitor(Type.getObjectType(className), files); ClassBuilder v = PackageCodegen.this.state.getFactory().newVisitor(Type.getObjectType(className), files);
v.defineClass(sourceFile, V1_6, v.defineClass(sourceFile, V1_6,
ACC_PUBLIC | ACC_FINAL, ACC_PUBLIC | ACC_FINAL,
@@ -371,6 +371,6 @@ public class PackageCodegen {
public static String getPackagePartInternalName(@NotNull DeserializedCallableMemberDescriptor callable) { public static String getPackagePartInternalName(@NotNull DeserializedCallableMemberDescriptor callable) {
FqName packageFqName = ((PackageFragmentDescriptor) callable.getContainingDeclaration()).getFqName(); FqName packageFqName = ((PackageFragmentDescriptor) callable.getContainingDeclaration()).getFqName();
FqName packagePartFqName = packageFqName.child(BaseDescriptorDeserializer.getPackagePartClassName(callable)); FqName packagePartFqName = packageFqName.child(BaseDescriptorDeserializer.getPackagePartClassName(callable));
return JvmClassName.byFqNameWithoutInnerClasses(packagePartFqName).getInternalName(); return AsmUtil.internalNameByFqNameWithoutInnerClasses(packagePartFqName);
} }
} }
@@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor; import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -133,7 +132,7 @@ public class SamWrapperCodegen {
@NotNull @NotNull
private String getWrapperName(@NotNull JetFile containingFile) { private String getWrapperName(@NotNull JetFile containingFile) {
FqName packageClassFqName = PackageClassUtils.getPackageClassFqName(containingFile.getPackageFqName()); FqName packageClassFqName = PackageClassUtils.getPackageClassFqName(containingFile.getPackageFqName());
String packageInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageClassFqName).getInternalName(); String packageInternalName = AsmUtil.internalNameByFqNameWithoutInnerClasses(packageClassFqName);
JavaClassDescriptor descriptor = samType.getJavaClassDescriptor(); JavaClassDescriptor descriptor = samType.getJavaClassDescriptor();
return packageInternalName + "$sam$" + descriptor.getName().asString() + "$" + return packageInternalName + "$sam$" + descriptor.getName().asString() + "$" +
Integer.toHexString( Integer.toHexString(
@@ -22,6 +22,7 @@ import com.intellij.psi.tree.TokenSet;
import com.intellij.util.containers.Stack; import com.intellij.util.containers.Stack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.codegen.AsmUtil;
import org.jetbrains.jet.codegen.JvmFunctionImplTypes; import org.jetbrains.jet.codegen.JvmFunctionImplTypes;
import org.jetbrains.jet.codegen.SamCodegenUtil; import org.jetbrains.jet.codegen.SamCodegenUtil;
import org.jetbrains.jet.codegen.SamType; import org.jetbrains.jet.codegen.SamType;
@@ -36,7 +37,6 @@ import org.jetbrains.jet.lang.resolve.calls.model.ExpressionValueArgument;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedValueArgument; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedValueArgument;
import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
@@ -148,7 +148,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
nameStack.push(asmTypeForScriptPsi(bindingContext, file.getScript()).getInternalName()); nameStack.push(asmTypeForScriptPsi(bindingContext, file.getScript()).getInternalName());
} }
else { else {
nameStack.push(JvmClassName.byFqNameWithoutInnerClasses(file.getPackageFqName()).getInternalName()); nameStack.push(AsmUtil.internalNameByFqNameWithoutInnerClasses(file.getPackageFqName()));
} }
file.acceptChildren(this); file.acceptChildren(this);
nameStack.pop(); nameStack.pop();
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.codegen.AsmUtil;
import org.jetbrains.jet.codegen.ClassBuilderFactories; import org.jetbrains.jet.codegen.ClassBuilderFactories;
import org.jetbrains.jet.codegen.PackageCodegen; import org.jetbrains.jet.codegen.PackageCodegen;
import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.codegen.state.GenerationState;
@@ -86,12 +87,12 @@ public final class PsiCodegenPredictor {
FqName packageFqName = declaration.getContainingJetFile().getPackageFqName(); FqName packageFqName = declaration.getContainingJetFile().getPackageFqName();
if (declaration instanceof JetNamedFunction) { if (declaration instanceof JetNamedFunction) {
JvmClassName packageClass = JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(packageFqName)); FqName packageClass = getPackageClassFqName(packageFqName);
Name name = ((JetNamedFunction) declaration).getNameAsName(); Name name = ((JetNamedFunction) declaration).getNameAsName();
return name == null ? null : packageClass.getInternalName() + "$" + name.asString(); return name == null ? null : AsmUtil.internalNameByFqNameWithoutInnerClasses(packageClass) + "$" + name.asString();
} }
parentInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageFqName).getInternalName(); parentInternalName = AsmUtil.internalNameByFqNameWithoutInnerClasses(packageFqName);
} }
if (declaration instanceof JetClassObject) { if (declaration instanceof JetClassObject) {
@@ -23,6 +23,7 @@ import org.jetbrains.jet.descriptors.serialization.NameResolver
import org.jetbrains.jet.descriptors.serialization.JavaProtoBuf import org.jetbrains.jet.descriptors.serialization.JavaProtoBuf
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor
import org.jetbrains.jet.lang.resolve.java.JvmClassName import org.jetbrains.jet.lang.resolve.java.JvmClassName
import org.jetbrains.jet.codegen.AsmUtil
public class CliSourcesMemberFilter(environment: JetCoreEnvironment): MemberFilter { public class CliSourcesMemberFilter(environment: JetCoreEnvironment): MemberFilter {
val packagePartClassNames = environment.getSourceFiles().map { getPackagePartInternalName(it) }.toSet() val packagePartClassNames = environment.getSourceFiles().map { getPackagePartInternalName(it) }.toSet()
@@ -31,7 +32,7 @@ public class CliSourcesMemberFilter(environment: JetCoreEnvironment): MemberFilt
if (member.hasExtension(JavaProtoBuf.implClassName)) { if (member.hasExtension(JavaProtoBuf.implClassName)) {
val shortName = nameResolver.getName(member.getExtension(JavaProtoBuf.implClassName)!!) val shortName = nameResolver.getName(member.getExtension(JavaProtoBuf.implClassName)!!)
val fqName = container.fqName.child(shortName) val fqName = container.fqName.child(shortName)
val internalName = JvmClassName.byFqNameWithoutInnerClasses(fqName).getInternalName() val internalName = AsmUtil.internalNameByFqNameWithoutInnerClasses(fqName)
return internalName !in packagePartClassNames return internalName !in packagePartClassNames
} }
return true return true