Big refactoring continued. Migrating to package views and fragments.
This commit is contained in:
@@ -101,14 +101,6 @@ public class BindingContextUtils {
|
|||||||
return (JetFile) containingFile;
|
return (JetFile) containingFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO these helper methods are added as a workaround to some compiler bugs in Kotlin...
|
|
||||||
|
|
||||||
// NOTE this is used by KDoc
|
|
||||||
@Nullable
|
|
||||||
public static NamespaceDescriptor namespaceDescriptor(@NotNull BindingContext context, @NotNull JetFile source) {
|
|
||||||
return context.get(BindingContext.FILE_TO_NAMESPACE, source);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static PsiElement doGetDescriptorToDeclaration(@NotNull BindingContext context, @NotNull DeclarationDescriptor descriptor) {
|
private static PsiElement doGetDescriptorToDeclaration(@NotNull BindingContext context, @NotNull DeclarationDescriptor descriptor) {
|
||||||
return context.get(DESCRIPTOR_TO_DECLARATION, descriptor);
|
return context.get(DESCRIPTOR_TO_DECLARATION, descriptor);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiElement;
|
|||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -51,7 +51,7 @@ public class LibrarySourceHacks {
|
|||||||
if (!(original instanceof CallableMemberDescriptor)) {
|
if (!(original instanceof CallableMemberDescriptor)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!(original.getContainingDeclaration() instanceof NamespaceDescriptor)) {
|
if (!(original.getContainingDeclaration() instanceof PackageFragmentDescriptor)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -111,7 +111,7 @@ public class DataFlowValueFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static IdentifierInfo createNamespaceInfo(Object id) {
|
private static IdentifierInfo createPackageInfo(Object id) {
|
||||||
return new IdentifierInfo(id, true, true);
|
return new IdentifierInfo(id, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ public class DataFlowValueFactory {
|
|||||||
return getIdForThisReceiver(declarationDescriptor);
|
return getIdForThisReceiver(declarationDescriptor);
|
||||||
}
|
}
|
||||||
else if (expression instanceof JetRootNamespaceExpression) {
|
else if (expression instanceof JetRootNamespaceExpression) {
|
||||||
return createNamespaceInfo(JetModuleUtil.getRootNamespaceType(expression));
|
return createPackageInfo(JetModuleUtil.getRootNamespaceType(expression));
|
||||||
}
|
}
|
||||||
return NO_IDENTIFIER_INFO;
|
return NO_IDENTIFIER_INFO;
|
||||||
}
|
}
|
||||||
@@ -179,8 +179,8 @@ public class DataFlowValueFactory {
|
|||||||
VariableDescriptor variableDescriptor = (VariableDescriptor) declarationDescriptor;
|
VariableDescriptor variableDescriptor = (VariableDescriptor) declarationDescriptor;
|
||||||
return combineInfo(receiverInfo, createInfo(variableDescriptor, isStableVariable(variableDescriptor)));
|
return combineInfo(receiverInfo, createInfo(variableDescriptor, isStableVariable(variableDescriptor)));
|
||||||
}
|
}
|
||||||
if (declarationDescriptor instanceof NamespaceDescriptor) {
|
if (declarationDescriptor instanceof PackageViewDescriptor) {
|
||||||
return createNamespaceInfo(declarationDescriptor);
|
return createPackageInfo(declarationDescriptor);
|
||||||
}
|
}
|
||||||
return NO_IDENTIFIER_INFO;
|
return NO_IDENTIFIER_INFO;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,21 +186,6 @@ public class WriteThroughScope extends WritableScopeWithImports {
|
|||||||
writableWorker.addFunctionAlias(name, functionDescriptor);
|
writableWorker.addFunctionAlias(name, functionDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addNamespace(@NotNull NamespaceDescriptor namespaceDescriptor) {
|
|
||||||
checkMayWrite();
|
|
||||||
|
|
||||||
writableWorker.addNamespace(namespaceDescriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nullable
|
|
||||||
public NamespaceDescriptor getDeclaredNamespace(@NotNull Name name) {
|
|
||||||
checkMayRead();
|
|
||||||
|
|
||||||
return writableWorker.getDeclaredNamespace(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Multimap<Name, DeclarationDescriptor> getDeclaredDescriptorsAccessibleBySimpleName() {
|
public Multimap<Name, DeclarationDescriptor> getDeclaredDescriptorsAccessibleBySimpleName() {
|
||||||
|
|||||||
@@ -105,15 +105,15 @@ public class JdkAnnotationsValidityTest extends UsefulTestCase {
|
|||||||
int chunkStart = chunkIndex * CLASSES_IN_CHUNK;
|
int chunkStart = chunkIndex * CLASSES_IN_CHUNK;
|
||||||
for (FqName javaClass : affectedClasses.subList(chunkStart, Math.min(chunkStart + CLASSES_IN_CHUNK, affectedClasses.size()))) {
|
for (FqName javaClass : affectedClasses.subList(chunkStart, Math.min(chunkStart + CLASSES_IN_CHUNK, affectedClasses.size()))) {
|
||||||
ClassDescriptor topLevelClass = javaDescriptorResolver.resolveClass(javaClass, IGNORE_KOTLIN_SOURCES);
|
ClassDescriptor topLevelClass = javaDescriptorResolver.resolveClass(javaClass, IGNORE_KOTLIN_SOURCES);
|
||||||
NamespaceDescriptor topLevelNamespace = javaDescriptorResolver.resolveNamespace(javaClass, IGNORE_KOTLIN_SOURCES);
|
PackageViewDescriptor topLevelPackage = javaDescriptorResolver.getPackageFragmentProvider().getModule().getPackage(javaClass);
|
||||||
if (topLevelClass == null) {
|
if (topLevelClass == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
topLevelClass.acceptVoid(visitor);
|
topLevelClass.acceptVoid(visitor);
|
||||||
|
|
||||||
if (topLevelNamespace != null) {
|
if (topLevelPackage != null) {
|
||||||
topLevelNamespace.acceptVoid(visitor);
|
topLevelPackage.acceptVoid(visitor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -21,7 +21,6 @@ import com.intellij.openapi.util.io.FileUtil;
|
|||||||
import org.jetbrains.jet.JetTestUtils;
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.checkers.AbstractJetDiagnosticsTest;
|
import org.jetbrains.jet.checkers.AbstractJetDiagnosticsTest;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|||||||
-1
@@ -22,7 +22,6 @@ import org.jetbrains.jet.ConfigurationKind;
|
|||||||
import org.jetbrains.jet.JetTestUtils;
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import org.jetbrains.jet.KotlinTestWithEnvironmentManagement;
|
|||||||
import org.jetbrains.jet.TestJdkKind;
|
import org.jetbrains.jet.TestJdkKind;
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|||||||
-8
@@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.resolve.java;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -56,13 +55,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
return classResolver.resolveClass(qualifiedName, IGNORE_KOTLIN_SOURCES);
|
return classResolver.resolveClass(qualifiedName, IGNORE_KOTLIN_SOURCES);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Nullable
|
|
||||||
public NamespaceDescriptor resolveNamespace(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) {
|
|
||||||
// TODO 1 remove this method
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JavaPackageFragmentProvider getPackageFragmentProvider() {
|
public JavaPackageFragmentProvider getPackageFragmentProvider() {
|
||||||
return packageFragmentProvider;
|
return packageFragmentProvider;
|
||||||
|
|||||||
+10
@@ -291,6 +291,16 @@ public final class JavaFunctionResolver {
|
|||||||
return findClassInPackage(parentPackage, fragment.getFqName().shortName());
|
return findClassInPackage(parentPackage, fragment.getFqName().shortName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static JavaPackageFragmentDescriptor getPackageForCorrespondingJavaClass(@NotNull JavaClassDescriptor javaClass) {
|
||||||
|
PackageFragmentDescriptor packageFragment = DescriptorUtils.getParentOfType(javaClass, PackageFragmentDescriptor.class);
|
||||||
|
assert packageFragment instanceof JavaPackageFragmentDescriptor :
|
||||||
|
"java class " + javaClass + " is under non-java fragment: " + packageFragment;
|
||||||
|
|
||||||
|
JavaPackageFragmentProvider provider = ((JavaPackageFragmentDescriptor) packageFragment).getProvider();
|
||||||
|
return provider.getOrCreatePackage(getFQName(javaClass).toSafe());
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static SamConstructorDescriptor resolveSamConstructor(@NotNull JavaPackageFragmentDescriptor owner, @NotNull NamedMembers namedMembers) {
|
public static SamConstructorDescriptor resolveSamConstructor(@NotNull JavaPackageFragmentDescriptor owner, @NotNull NamedMembers namedMembers) {
|
||||||
if (namedMembers.getSamInterface() != null) {
|
if (namedMembers.getSamInterface() != null) {
|
||||||
|
|||||||
@@ -19,10 +19,8 @@ package org.jetbrains.jet.lang;
|
|||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
|
||||||
import org.jetbrains.jet.lang.resolve.ImportPath;
|
import org.jetbrains.jet.lang.resolve.ImportPath;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -39,8 +37,5 @@ public class DefaultModuleConfiguration implements ModuleConfiguration {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void extendNamespaceScope(@NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) {
|
public void extendNamespaceScope(@NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) {
|
||||||
if (DescriptorUtils.getFQName(namespaceDescriptor).equalsTo(KotlinBuiltIns.getInstance().getBuiltInsPackageFqName())) {
|
|
||||||
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,12 +51,6 @@ public interface WritableScope extends JetScope {
|
|||||||
|
|
||||||
void addVariableAlias(@NotNull Name name, @NotNull VariableDescriptor variableDescriptor);
|
void addVariableAlias(@NotNull Name name, @NotNull VariableDescriptor variableDescriptor);
|
||||||
|
|
||||||
void addNamespace(@NotNull NamespaceDescriptor namespaceDescriptor);
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Nullable
|
|
||||||
NamespaceDescriptor getDeclaredNamespace(@NotNull Name name);
|
|
||||||
|
|
||||||
@NotNull Multimap<Name, DeclarationDescriptor> getDeclaredDescriptorsAccessibleBySimpleName();
|
@NotNull Multimap<Name, DeclarationDescriptor> getDeclaredDescriptorsAccessibleBySimpleName();
|
||||||
|
|
||||||
void importScope(@NotNull JetScope imported);
|
void importScope(@NotNull JetScope imported);
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
private SetMultimap<Name, FunctionDescriptor> functionGroups;
|
private SetMultimap<Name, FunctionDescriptor> functionGroups;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Map<Name, DeclarationDescriptor> variableClassOrNamespaceDescriptors;
|
private Map<Name, DeclarationDescriptor> variableOrClassDescriptors;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private SetMultimap<Name, VariableDescriptor> propertyGroups;
|
private SetMultimap<Name, VariableDescriptor> propertyGroups;
|
||||||
@@ -180,11 +180,11 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private Map<Name, DeclarationDescriptor> getVariableClassOrNamespaceDescriptors() {
|
private Map<Name, DeclarationDescriptor> getVariableOrClassDescriptors() {
|
||||||
if (variableClassOrNamespaceDescriptors == null) {
|
if (variableOrClassDescriptors == null) {
|
||||||
variableClassOrNamespaceDescriptors = Maps.newHashMap();
|
variableOrClassDescriptors = Maps.newHashMap();
|
||||||
}
|
}
|
||||||
return variableClassOrNamespaceDescriptors;
|
return variableOrClassDescriptors;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -216,7 +216,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
if (variableDescriptor.getReceiverParameter() == null) {
|
if (variableDescriptor.getReceiverParameter() == null) {
|
||||||
checkForRedeclaration(name, variableDescriptor);
|
checkForRedeclaration(name, variableDescriptor);
|
||||||
// TODO : Should this always happen?
|
// TODO : Should this always happen?
|
||||||
getVariableClassOrNamespaceDescriptors().put(name, variableDescriptor);
|
getVariableOrClassDescriptors().put(name, variableDescriptor);
|
||||||
}
|
}
|
||||||
allDescriptors.add(variableDescriptor);
|
allDescriptors.add(variableDescriptor);
|
||||||
addToDeclared(variableDescriptor);
|
addToDeclared(variableDescriptor);
|
||||||
@@ -240,7 +240,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
public VariableDescriptor getLocalVariable(@NotNull Name name) {
|
public VariableDescriptor getLocalVariable(@NotNull Name name) {
|
||||||
checkMayRead();
|
checkMayRead();
|
||||||
|
|
||||||
Map<Name, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors();
|
Map<Name, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableOrClassDescriptors();
|
||||||
DeclarationDescriptor descriptor = variableClassOrNamespaceDescriptors.get(name);
|
DeclarationDescriptor descriptor = variableClassOrNamespaceDescriptors.get(name);
|
||||||
if (descriptor instanceof VariableDescriptor && !getPropertyGroups().get(name).contains(descriptor)) {
|
if (descriptor instanceof VariableDescriptor && !getPropertyGroups().get(name).contains(descriptor)) {
|
||||||
return (VariableDescriptor) descriptor;
|
return (VariableDescriptor) descriptor;
|
||||||
@@ -311,7 +311,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
checkMayWrite();
|
checkMayWrite();
|
||||||
|
|
||||||
checkForRedeclaration(name, classifierDescriptor);
|
checkForRedeclaration(name, classifierDescriptor);
|
||||||
getVariableClassOrNamespaceDescriptors().put(name, classifierDescriptor);
|
getVariableOrClassDescriptors().put(name, classifierDescriptor);
|
||||||
allDescriptors.add(classifierDescriptor);
|
allDescriptors.add(classifierDescriptor);
|
||||||
addToDeclared(classifierDescriptor);
|
addToDeclared(classifierDescriptor);
|
||||||
}
|
}
|
||||||
@@ -340,7 +340,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
checkMayWrite();
|
checkMayWrite();
|
||||||
|
|
||||||
checkForRedeclaration(name, variableDescriptor);
|
checkForRedeclaration(name, variableDescriptor);
|
||||||
getVariableClassOrNamespaceDescriptors().put(name, variableDescriptor);
|
getVariableOrClassDescriptors().put(name, variableDescriptor);
|
||||||
allDescriptors.add(variableDescriptor);
|
allDescriptors.add(variableDescriptor);
|
||||||
addToDeclared(variableDescriptor);
|
addToDeclared(variableDescriptor);
|
||||||
}
|
}
|
||||||
@@ -358,7 +358,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void checkForRedeclaration(@NotNull Name name, DeclarationDescriptor classifierDescriptor) {
|
private void checkForRedeclaration(@NotNull Name name, DeclarationDescriptor classifierDescriptor) {
|
||||||
DeclarationDescriptor originalDescriptor = getVariableClassOrNamespaceDescriptors().get(name);
|
DeclarationDescriptor originalDescriptor = getVariableOrClassDescriptors().get(name);
|
||||||
if (originalDescriptor != null) {
|
if (originalDescriptor != null) {
|
||||||
redeclarationHandler.handleRedeclaration(originalDescriptor, classifierDescriptor);
|
redeclarationHandler.handleRedeclaration(originalDescriptor, classifierDescriptor);
|
||||||
}
|
}
|
||||||
@@ -368,7 +368,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
public ClassifierDescriptor getClassifier(@NotNull Name name) {
|
public ClassifierDescriptor getClassifier(@NotNull Name name) {
|
||||||
checkMayRead();
|
checkMayRead();
|
||||||
|
|
||||||
Map<Name, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors();
|
Map<Name, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableOrClassDescriptors();
|
||||||
DeclarationDescriptor descriptor = variableClassOrNamespaceDescriptors.get(name);
|
DeclarationDescriptor descriptor = variableClassOrNamespaceDescriptors.get(name);
|
||||||
if (descriptor instanceof ClassifierDescriptor) return (ClassifierDescriptor) descriptor;
|
if (descriptor instanceof ClassifierDescriptor) return (ClassifierDescriptor) descriptor;
|
||||||
|
|
||||||
@@ -378,37 +378,10 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
return super.getClassifier(name);
|
return super.getClassifier(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addNamespace(@NotNull NamespaceDescriptor namespaceDescriptor) {
|
|
||||||
checkMayWrite();
|
|
||||||
|
|
||||||
Map<Name, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors();
|
|
||||||
DeclarationDescriptor oldValue = variableClassOrNamespaceDescriptors.put(namespaceDescriptor.getName(), namespaceDescriptor);
|
|
||||||
if (oldValue != null) {
|
|
||||||
redeclarationHandler.handleRedeclaration(oldValue, namespaceDescriptor);
|
|
||||||
}
|
|
||||||
allDescriptors.add(namespaceDescriptor);
|
|
||||||
addToDeclared(namespaceDescriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NamespaceDescriptor getDeclaredNamespace(@NotNull Name name) {
|
|
||||||
checkMayRead();
|
|
||||||
|
|
||||||
Map<Name, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors();
|
|
||||||
DeclarationDescriptor namespaceDescriptor = variableClassOrNamespaceDescriptors.get(name);
|
|
||||||
if (namespaceDescriptor instanceof NamespaceDescriptor) return (NamespaceDescriptor) namespaceDescriptor;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PackageViewDescriptor getPackage(@NotNull Name name) {
|
public PackageViewDescriptor getPackage(@NotNull Name name) {
|
||||||
checkMayRead();
|
checkMayRead();
|
||||||
|
|
||||||
// TODO 1
|
|
||||||
//NamespaceDescriptor declaredNamespace = getDeclaredNamespace(name);
|
|
||||||
//if (declaredNamespace != null) return declaredNamespace;
|
|
||||||
|
|
||||||
PackageViewDescriptor aliased = getPackageAliases().get(name);
|
PackageViewDescriptor aliased = getPackageAliases().get(name);
|
||||||
if (aliased != null) return aliased;
|
if (aliased != null) return aliased;
|
||||||
|
|
||||||
|
|||||||
@@ -682,11 +682,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
renderName(moduleOrScript, builder);
|
renderName(moduleOrScript, builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderNamespace(@NotNull NamespaceDescriptor namespace, @NotNull StringBuilder builder) {
|
|
||||||
builder.append(renderKeyword("package")).append(" ");
|
|
||||||
renderName(namespace, builder);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void renderPackageView(@NotNull PackageViewDescriptor packageView, @NotNull StringBuilder builder) {
|
private void renderPackageView(@NotNull PackageViewDescriptor packageView, @NotNull StringBuilder builder) {
|
||||||
builder.append(renderKeyword("package")).append(" ");
|
builder.append(renderKeyword("package")).append(" ");
|
||||||
renderName(packageView, builder);
|
renderName(packageView, builder);
|
||||||
@@ -751,7 +746,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void visitNamespaceDescriptor(NamespaceDescriptor namespaceDescriptor, StringBuilder builder) {
|
public Void visitNamespaceDescriptor(NamespaceDescriptor namespaceDescriptor, StringBuilder builder) {
|
||||||
renderNamespace(namespaceDescriptor, builder);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public final class JetDescriptorIconProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Icon getBaseIcon(@NotNull DeclarationDescriptor descriptor) {
|
public static Icon getBaseIcon(@NotNull DeclarationDescriptor descriptor) {
|
||||||
if (descriptor instanceof NamespaceDescriptor) {
|
if (descriptor instanceof PackageFragmentDescriptor || descriptor instanceof PackageViewDescriptor) {
|
||||||
return PlatformIcons.PACKAGE_ICON;
|
return PlatformIcons.PACKAGE_ICON;
|
||||||
}
|
}
|
||||||
if (descriptor instanceof FunctionDescriptor) {
|
if (descriptor instanceof FunctionDescriptor) {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
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.descriptors.ReceiverParameterDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||||
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
||||||
@@ -175,12 +175,12 @@ public final class TipsManager {
|
|||||||
return Collections2.filter(descriptors, new Predicate<DeclarationDescriptor>() {
|
return Collections2.filter(descriptors, new Predicate<DeclarationDescriptor>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(DeclarationDescriptor declarationDescriptor) {
|
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",
|
// 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
|
// so we find class of the same name as namespace, we exclude this namespace
|
||||||
DeclarationDescriptor parent = declarationDescriptor.getContainingDeclaration();
|
PackageViewDescriptor parent = ((PackageViewDescriptor) declarationDescriptor).getContainingDeclaration();
|
||||||
if (parent instanceof NamespaceDescriptor) {
|
if (parent != null) {
|
||||||
JetScope parentScope = ((NamespaceDescriptor) parent).getMemberScope();
|
JetScope parentScope = parent.getMemberScope();
|
||||||
return parentScope.getClassifier(declarationDescriptor.getName()) == null;
|
return parentScope.getClassifier(declarationDescriptor.getName()) == null;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -163,8 +163,8 @@ class CompletionSession {
|
|||||||
jetResult.addAllElements(jetCallableExtensions);
|
jetResult.addAllElements(jetCallableExtensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPartOfTypeDeclaration(@NotNull DeclarationDescriptor descriptor) {
|
private static boolean isPartOfTypeDeclaration(@NotNull DeclarationDescriptor descriptor) {
|
||||||
if (descriptor instanceof NamespaceDescriptor || descriptor instanceof TypeParameterDescriptor) {
|
if (descriptor instanceof PackageViewDescriptor || descriptor instanceof TypeParameterDescriptor) {
|
||||||
return true;
|
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.resolve.scopes.receivers.ThisReceiver
|
||||||
import org.jetbrains.jet.lang.psi.JetExpression
|
import org.jetbrains.jet.lang.psi.JetExpression
|
||||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor
|
import org.jetbrains.jet.lang.descriptors.VariableDescriptor
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor
|
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
|
||||||
|
|
||||||
fun renderDataFlowValue(value: DataFlowValue): String? {
|
fun renderDataFlowValue(value: DataFlowValue): String? {
|
||||||
// If it is not a stable identifier, there's no point in rendering it
|
// 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 JetExpression -> id.getText()
|
||||||
is ThisReceiver -> "this@${id.getDeclarationDescriptor().getName()}"
|
is ThisReceiver -> "this@${id.getDeclarationDescriptor().getName()}"
|
||||||
is VariableDescriptor -> id.getName().asString()
|
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)
|
is com.intellij.openapi.util.Pair<*, *> -> renderId(id.first) + "." + renderId(id.second)
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import com.intellij.psi.PsiModifier
|
import com.intellij.psi.PsiModifier
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver
|
||||||
|
|
||||||
trait SmartCompletionData{
|
trait SmartCompletionData{
|
||||||
fun accepts(descriptor: DeclarationDescriptor): Boolean
|
fun accepts(descriptor: DeclarationDescriptor): Boolean
|
||||||
@@ -256,12 +257,9 @@ private fun staticMembers(context: JetExpression, expectedType: JetType, resolve
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (classDescriptor is JavaClassDescriptor) {
|
if (classDescriptor is JavaClassDescriptor) {
|
||||||
val container = classDescriptor.getContainingDeclaration() //TODO: nested classes!
|
val pseudoPackage = JavaFunctionResolver.getPackageForCorrespondingJavaClass(classDescriptor)
|
||||||
if (container is NamespaceDescriptor) {
|
if (pseudoPackage != null) {
|
||||||
val pseudoPackage: NamespaceDescriptor? = container.getMemberScope().getNamespace(classDescriptor.getName())
|
pseudoPackage.getMemberScope().getAllDescriptors().filterTo(descriptors, isSuitableCallable)
|
||||||
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 com.intellij.codeInsight.lookup.LookupElementWeigher;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
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.PropertyDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.LocalVariableDescriptor;
|
import org.jetbrains.jet.lang.descriptors.impl.LocalVariableDescriptor;
|
||||||
@@ -53,7 +53,7 @@ class JetKindWeigher extends LookupElementWeigher {
|
|||||||
else if (descriptor instanceof PropertyDescriptor) {
|
else if (descriptor instanceof PropertyDescriptor) {
|
||||||
return MyResult.property;
|
return MyResult.property;
|
||||||
}
|
}
|
||||||
else if (descriptor instanceof NamespaceDescriptor) {
|
else if (descriptor instanceof PackageViewDescriptor) {
|
||||||
return MyResult.packages;
|
return MyResult.packages;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -186,9 +186,9 @@ public class KotlinSignatureAnnotationIntention extends BaseIntentionAction impl
|
|||||||
@NotNull
|
@NotNull
|
||||||
private static JetScope getMemberScope(PsiModifierListOwner psiModifierListOwner, FqName classFqName, JavaDescriptorResolver javaDescriptorResolver) {
|
private static JetScope getMemberScope(PsiModifierListOwner psiModifierListOwner, FqName classFqName, JavaDescriptorResolver javaDescriptorResolver) {
|
||||||
if (psiModifierListOwner.hasModifierProperty(PsiModifier.STATIC)) {
|
if (psiModifierListOwner.hasModifierProperty(PsiModifier.STATIC)) {
|
||||||
NamespaceDescriptor namespaceDescriptor = javaDescriptorResolver.resolveNamespace(classFqName, IGNORE_KOTLIN_SOURCES);
|
PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragmentProvider().getOrCreatePackage(classFqName);
|
||||||
assert namespaceDescriptor != null: "Couldn't resolve namespace descriptor for " + classFqName;
|
assert packageFragment != null: "Couldn't resolve package fragment for " + classFqName;
|
||||||
return namespaceDescriptor.getMemberScope();
|
return packageFragment.getMemberScope();
|
||||||
}
|
}
|
||||||
|
|
||||||
ClassDescriptor classDescriptor = javaDescriptorResolver.resolveClass(classFqName, IGNORE_KOTLIN_SOURCES);
|
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.di.InjectorForJavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
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.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace;
|
import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace;
|
||||||
@@ -166,12 +166,12 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
|||||||
@NotNull PsiMember member
|
@NotNull PsiMember member
|
||||||
) {
|
) {
|
||||||
if (member.hasModifierProperty(PsiModifier.STATIC)) {
|
if (member.hasModifierProperty(PsiModifier.STATIC)) {
|
||||||
NamespaceDescriptor packageDescriptor = javaDescriptorResolver.resolveNamespace(classFqName, IGNORE_KOTLIN_SOURCES);
|
PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragmentProvider().getOrCreatePackage(classFqName);
|
||||||
if (packageDescriptor == null) {
|
if (packageFragment == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return packageDescriptor.getMemberScope();
|
return packageFragment.getMemberScope();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName, IGNORE_KOTLIN_SOURCES);
|
ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName, IGNORE_KOTLIN_SOURCES);
|
||||||
|
|||||||
@@ -84,10 +84,10 @@ public final class DecompiledDataFactory {
|
|||||||
appendDecompiledTextAndPackageName(packageFqName);
|
appendDecompiledTextAndPackageName(packageFqName);
|
||||||
SerializedDataHeader.Kind kind = classFileHeader.getKind();
|
SerializedDataHeader.Kind kind = classFileHeader.getKind();
|
||||||
if (kind == SerializedDataHeader.Kind.PACKAGE) {
|
if (kind == SerializedDataHeader.Kind.PACKAGE) {
|
||||||
NamespaceDescriptor nd = javaDescriptorResolver.resolveNamespace(packageFqName, INCLUDE_KOTLIN_SOURCES);
|
PackageFragmentDescriptor pf = javaDescriptorResolver.getPackageFragmentProvider().getOrCreatePackage(packageFqName);
|
||||||
if (nd != null) {
|
if (pf != null) {
|
||||||
for (DeclarationDescriptor member : sortDeclarations(nd.getMemberScope().getAllDescriptors())) {
|
for (DeclarationDescriptor member : sortDeclarations(pf.getMemberScope().getAllDescriptors())) {
|
||||||
if (!(member instanceof ClassOrNamespaceDescriptor)) {
|
if (!(member instanceof ClassDescriptor)) {
|
||||||
appendDescriptor(member, "");
|
appendDescriptor(member, "");
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -195,8 +195,8 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro
|
|||||||
if (container instanceof JetFunction)
|
if (container instanceof JetFunction)
|
||||||
return getFunctionBodyScope((JetFunction) container, bindingContext);
|
return getFunctionBodyScope((JetFunction) container, bindingContext);
|
||||||
}
|
}
|
||||||
else if (containingDeclaration instanceof NamespaceDescriptor)
|
else if (containingDeclaration instanceof PackageFragmentDescriptor)
|
||||||
return ((NamespaceDescriptor) containingDeclaration).getMemberScope();
|
return ((PackageFragmentDescriptor) containingDeclaration).getMemberScope();
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user