diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java index 973cf3253e1..aa6b3a4a4cb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java @@ -101,14 +101,6 @@ public class BindingContextUtils { 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 private static PsiElement doGetDescriptorToDeclaration(@NotNull BindingContext context, @NotNull DeclarationDescriptor descriptor) { return context.get(DESCRIPTOR_TO_DECLARATION, descriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/LibrarySourceHacks.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/LibrarySourceHacks.java index 1ad375fe0c7..319db4932ac 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/LibrarySourceHacks.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/LibrarySourceHacks.java @@ -22,7 +22,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; 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.List; @@ -51,7 +51,7 @@ public class LibrarySourceHacks { if (!(original instanceof CallableMemberDescriptor)) { return false; } - if (!(original.getContainingDeclaration() instanceof NamespaceDescriptor)) { + if (!(original.getContainingDeclaration() instanceof PackageFragmentDescriptor)) { return false; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java index 5a438070914..1b9f9e47e34 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java @@ -111,7 +111,7 @@ public class DataFlowValueFactory { } @NotNull - private static IdentifierInfo createNamespaceInfo(Object id) { + private static IdentifierInfo createPackageInfo(Object id) { return new IdentifierInfo(id, true, true); } @@ -156,7 +156,7 @@ public class DataFlowValueFactory { return getIdForThisReceiver(declarationDescriptor); } else if (expression instanceof JetRootNamespaceExpression) { - return createNamespaceInfo(JetModuleUtil.getRootNamespaceType(expression)); + return createPackageInfo(JetModuleUtil.getRootNamespaceType(expression)); } return NO_IDENTIFIER_INFO; } @@ -179,8 +179,8 @@ public class DataFlowValueFactory { VariableDescriptor variableDescriptor = (VariableDescriptor) declarationDescriptor; return combineInfo(receiverInfo, createInfo(variableDescriptor, isStableVariable(variableDescriptor))); } - if (declarationDescriptor instanceof NamespaceDescriptor) { - return createNamespaceInfo(declarationDescriptor); + if (declarationDescriptor instanceof PackageViewDescriptor) { + return createPackageInfo(declarationDescriptor); } return NO_IDENTIFIER_INFO; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.java index 0966e210ede..17af13ce3dd 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.java @@ -186,21 +186,6 @@ public class WriteThroughScope extends WritableScopeWithImports { 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 @Override public Multimap getDeclaredDescriptorsAccessibleBySimpleName() { diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/JdkAnnotationsValidityTest.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/JdkAnnotationsValidityTest.java index d5249349e0e..89b0698b770 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/JdkAnnotationsValidityTest.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/JdkAnnotationsValidityTest.java @@ -105,15 +105,15 @@ public class JdkAnnotationsValidityTest extends UsefulTestCase { int chunkStart = chunkIndex * CLASSES_IN_CHUNK; for (FqName javaClass : affectedClasses.subList(chunkStart, Math.min(chunkStart + CLASSES_IN_CHUNK, affectedClasses.size()))) { 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) { continue; } topLevelClass.acceptVoid(visitor); - if (topLevelNamespace != null) { - topLevelNamespace.acceptVoid(visitor); + if (topLevelPackage != null) { + topLevelPackage.acceptVoid(visitor); } } } diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDiagnosticsTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDiagnosticsTest.java index 9f63b9899cf..78b76185a2c 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDiagnosticsTest.java @@ -21,7 +21,6 @@ import com.intellij.openapi.util.io.FileUtil; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.checkers.AbstractJetDiagnosticsTest; 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.psi.JetFile; import org.jetbrains.jet.lang.resolve.name.FqName; diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveNamespaceComparingTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveNamespaceComparingTest.java index bcbc1b039db..e4395dc9d66 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveNamespaceComparingTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveNamespaceComparingTest.java @@ -22,7 +22,6 @@ import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; 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.psi.JetFile; import org.jetbrains.jet.lang.psi.JetPsiFactory; diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveStdlibLoadingTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveStdlibLoadingTest.java index d8360ec2653..6199ba64f31 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveStdlibLoadingTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveStdlibLoadingTest.java @@ -22,7 +22,6 @@ import org.jetbrains.jet.KotlinTestWithEnvironmentManagement; import org.jetbrains.jet.TestJdkKind; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; 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.psi.JetFile; import org.jetbrains.jet.lang.resolve.name.FqName; diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 805df8655ca..4b5f571c111 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.resolve.java; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; 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.JavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -56,13 +55,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes 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 public JavaPackageFragmentProvider getPackageFragmentProvider() { return packageFragmentProvider; diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java index 77240726021..4b8e40e0a33 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java @@ -291,6 +291,16 @@ public final class JavaFunctionResolver { 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 public static SamConstructorDescriptor resolveSamConstructor(@NotNull JavaPackageFragmentDescriptor owner, @NotNull NamedMembers namedMembers) { if (namedMembers.getSamInterface() != null) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java b/core/descriptors/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java index 705d1dd2f9c..919742d028d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java @@ -19,10 +19,8 @@ package org.jetbrains.jet.lang; import com.google.common.collect.ImmutableList; import org.jetbrains.annotations.NotNull; 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.scopes.WritableScope; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.util.List; @@ -39,8 +37,5 @@ public class DefaultModuleConfiguration implements ModuleConfiguration { @Override public void extendNamespaceScope(@NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) { - if (DescriptorUtils.getFQName(namespaceDescriptor).equalsTo(KotlinBuiltIns.getInstance().getBuiltInsPackageFqName())) { - namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope()); - } } } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScope.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScope.java index 46474f40ba0..bddf4f15b0d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScope.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScope.java @@ -51,12 +51,6 @@ public interface WritableScope extends JetScope { void addVariableAlias(@NotNull Name name, @NotNull VariableDescriptor variableDescriptor); - void addNamespace(@NotNull NamespaceDescriptor namespaceDescriptor); - - @Deprecated - @Nullable - NamespaceDescriptor getDeclaredNamespace(@NotNull Name name); - @NotNull Multimap getDeclaredDescriptorsAccessibleBySimpleName(); void importScope(@NotNull JetScope imported); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java index 0e8c59f359d..3932de7d33b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java @@ -49,7 +49,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { private SetMultimap functionGroups; @Nullable - private Map variableClassOrNamespaceDescriptors; + private Map variableOrClassDescriptors; @Nullable private SetMultimap propertyGroups; @@ -180,11 +180,11 @@ public class WritableScopeImpl extends WritableScopeWithImports { } @NotNull - private Map getVariableClassOrNamespaceDescriptors() { - if (variableClassOrNamespaceDescriptors == null) { - variableClassOrNamespaceDescriptors = Maps.newHashMap(); + private Map getVariableOrClassDescriptors() { + if (variableOrClassDescriptors == null) { + variableOrClassDescriptors = Maps.newHashMap(); } - return variableClassOrNamespaceDescriptors; + return variableOrClassDescriptors; } @NotNull @@ -216,7 +216,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { if (variableDescriptor.getReceiverParameter() == null) { checkForRedeclaration(name, variableDescriptor); // TODO : Should this always happen? - getVariableClassOrNamespaceDescriptors().put(name, variableDescriptor); + getVariableOrClassDescriptors().put(name, variableDescriptor); } allDescriptors.add(variableDescriptor); addToDeclared(variableDescriptor); @@ -240,7 +240,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { public VariableDescriptor getLocalVariable(@NotNull Name name) { checkMayRead(); - Map variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors(); + Map variableClassOrNamespaceDescriptors = getVariableOrClassDescriptors(); DeclarationDescriptor descriptor = variableClassOrNamespaceDescriptors.get(name); if (descriptor instanceof VariableDescriptor && !getPropertyGroups().get(name).contains(descriptor)) { return (VariableDescriptor) descriptor; @@ -311,7 +311,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { checkMayWrite(); checkForRedeclaration(name, classifierDescriptor); - getVariableClassOrNamespaceDescriptors().put(name, classifierDescriptor); + getVariableOrClassDescriptors().put(name, classifierDescriptor); allDescriptors.add(classifierDescriptor); addToDeclared(classifierDescriptor); } @@ -340,7 +340,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { checkMayWrite(); checkForRedeclaration(name, variableDescriptor); - getVariableClassOrNamespaceDescriptors().put(name, variableDescriptor); + getVariableOrClassDescriptors().put(name, variableDescriptor); allDescriptors.add(variableDescriptor); addToDeclared(variableDescriptor); } @@ -358,7 +358,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { } private void checkForRedeclaration(@NotNull Name name, DeclarationDescriptor classifierDescriptor) { - DeclarationDescriptor originalDescriptor = getVariableClassOrNamespaceDescriptors().get(name); + DeclarationDescriptor originalDescriptor = getVariableOrClassDescriptors().get(name); if (originalDescriptor != null) { redeclarationHandler.handleRedeclaration(originalDescriptor, classifierDescriptor); } @@ -368,7 +368,7 @@ public class WritableScopeImpl extends WritableScopeWithImports { public ClassifierDescriptor getClassifier(@NotNull Name name) { checkMayRead(); - Map variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors(); + Map variableClassOrNamespaceDescriptors = getVariableOrClassDescriptors(); DeclarationDescriptor descriptor = variableClassOrNamespaceDescriptors.get(name); if (descriptor instanceof ClassifierDescriptor) return (ClassifierDescriptor) descriptor; @@ -378,37 +378,10 @@ public class WritableScopeImpl extends WritableScopeWithImports { return super.getClassifier(name); } - @Override - public void addNamespace(@NotNull NamespaceDescriptor namespaceDescriptor) { - checkMayWrite(); - - Map 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 variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors(); - DeclarationDescriptor namespaceDescriptor = variableClassOrNamespaceDescriptors.get(name); - if (namespaceDescriptor instanceof NamespaceDescriptor) return (NamespaceDescriptor) namespaceDescriptor; - return null; - } - @Override public PackageViewDescriptor getPackage(@NotNull Name name) { checkMayRead(); - // TODO 1 - //NamespaceDescriptor declaredNamespace = getDeclaredNamespace(name); - //if (declaredNamespace != null) return declaredNamespace; - PackageViewDescriptor aliased = getPackageAliases().get(name); if (aliased != null) return aliased; diff --git a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index 6d653ae1b1a..9ec2f821f26 100644 --- a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -682,11 +682,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer { 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) { builder.append(renderKeyword("package")).append(" "); renderName(packageView, builder); @@ -751,7 +746,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer { @Override public Void visitNamespaceDescriptor(NamespaceDescriptor namespaceDescriptor, StringBuilder builder) { - renderNamespace(namespaceDescriptor, builder); return null; } diff --git a/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java b/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java index 0d723deffca..01cbbae54e6 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/JetDescriptorIconProvider.java @@ -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) { diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.java index 282aaa95923..ece3b7ed9d9 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.java @@ -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() { @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; diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java index 18d8fb291e3..477250d81f6 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java @@ -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; } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/DataFlowInfoUtilForCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/DataFlowInfoUtilForCompletion.kt index 44791dd7cad..ff8286a343c 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/DataFlowInfoUtilForCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/DataFlowInfoUtilForCompletion.kt @@ -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 } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/SmartCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/SmartCompletion.kt index ef400679902..f0067a9c9ca 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/SmartCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/SmartCompletion.kt @@ -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) } } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java index b1485a6a7d8..51268164ee9 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java @@ -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; } } diff --git a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java index fbf1e92256d..eae3a912580 100644 --- a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java +++ b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java @@ -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); diff --git a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java index c4f5492bf46..be640c13682 100644 --- a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java @@ -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); diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledDataFactory.java b/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledDataFactory.java index 2d202b00981..bdc9817a56c 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledDataFactory.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledDataFactory.java @@ -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"); } diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index 2d24c02d9b0..98cbd063492 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -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; }