diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/Namer.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/Namer.java index d2b57f69f70..fdf7542f84f 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/Namer.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/Namer.java @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor; import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.idea.JetLanguage; import org.jetbrains.kotlin.name.FqName; +import org.jetbrains.kotlin.name.FqNameUnsafe; import org.jetbrains.kotlin.resolve.DescriptorUtils; import java.util.Arrays; @@ -32,7 +33,6 @@ import static com.google.dart.compiler.backend.js.ast.AstPackage.JsObjectScope; import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.getModuleName; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getStableMangledNameForDescriptor; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName; -import static org.jetbrains.kotlin.resolve.DescriptorUtils.getFqNameSafe; /** * Encapsulates different types of constants and naming conventions. @@ -107,10 +107,16 @@ public final class Namer { @NotNull public static String getFunctionTag(@NotNull CallableDescriptor functionDescriptor) { - FqName fqName = getFqNameSafe(functionDescriptor); - String mangledName = getSuggestedName(functionDescriptor); String moduleName = getModuleName(functionDescriptor); - return StringUtil.join(Arrays.asList(moduleName, fqName, mangledName), "."); + FqNameUnsafe fqNameParent = DescriptorUtils.getFqName(functionDescriptor).parent(); + String qualifier = null; + + if (!fqNameParent.isRoot()) { + qualifier = fqNameParent.asString(); + } + + String mangledName = getSuggestedName(functionDescriptor); + return StringUtil.join(Arrays.asList(moduleName, qualifier, mangledName), "."); } @NotNull