Big refactoring continued. Migrating to package views and fragments.
This commit is contained in:
@@ -70,7 +70,7 @@ public final class JetDescriptorIconProvider {
|
||||
}
|
||||
|
||||
public static Icon getBaseIcon(@NotNull DeclarationDescriptor descriptor) {
|
||||
if (descriptor instanceof NamespaceDescriptor) {
|
||||
if (descriptor instanceof PackageFragmentDescriptor || descriptor instanceof PackageViewDescriptor) {
|
||||
return PlatformIcons.PACKAGE_ICON;
|
||||
}
|
||||
if (descriptor instanceof FunctionDescriptor) {
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
||||
@@ -175,12 +175,12 @@ public final class TipsManager {
|
||||
return Collections2.filter(descriptors, new Predicate<DeclarationDescriptor>() {
|
||||
@Override
|
||||
public boolean apply(DeclarationDescriptor declarationDescriptor) {
|
||||
if (declarationDescriptor instanceof NamespaceDescriptor) {
|
||||
if (declarationDescriptor instanceof PackageViewDescriptor) {
|
||||
// Heuristic: we don't want to complete "System" in "package java.lang.Sys",
|
||||
// so we find class of the same name as namespace, we exclude this namespace
|
||||
DeclarationDescriptor parent = declarationDescriptor.getContainingDeclaration();
|
||||
if (parent instanceof NamespaceDescriptor) {
|
||||
JetScope parentScope = ((NamespaceDescriptor) parent).getMemberScope();
|
||||
PackageViewDescriptor parent = ((PackageViewDescriptor) declarationDescriptor).getContainingDeclaration();
|
||||
if (parent != null) {
|
||||
JetScope parentScope = parent.getMemberScope();
|
||||
return parentScope.getClassifier(declarationDescriptor.getName()) == null;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -163,8 +163,8 @@ class CompletionSession {
|
||||
jetResult.addAllElements(jetCallableExtensions);
|
||||
}
|
||||
|
||||
public static boolean isPartOfTypeDeclaration(@NotNull DeclarationDescriptor descriptor) {
|
||||
if (descriptor instanceof NamespaceDescriptor || descriptor instanceof TypeParameterDescriptor) {
|
||||
private static boolean isPartOfTypeDeclaration(@NotNull DeclarationDescriptor descriptor) {
|
||||
if (descriptor instanceof PackageViewDescriptor || descriptor instanceof TypeParameterDescriptor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,7 @@ import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowValue
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ThisReceiver
|
||||
import org.jetbrains.jet.lang.psi.JetExpression
|
||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor
|
||||
|
||||
fun renderDataFlowValue(value: DataFlowValue): String? {
|
||||
// If it is not a stable identifier, there's no point in rendering it
|
||||
@@ -16,7 +15,7 @@ fun renderDataFlowValue(value: DataFlowValue): String? {
|
||||
is JetExpression -> id.getText()
|
||||
is ThisReceiver -> "this@${id.getDeclarationDescriptor().getName()}"
|
||||
is VariableDescriptor -> id.getName().asString()
|
||||
is NamespaceDescriptor -> DescriptorUtils.getFQName(id).asString()
|
||||
is PackageViewDescriptor -> id.getFqName().asString()
|
||||
is com.intellij.openapi.util.Pair<*, *> -> renderId(id.first) + "." + renderId(id.second)
|
||||
else -> null
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiModifier
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver
|
||||
|
||||
trait SmartCompletionData{
|
||||
fun accepts(descriptor: DeclarationDescriptor): Boolean
|
||||
@@ -256,12 +257,9 @@ private fun staticMembers(context: JetExpression, expectedType: JetType, resolve
|
||||
}
|
||||
|
||||
if (classDescriptor is JavaClassDescriptor) {
|
||||
val container = classDescriptor.getContainingDeclaration() //TODO: nested classes!
|
||||
if (container is NamespaceDescriptor) {
|
||||
val pseudoPackage: NamespaceDescriptor? = container.getMemberScope().getNamespace(classDescriptor.getName())
|
||||
if (pseudoPackage != null) {
|
||||
pseudoPackage.getMemberScope().getAllDescriptors().filterTo(descriptors, isSuitableCallable)
|
||||
}
|
||||
val pseudoPackage = JavaFunctionResolver.getPackageForCorrespondingJavaClass(classDescriptor)
|
||||
if (pseudoPackage != null) {
|
||||
pseudoPackage.getMemberScope().getAllDescriptors().filterTo(descriptors, isSuitableCallable)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementWeigher;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.LocalVariableDescriptor;
|
||||
@@ -53,7 +53,7 @@ class JetKindWeigher extends LookupElementWeigher {
|
||||
else if (descriptor instanceof PropertyDescriptor) {
|
||||
return MyResult.property;
|
||||
}
|
||||
else if (descriptor instanceof NamespaceDescriptor) {
|
||||
else if (descriptor instanceof PackageViewDescriptor) {
|
||||
return MyResult.packages;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -186,9 +186,9 @@ public class KotlinSignatureAnnotationIntention extends BaseIntentionAction impl
|
||||
@NotNull
|
||||
private static JetScope getMemberScope(PsiModifierListOwner psiModifierListOwner, FqName classFqName, JavaDescriptorResolver javaDescriptorResolver) {
|
||||
if (psiModifierListOwner.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
NamespaceDescriptor namespaceDescriptor = javaDescriptorResolver.resolveNamespace(classFqName, IGNORE_KOTLIN_SOURCES);
|
||||
assert namespaceDescriptor != null: "Couldn't resolve namespace descriptor for " + classFqName;
|
||||
return namespaceDescriptor.getMemberScope();
|
||||
PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragmentProvider().getOrCreatePackage(classFqName);
|
||||
assert packageFragment != null: "Couldn't resolve package fragment for " + classFqName;
|
||||
return packageFragment.getMemberScope();
|
||||
}
|
||||
|
||||
ClassDescriptor classDescriptor = javaDescriptorResolver.resolveClass(classFqName, IGNORE_KOTLIN_SOURCES);
|
||||
|
||||
+4
-4
@@ -38,7 +38,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace;
|
||||
@@ -166,12 +166,12 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
||||
@NotNull PsiMember member
|
||||
) {
|
||||
if (member.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
NamespaceDescriptor packageDescriptor = javaDescriptorResolver.resolveNamespace(classFqName, IGNORE_KOTLIN_SOURCES);
|
||||
if (packageDescriptor == null) {
|
||||
PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragmentProvider().getOrCreatePackage(classFqName);
|
||||
if (packageFragment == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return packageDescriptor.getMemberScope();
|
||||
return packageFragment.getMemberScope();
|
||||
}
|
||||
else {
|
||||
ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName, IGNORE_KOTLIN_SOURCES);
|
||||
|
||||
@@ -84,10 +84,10 @@ public final class DecompiledDataFactory {
|
||||
appendDecompiledTextAndPackageName(packageFqName);
|
||||
SerializedDataHeader.Kind kind = classFileHeader.getKind();
|
||||
if (kind == SerializedDataHeader.Kind.PACKAGE) {
|
||||
NamespaceDescriptor nd = javaDescriptorResolver.resolveNamespace(packageFqName, INCLUDE_KOTLIN_SOURCES);
|
||||
if (nd != null) {
|
||||
for (DeclarationDescriptor member : sortDeclarations(nd.getMemberScope().getAllDescriptors())) {
|
||||
if (!(member instanceof ClassOrNamespaceDescriptor)) {
|
||||
PackageFragmentDescriptor pf = javaDescriptorResolver.getPackageFragmentProvider().getOrCreatePackage(packageFqName);
|
||||
if (pf != null) {
|
||||
for (DeclarationDescriptor member : sortDeclarations(pf.getMemberScope().getAllDescriptors())) {
|
||||
if (!(member instanceof ClassDescriptor)) {
|
||||
appendDescriptor(member, "");
|
||||
builder.append("\n");
|
||||
}
|
||||
|
||||
+2
-2
@@ -195,8 +195,8 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro
|
||||
if (container instanceof JetFunction)
|
||||
return getFunctionBodyScope((JetFunction) container, bindingContext);
|
||||
}
|
||||
else if (containingDeclaration instanceof NamespaceDescriptor)
|
||||
return ((NamespaceDescriptor) containingDeclaration).getMemberScope();
|
||||
else if (containingDeclaration instanceof PackageFragmentDescriptor)
|
||||
return ((PackageFragmentDescriptor) containingDeclaration).getMemberScope();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user