Very temp commit for getting top level function descriptions from java package
This commit is contained in:
+25
-1
@@ -1,7 +1,9 @@
|
|||||||
package org.jetbrains.jet.lang.resolve.java;
|
package org.jetbrains.jet.lang.resolve.java;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.psi.PsiClass;
|
import com.intellij.psi.PsiClass;
|
||||||
|
import com.intellij.psi.PsiMethod;
|
||||||
import com.intellij.psi.PsiModifier;
|
import com.intellij.psi.PsiModifier;
|
||||||
import com.intellij.psi.PsiPackage;
|
import com.intellij.psi.PsiPackage;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -11,11 +13,15 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author abreslav
|
* @author abreslav
|
||||||
*/
|
*/
|
||||||
public class JavaPackageScope extends JavaClassOrPackageScope {
|
public class JavaPackageScope extends JavaClassOrPackageScope {
|
||||||
|
|
||||||
|
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.migration.PsiMigrationImpl");
|
||||||
|
|
||||||
private final String packageFQN;
|
private final String packageFQN;
|
||||||
|
|
||||||
private Collection<DeclarationDescriptor> allDescriptors;
|
private Collection<DeclarationDescriptor> allDescriptors;
|
||||||
@@ -86,7 +92,9 @@ public class JavaPackageScope extends JavaClassOrPackageScope {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (PsiClass psiClass : javaPackage.getClasses()) {
|
for (PsiClass psiClass : javaPackage.getClasses()) {
|
||||||
if (isKotlinNamespace && JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) continue;
|
if (isKotlinNamespace && JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// If this is a Kotlin class, we have already taken it through a containing namespace descriptor
|
// 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());
|
||||||
@@ -94,6 +102,22 @@ public class JavaPackageScope extends JavaClassOrPackageScope {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Temp hack for collection function descriptors from java
|
||||||
|
if (JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) {
|
||||||
|
HashSet<String> methodNames = new HashSet<String>();
|
||||||
|
for (PsiMethod psiMethod : psiClass.getMethods()) {
|
||||||
|
methodNames.add(psiMethod.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String methodName : methodNames) {
|
||||||
|
try {
|
||||||
|
allDescriptors.addAll(getFunctions(methodName));
|
||||||
|
} catch (RuntimeException ex) {
|
||||||
|
LOG.error(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (psiClass.hasModifierProperty(PsiModifier.PUBLIC)) {
|
if (psiClass.hasModifierProperty(PsiModifier.PUBLIC)) {
|
||||||
ClassDescriptor classDescriptor = descriptorResolver.resolveClass(psiClass);
|
ClassDescriptor classDescriptor = descriptorResolver.resolveClass(psiClass);
|
||||||
if (classDescriptor != null) {
|
if (classDescriptor != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user