diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java index 57605e9648f..4d1ca0eb5eb 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java @@ -17,6 +17,8 @@ package org.jetbrains.jet.codegen; import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.psi.PsiFile; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.Stack; import org.jetbrains.annotations.NotNull; @@ -286,4 +288,10 @@ public class CodegenUtil { return ((ImplementationBodyCodegen) classBodyCodegen.getParentCodegen()); } + + static int getPathHashCode(@NotNull PsiFile file) { + // Conversion to system-dependent name seems to be unnecessary, but it's hard to check now: + // it was introduced when fixing KT-2839, which appeared again (KT-3639). + return FileUtil.toSystemDependentName(file.getVirtualFile().getPath()).hashCode(); + } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index 446d64f0a40..1cfe73b0f10 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -273,12 +273,9 @@ public class NamespaceCodegen extends MemberCodegen { private static String getMultiFileNamespaceInternalName(@NotNull String namespaceInternalName, @NotNull PsiFile file) { String fileName = FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.getName())); - // Conversion to system-dependent name seems to be unnecessary, but it's hard to check now: - // it was introduced when fixing KT-2839, which appeared again (KT-3639). - String pathHashCode = Integer.toHexString(FileUtil.toSystemDependentName(file.getVirtualFile().getPath()).hashCode()); - // path hashCode to prevent same name / different path collision - return namespaceInternalName + "$src$" + replaceSpecialSymbols(fileName) + "$" + pathHashCode; + return namespaceInternalName + "$src$" + replaceSpecialSymbols(fileName) + "$" + Integer.toHexString( + CodegenUtil.getPathHashCode(file)); } private static String replaceSpecialSymbols(@NotNull String str) {