NamespaceCodegen.getNamespacePartInternalName()

Should be used instead of getMultiFileNamespaceInternalName()
This commit is contained in:
Alexander Udalov
2012-10-22 16:33:32 +04:00
parent e7a7afa0be
commit a8798de8d0
3 changed files with 12 additions and 5 deletions
@@ -286,7 +286,7 @@ public class NamespaceCodegen extends MemberCodegen {
}
@NotNull
public static String getMultiFileNamespaceInternalName(String namespaceInternalName, PsiFile file) {
private static String getMultiFileNamespaceInternalName(@NotNull String namespaceInternalName, @NotNull PsiFile file) {
String name = FileUtil.toSystemDependentName(file.getName());
int substringFrom = name.lastIndexOf(File.separator) + 1;
@@ -302,4 +302,12 @@ public class NamespaceCodegen extends MemberCodegen {
// path hashCode to prevent same name / different path collision
return namespaceInternalName + "$src$" + name.substring(substringFrom, substringTo) + "$" + pathHashCode;
}
@NotNull
public static String getNamespacePartInternalName(@NotNull JetFile file) {
FqName fqName = JetPsiUtil.getFQName(file);
JvmClassName namespaceJvmClassName = NamespaceCodegen.getJVMClassNameForKotlinNs(fqName);
String namespaceInternalName = namespaceJvmClassName.getInternalName();
return NamespaceCodegen.getMultiFileNamespaceInternalName(namespaceInternalName, file);
}
}
@@ -123,7 +123,7 @@ public class JavaElementFinder extends PsiElementFinder implements JavaPsiFacade
final FqName packageName = JetPsiUtil.getFQName(file);
if (packageName != null && qualifiedName.getFqName().startsWith(packageName.getFqName())) {
String packageInternalName = NamespaceCodegen.getJVMClassNameForKotlinNs(packageName).getInternalName();
String multiFileNamespaceInternalName = NamespaceCodegen.getMultiFileNamespaceInternalName(packageInternalName, file);
String multiFileNamespaceInternalName = NamespaceCodegen.getNamespacePartInternalName(file);
if (multiFileNamespaceInternalName.equals(internalNameUnsafe) ||
(packageInternalName.equals(internalNameUnsafe) && NamespaceCodegen.shouldGenerateNSClass(Arrays.asList(file)))) {
JetLightClass lightClass = JetLightClass.create(psiManager, file, qualifiedName);
@@ -163,12 +163,11 @@ public class JetPositionManager implements PositionManager {
if (result.isNull()) {
FqName fqName = JetPsiUtil.getFQName(namespace);
boolean multiFileNamespace = isMultiFileNamespace(typeMapper.getBindingContext(), fqName);
String namespaceInternalName = NamespaceCodegen.getJVMClassNameForKotlinNs(fqName).getInternalName();
if (multiFileNamespace) {
result.set(NamespaceCodegen.getMultiFileNamespaceInternalName(namespaceInternalName, namespace));
result.set(NamespaceCodegen.getNamespacePartInternalName(namespace));
}
else {
result.set(namespaceInternalName);
result.set(NamespaceCodegen.getJVMClassNameForKotlinNs(fqName).getInternalName());
}
}
}