Some comments to clarify what's going on

This commit is contained in:
Andrey Breslav
2011-12-09 14:09:09 +04:00
parent 370167eec6
commit 459c2e913f
2 changed files with 7 additions and 0 deletions
@@ -77,11 +77,13 @@ public class JavaDescriptorResolver {
public ClassDescriptor resolveClass(@NotNull PsiClass psiClass) { public ClassDescriptor resolveClass(@NotNull PsiClass psiClass) {
String qualifiedName = psiClass.getQualifiedName(); String qualifiedName = psiClass.getQualifiedName();
// First, let's check that this is a real Java class, not a Java's view on a Kotlin class:
ClassDescriptor kotlinClassDescriptor = semanticServices.getKotlinClassDescriptor(qualifiedName); ClassDescriptor kotlinClassDescriptor = semanticServices.getKotlinClassDescriptor(qualifiedName);
if (kotlinClassDescriptor != null) { if (kotlinClassDescriptor != null) {
return kotlinClassDescriptor; return kotlinClassDescriptor;
} }
// Not let's take a descriptor of a Java class
ClassDescriptor classDescriptor = classDescriptorCache.get(qualifiedName); ClassDescriptor classDescriptor = classDescriptorCache.get(qualifiedName);
if (classDescriptor == null) { if (classDescriptor == null) {
classDescriptor = createJavaClassDescriptor(psiClass); classDescriptor = createJavaClassDescriptor(psiClass);
@@ -92,11 +94,13 @@ public class JavaDescriptorResolver {
@Nullable @Nullable
public ClassDescriptor resolveClass(@NotNull String qualifiedName) { public ClassDescriptor resolveClass(@NotNull String qualifiedName) {
// First, let's check that this is a real Java class, not a Java's view on a Kotlin class:
ClassDescriptor kotlinClassDescriptor = semanticServices.getKotlinClassDescriptor(qualifiedName); ClassDescriptor kotlinClassDescriptor = semanticServices.getKotlinClassDescriptor(qualifiedName);
if (kotlinClassDescriptor != null) { if (kotlinClassDescriptor != null) {
return kotlinClassDescriptor; return kotlinClassDescriptor;
} }
// Not let's take a descriptor of a Java class
ClassDescriptor classDescriptor = classDescriptorCache.get(qualifiedName); ClassDescriptor classDescriptor = classDescriptorCache.get(qualifiedName);
if (classDescriptor == null) { if (classDescriptor == null) {
PsiClass psiClass = findClass(qualifiedName); PsiClass psiClass = findClass(qualifiedName);
@@ -41,6 +41,8 @@ public class JavaPackageScope extends JetScopeImpl {
@NotNull @NotNull
@Override @Override
public Set<FunctionDescriptor> getFunctions(@NotNull String name) { public Set<FunctionDescriptor> getFunctions(@NotNull String name) {
// If this package is actually a Kotlin namespace, then we access it through a namespace descriptor, and
// Kotlin functions are already there
NamespaceDescriptor kotlinNamespaceDescriptor = semanticServices.getKotlinNamespaceDescriptor(packageFQN); NamespaceDescriptor kotlinNamespaceDescriptor = semanticServices.getKotlinNamespaceDescriptor(packageFQN);
if (kotlinNamespaceDescriptor != null) { if (kotlinNamespaceDescriptor != null) {
return Collections.emptySet(); return Collections.emptySet();
@@ -83,6 +85,7 @@ public class JavaPackageScope extends JetScopeImpl {
} }
for (PsiClass psiClass : javaPackage.getClasses()) { for (PsiClass psiClass : javaPackage.getClasses()) {
// If this is a Kotlin class, we have already taken it through a containing namespace descriptor
ClassDescriptor kotlinClassDescriptor = semanticServices.getKotlinClassDescriptor(psiClass.getQualifiedName()); ClassDescriptor kotlinClassDescriptor = semanticServices.getKotlinClassDescriptor(psiClass.getQualifiedName());
if (kotlinClassDescriptor != null) { if (kotlinClassDescriptor != null) {
continue; continue;