diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java index 743839f85a2..ff69c148a12 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java @@ -26,6 +26,7 @@ import org.jetbrains.jet.codegen.state.GenerationStateAware; import org.jetbrains.jet.codegen.state.JetTypeMapperMode; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.resolve.java.JvmClassName; import org.jetbrains.jet.lang.resolve.name.FqName; import javax.inject.Inject; @@ -33,6 +34,7 @@ import java.io.File; import java.util.*; import static org.jetbrains.jet.codegen.AsmUtil.isPrimitive; +import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; public final class ClassFileFactory extends GenerationStateAware { @NotNull private ClassBuilderFactory builderFactory; @@ -111,7 +113,7 @@ public final class ClassFileFactory extends GenerationStateAware { @NotNull @Override protected ClassBuilder createClassBuilder() { - return newVisitor(NamespaceCodegen.getJVMClassNameForKotlinNs(fqName).getAsmType(), files); + return newVisitor(JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(fqName)).getAsmType(), files); } }; codegen = new NamespaceCodegen(onDemand, fqName, state, files); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index 9b3cf4ab58c..2d96c66009e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -44,7 +44,6 @@ import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames; import org.jetbrains.jet.lang.resolve.java.JvmClassName; -import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; @@ -56,6 +55,7 @@ import java.util.List; import static org.jetbrains.asm4.Opcodes.*; import static org.jetbrains.jet.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses; import static org.jetbrains.jet.descriptors.serialization.NameSerializationUtil.createNameResolver; +import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; public class NamespaceCodegen extends MemberCodegen { @NotNull @@ -87,7 +87,7 @@ public class NamespaceCodegen extends MemberCodegen { public void doSomething(@NotNull ClassBuilder v) { v.defineClass(sourceFile, V1_6, ACC_PUBLIC | ACC_FINAL, - getJVMClassNameForKotlinNs(fqName).getInternalName(), + JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(fqName)).getInternalName(), null, //"jet/lang/Namespace", "java/lang/Object", @@ -183,7 +183,7 @@ public class NamespaceCodegen extends MemberCodegen { if (!generateSrcClass) return null; - Type namespacePartType = getNamespacePartType(PackageClassUtils.getPackageClassFqName(name), file); + Type namespacePartType = getNamespacePartType(getPackageClassFqName(name), file); ClassBuilder builder = state.getFactory().forNamespacePart(namespacePartType, file); builder.defineClass(file, V1_6, @@ -308,16 +308,6 @@ public class NamespaceCodegen extends MemberCodegen { v.done(); } - @NotNull - public static JvmClassName getJVMClassNameForKotlinNs(@NotNull FqName fqName) { - String packageClassName = PackageClassUtils.getPackageClassName(fqName); - if (fqName.isRoot()) { - return JvmClassName.byInternalName(packageClassName); - } - - return JvmClassName.byFqNameWithoutInnerClasses(fqName.child(Name.identifier(packageClassName))); - } - @NotNull private static Type getNamespacePartType(@NotNull FqName facadeFqName, @NotNull PsiFile file) { String fileName = FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.getName())); @@ -338,8 +328,7 @@ public class NamespaceCodegen extends MemberCodegen { @NotNull public static String getNamespacePartInternalName(@NotNull JetFile file) { - FqName fqName = JetPsiUtil.getFQName(file); - JvmClassName namespaceJvmClassName = getJVMClassNameForKotlinNs(fqName); - return getNamespacePartType(namespaceJvmClassName.getFqName(), file).getInternalName(); + FqName packageFqName = JetPsiUtil.getFQName(file); + return getNamespacePartType(getPackageClassFqName(packageFqName), file).getInternalName(); } } diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index dc03d262538..d275aaec4d4 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -26,7 +26,7 @@ import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.lang.psi.JetPsiUtil; -import org.jetbrains.jet.lang.resolve.java.JvmClassName; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.utils.ExceptionUtils; import java.io.File; @@ -37,6 +37,7 @@ import java.net.URL; import java.util.List; import static org.jetbrains.jet.codegen.CodegenTestUtil.*; +import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; public abstract class CodegenTestCase extends UsefulTestCase { @@ -136,8 +137,8 @@ public abstract class CodegenTestCase extends UsefulTestCase { @NotNull protected Class generateNamespaceClass() { - JvmClassName name = NamespaceCodegen.getJVMClassNameForKotlinNs(JetPsiUtil.getFQName(myFiles.getPsiFile())); - return generateClass(name.getFqName().asString()); + FqName packageFqName = JetPsiUtil.getFQName(myFiles.getPsiFile()); + return generateClass(getPackageClassFqName(packageFqName).asString()); } @NotNull diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java index 0a610711985..9684e5f1f66 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java @@ -26,7 +26,6 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.codegen.ClassFileFactory; import org.jetbrains.jet.codegen.CodegenTestCase; import org.jetbrains.jet.codegen.GeneratedClassLoader; -import org.jetbrains.jet.codegen.NamespaceCodegen; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.utils.ExceptionUtils; @@ -38,6 +37,7 @@ import java.util.Collections; import java.util.List; import static org.jetbrains.jet.codegen.CodegenTestUtil.compileJava; +import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { public void doTest(@NotNull String filename) { @@ -97,7 +97,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { // If there are many files, the first of them should contain the 'box(): String' function JetFile firstFile = myFiles.getPsiFiles().get(0); - String fqName = NamespaceCodegen.getJVMClassNameForKotlinNs(JetPsiUtil.getFQName(firstFile)).getFqName().asString(); + String fqName = getPackageClassFqName(JetPsiUtil.getFQName(firstFile)).asString(); try { Class namespaceClass = loader.loadClass(fqName);