diff --git a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt index babc3247531..c5d7686567b 100644 --- a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt @@ -108,7 +108,7 @@ public class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) { } private fun serializePackage(module: ModuleDescriptor, fqName: FqName, destDir: File) { - val packageView = module.getPackage(fqName) ?: error("No package resolved in $module") + val packageView = module.getPackage(fqName) // TODO: perform some kind of validation? At the moment not possible because DescriptorValidator is in compiler-tests // DescriptorValidator.validate(packageView) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java index 81ebebd704a..0a4025a1668 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java @@ -167,15 +167,13 @@ public class CliLightClassGenerationSupport extends LightClassGenerationSupport @Override public boolean packageExists(@NotNull FqName fqName, @NotNull GlobalSearchScope scope) { - return getModule().getPackage(fqName) != null; + return !getModule().getPackage(fqName).isEmpty(); } @NotNull @Override public Collection getSubPackages(@NotNull FqName fqn, @NotNull GlobalSearchScope scope) { PackageViewDescriptor packageView = getModule().getPackage(fqn); - if (packageView == null) return Collections.emptyList(); - Collection members = packageView.getMemberScope().getDescriptors(DescriptorKindFilter.PACKAGES, JetScope.ALL_NAME_FILTER); return ContainerUtil.mapNotNull(members, new Function() { @Override diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java index 8b139bded99..94d6f0bcb33 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java @@ -1227,11 +1227,10 @@ public class DescriptorResolver { FqName fqName = packageDirective.getFqName(nameExpression); PackageViewDescriptor packageView = module.getPackage(fqName); - assert packageView != null : "package not found: " + fqName; trace.record(REFERENCE_TARGET, nameExpression, packageView); PackageViewDescriptor parentPackageView = packageView.getContainingDeclaration(); - assert parentPackageView != null : "package has no parent: " + packageView; + assert parentPackageView != null : "Should not be null since " + fqName + " should not be root"; trace.record(RESOLUTION_SCOPE, nameExpression, parentPackageView.getMemberScope()); } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ImportDirectiveProcessor.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ImportDirectiveProcessor.kt index 1890159f45d..1f9c27603e9 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ImportDirectiveProcessor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ImportDirectiveProcessor.kt @@ -86,10 +86,10 @@ public class ImportDirectiveProcessor( val packageView = moduleDescriptor.getPackage(fqName) if (jetExpression == null) { assert(fqName.isRoot()) - return packageView.sure { "Root package does not exist in module $moduleDescriptor" } + return packageView } return when { - packageView != null -> { + !packageView.isEmpty() -> { recordPackageViews(jetExpression, packageView, trace) packageView } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt index 5542de12dae..080087ed088 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.resolve.lazy import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor -import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.descriptors.impl.SubpackagesScope import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.JetCodeFragment @@ -67,8 +66,8 @@ class LazyFileScope private constructor( else file.getImportDirectives() - val packageView = getPackageViewDescriptor(file, resolveSession) val moduleDescriptor = resolveSession.getModuleDescriptor() + val packageView = moduleDescriptor.getPackage(file.getPackageFqName()) val packageFragment = resolveSession.getPackageFragment(file.getPackageFqName()) .sure { "Could not find fragment ${file.getPackageFqName()} for file ${file.getName()}" } @@ -96,11 +95,5 @@ class LazyFileScope private constructor( return LazyFileScope(scopeChain, aliasImportResolver, allUnderImportResolver, packageFragment, debugName) } - - private fun getPackageViewDescriptor(file: JetFile, resolveSession: ResolveSession): PackageViewDescriptor { - val fqName = file.getPackageFqName() - return resolveSession.getModuleDescriptor().getPackage(fqName) - ?: throw IllegalStateException("Package not found: $fqName maybe the file is not in scope of this resolve session: ${file.getName()}") - } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java index 00719403652..efde25a3dc0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java @@ -59,7 +59,7 @@ public class ResolveSessionUtils { FqName packageFqName = fqName.parent(); while (true) { PackageViewDescriptor packageDescriptor = module.getPackage(packageFqName); - if (packageDescriptor != null) { + if (!packageDescriptor.isEmpty()) { FqName relativeClassFqName = NamePackage.tail(fqName, packageFqName); ClassDescriptor classDescriptor = findByQualifiedName(packageDescriptor.getMemberScope(), relativeClassFqName); if (classDescriptor != null && filter.apply(classDescriptor)) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java index cec5e0df1b2..7320a9e0d2f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java @@ -168,7 +168,7 @@ public final class JetScopeUtils { if (packageFragment == null) return null; PackageViewDescriptor packageView = packageFragment.getContainingDeclaration().getPackage(((JetFile) parent).getPackageFqName()); - return packageView != null ? packageView.getMemberScope() : null; + return packageView.getMemberScope(); } JetExpression expression = PsiTreeUtil.getParentOfType(element, JetExpression.class, false); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractJetDiagnosticsTest.java b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractJetDiagnosticsTest.java index 5af3b85cba1..7414f11fba9 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractJetDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractJetDiagnosticsTest.java @@ -262,8 +262,8 @@ public abstract class AbstractJetDiagnosticsTest extends BaseDiagnosticsTest { for (TestModule module : KotlinPackage.sort(modules.keySet())) { ModuleDescriptorImpl moduleDescriptor = modules.get(module); - DeclarationDescriptor aPackage = moduleDescriptor.getPackage(FqName.ROOT); - assertNotNull(aPackage); + PackageViewDescriptor aPackage = moduleDescriptor.getPackage(FqName.ROOT); + assertFalse(aPackage.isEmpty()); if (isMultiModuleTest) { rootPackageText.append(String.format("// -- Module: %s --\n", moduleDescriptor.getName())); diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java index db74205fa2a..b3f5f3b8fbe 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java @@ -76,7 +76,7 @@ public abstract class AbstractCompileJavaAgainstKotlinTest extends TestCaseWithT AnalysisResult exhaust = JvmResolveUtil.analyzeFilesWithJavaIntegration(environment.getProject(), Collections.emptySet()); PackageViewDescriptor packageView = exhaust.getModuleDescriptor().getPackage(LoadDescriptorUtil.TEST_PACKAGE_FQNAME); - assertNotNull(packageView); + assertFalse(packageView.isEmpty()); validateAndCompareDescriptorWithFile(packageView, CONFIGURATION, expectedFile); } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java index 94756fff497..38a40d66b05 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java @@ -105,7 +105,6 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { configurationKind); PackageViewDescriptor packageFromSource = result.getModuleDescriptor().getPackage(TEST_PACKAGE_FQNAME); - assert packageFromSource != null : "Package " + TEST_PACKAGE_FQNAME + " not found"; Assert.assertEquals("test", packageFromSource.getName().asString()); PackageViewDescriptor packageFromBinary = LoadDescriptorUtil.loadTestPackageAndBindingContextFromJavaRoot( @@ -157,8 +156,6 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { ); PackageViewDescriptor packageView = moduleContext.getModule().getPackage(TEST_PACKAGE_FQNAME); - assert packageView != null : "Test package not found"; - checkJavaPackage(expectedFile, packageView, trace.getBindingContext(), DONT_INCLUDE_METHODS_OF_OBJECT); } @@ -187,7 +184,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { environment.getProject(), Collections.singleton(jetFile) ); PackageViewDescriptor packageView = result.getModuleDescriptor().getPackage(TEST_PACKAGE_FQNAME); - assertNotNull(packageView); + assertFalse(packageView.isEmpty()); validateAndCompareDescriptorWithFile(packageView, DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy( new DeserializedScopeValidationVisitor() diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java index cc9b25666ad..beb3abe66b9 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java @@ -93,7 +93,7 @@ public abstract class AbstractSdkAnnotationsValidityTest extends UsefulTestCase topLevelClass.acceptVoid(visitor); - if (topLevelPackage != null) { + if (!topLevelPackage.isEmpty()) { topLevelPackage.acceptVoid(visitor); } } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java index 124fc493292..9994d6a0796 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java @@ -90,7 +90,7 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir { ); PackageViewDescriptor packageView = result.getModuleDescriptor().getPackage(LoadDescriptorUtil.TEST_PACKAGE_FQNAME); - assertNotNull("Failed to find package: " + LoadDescriptorUtil.TEST_PACKAGE_FQNAME, packageView); + assertFalse("Failed to find package: " + LoadDescriptorUtil.TEST_PACKAGE_FQNAME, packageView.isEmpty()); return packageView; } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java index 86c31b30098..c95b3e37daf 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java @@ -105,8 +105,6 @@ public final class LoadDescriptorUtil { ModuleDescriptor module = LazyResolveTestUtil.resolve(environment.getProject(), trace, Collections.emptyList()); PackageViewDescriptor packageView = module.getPackage(TEST_PACKAGE_FQNAME); - assert packageView != null; - return Pair.create(packageView, trace.getBindingContext()); } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt index 759cbea44b9..e1dc9172ea5 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt @@ -111,7 +111,7 @@ public class MultiModuleJavaAnalysisCustomTest : UsefulTestCase() { } private fun checkClassInPackage(moduleDescriptor: ModuleDescriptor, packageName: String, className: String) { - val kotlinPackage = moduleDescriptor.getPackage(FqName(packageName))!! + val kotlinPackage = moduleDescriptor.getPackage(FqName(packageName)) val kotlinClassName = Name.identifier(className) val kotlinClass = kotlinPackage.memberScope.getClassifier(kotlinClassName) as ClassDescriptor checkClass(kotlinClass) diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt index d61601619fc..80af6e1d8e4 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt @@ -144,7 +144,7 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi val header = ReflectKotlinClass.create(klass)?.getClassHeader() if (header?.kind == KotlinClassHeader.Kind.PACKAGE_FACADE) { - val packageView = module.getPackage(LoadDescriptorUtil.TEST_PACKAGE_FQNAME).sure { "Couldn't resolve package ${LoadDescriptorUtil.TEST_PACKAGE_FQNAME}" } + val packageView = module.getPackage(LoadDescriptorUtil.TEST_PACKAGE_FQNAME) packageScopes.add(packageView.memberScope) } else if (header == null || diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt index 5c12656a58e..b8a7d2139dd 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt @@ -51,7 +51,7 @@ public class BuiltInsSerializerTest : TestCaseWithTmpdir() { module.setDependencies(module, KotlinBuiltIns.getInstance().getBuiltInsModule()) RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile( - module.getPackage(TEST_PACKAGE_FQNAME)!!, + module.getPackage(TEST_PACKAGE_FQNAME), RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT, File(source.replace(".kt", ".txt")) ) diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt index 33e219def4b..28afd9532da 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt @@ -57,7 +57,7 @@ public class KotlinJavascriptSerializerTest : TestCaseWithTmpdir() { val module = deserialize(metaFile) RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile( - module.getPackage(TEST_PACKAGE_FQNAME)!!, + module.getPackage(TEST_PACKAGE_FQNAME), RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT, File(source.replace(".kt", ".txt")) ) diff --git a/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorProcessorTest.java b/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorProcessorTest.java index 6d8e57b6b9d..2b9bca8540c 100644 --- a/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorProcessorTest.java +++ b/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorProcessorTest.java @@ -46,7 +46,6 @@ public class RecursiveDescriptorProcessorTest extends KotlinTestWithEnvironment JetFile jetFile = JetTestUtils.createFile("declarations.kt", text, getEnvironment().getProject()); AnalysisResult result = JetTestUtils.analyzeFile(jetFile); PackageViewDescriptor testPackage = result.getModuleDescriptor().getPackage(FqName.topLevel(Name.identifier("test"))); - assert testPackage != null; List descriptors = recursivelyCollectDescriptors(testPackage); diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt index 032895c9f22..c3e81262a4c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt @@ -31,13 +31,13 @@ import kotlin.properties.Delegates val KOTLIN_REFLECT_FQ_NAME = FqName("kotlin.reflect") public class ReflectionTypes(private val module: ModuleDescriptor) { - private val kotlinReflectScope: JetScope? by Delegates.lazy { - module.getPackage(KOTLIN_REFLECT_FQ_NAME)?.memberScope + private val kotlinReflectScope: JetScope by Delegates.lazy { + module.getPackage(KOTLIN_REFLECT_FQ_NAME).memberScope } fun find(className: String): ClassDescriptor { val name = Name.identifier(className) - return kotlinReflectScope?.getClassifier(name) as? ClassDescriptor + return kotlinReflectScope.getClassifier(name) as? ClassDescriptor ?: ErrorUtils.createErrorClass(KOTLIN_REFLECT_FQ_NAME.child(name).asString()) } diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt index a5a787f4962..14208047b9e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt @@ -73,7 +73,7 @@ public class BuiltInFictitiousFunctionClassFactory( val kindWithArity = parseClassName(className, packageFqName) ?: return null val (kind, arity) = kindWithArity // KT-5100 - val containingPackageFragment = module.getPackage(packageFqName)!!.fragments.single() + val containingPackageFragment = module.getPackage(packageFqName).fragments.single() return FunctionClassDescriptor(storageManager, containingPackageFragment, kind, arity) } diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassDescriptor.kt index 24c1e93745e..8708c36cdac 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassDescriptor.kt @@ -158,7 +158,7 @@ public class FunctionClassDescriptor( if (functionKind.hasExtensionReceiver) functionArity++ val module = containingDeclaration.getContainingDeclaration() - val kotlinPackageFragment = module.getPackage(BUILT_INS_PACKAGE_FQ_NAME)!!.fragments.single() + val kotlinPackageFragment = module.getPackage(BUILT_INS_PACKAGE_FQ_NAME).fragments.single() // If this is a KMemberFunction{n} or KExtensionFunction{n}, it extends Function{n} with the annotation kotlin.extension, // so that the value of this type is callable as an extension function, with the receiver before the dot diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt index e6a0aecd468..b41ac8300e1 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt @@ -24,9 +24,6 @@ import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.types.TypeSubstitutor public trait ModuleDescriptor : DeclarationDescriptor, ModuleParameters { - public fun getPackage(fqName: FqName): PackageViewDescriptor? - public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection - override fun getContainingDeclaration(): DeclarationDescriptor? = null public val builtIns: KotlinBuiltIns @@ -40,6 +37,10 @@ public trait ModuleDescriptor : DeclarationDescriptor, ModuleParameters { override fun accept(visitor: DeclarationDescriptorVisitor, data: D): R { return visitor.visitModuleDeclaration(this, data) } + + public fun getPackage(fqName: FqName): PackageViewDescriptor + + public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection } trait ModuleParameters { @@ -56,4 +57,4 @@ public fun ModuleParameters(defaultImports: List, platformToKotlinCl object : ModuleParameters { override val defaultImports: List = defaultImports override val platformToKotlinClassMap: PlatformToKotlinClassMap = platformToKotlinClassMap - } \ No newline at end of file + } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackageViewDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackageViewDescriptor.kt index 10d4b4044ab..16f487046c4 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackageViewDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackageViewDescriptor.kt @@ -29,4 +29,6 @@ public interface PackageViewDescriptor : DeclarationDescriptor { public val module: ModuleDescriptor public val fragments: List + + public fun isEmpty(): Boolean = fragments.isEmpty() } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/PackageViewDescriptorImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/LazyPackageViewDescriptorImpl.kt similarity index 53% rename from core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/PackageViewDescriptorImpl.kt rename to core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/LazyPackageViewDescriptorImpl.kt index c20ad31f353..9d70597e7a7 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/PackageViewDescriptorImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/LazyPackageViewDescriptorImpl.kt @@ -16,36 +16,46 @@ package org.jetbrains.kotlin.descriptors.impl -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.DeclarationDescriptorVisitor +import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor +import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.scopes.ChainedScope import org.jetbrains.kotlin.resolve.scopes.JetScope +import org.jetbrains.kotlin.resolve.scopes.LazyScopeAdapter +import org.jetbrains.kotlin.storage.StorageManager +import org.jetbrains.kotlin.storage.get import org.jetbrains.kotlin.types.TypeSubstitutor -public class PackageViewDescriptorImpl( - override val module: ModuleDescriptor, +public class LazyPackageViewDescriptorImpl( + override val module: ModuleDescriptorImpl, override val fqName: FqName, - override val fragments: List + storageManager: StorageManager ) : DeclarationDescriptorImpl(Annotations.EMPTY, fqName.shortNameOrSpecial()), PackageViewDescriptor { - override val memberScope: JetScope = run { - assert(fragments.isNotEmpty()) { "$fqName in module" } - val scopes = fragments.map { it.getMemberScope() } + SubpackagesScope(this) - ChainedScope(this, "package view scope for $fqName in ${module.getName()}", *scopes.toTypedArray()) + override val fragments: List by storageManager.createLazyValue { + module.packageFragmentProvider.getPackageFragments(fqName) } - override fun getContainingDeclaration(): PackageViewDescriptor? = if (fqName.isRoot()) null else module.getPackage(fqName.parent()) + override val memberScope: JetScope = LazyScopeAdapter(storageManager.createLazyValue { + if (fragments.isEmpty()) { + JetScope.Empty + } + else { + val scopes = fragments.map { it.getMemberScope() } + SubpackagesScope(module, fqName) + ChainedScope(this, "package view scope for $fqName in ${module.getName()}", *scopes.toTypedArray()) + } + }) - override fun substitute(substitutor: TypeSubstitutor): DeclarationDescriptor? = this - - override fun accept(visitor: DeclarationDescriptorVisitor, data: D): R = visitor.visitPackageViewDescriptor(this, data) + override fun getContainingDeclaration(): PackageViewDescriptor? { + return if (fqName.isRoot()) null else module.getPackage(fqName.parent()) + } override fun equals(other: Any?): Boolean { - if (javaClass != other?.javaClass) return false - - val that = other as PackageViewDescriptorImpl - return fqName == that.fqName && module == that.module + val that = other as? PackageViewDescriptor ?: return false + return this.fqName == that.fqName && this.module == that.module } override fun hashCode(): Int { @@ -53,4 +63,8 @@ public class PackageViewDescriptorImpl( result = 31 * result + fqName.hashCode() return result } + + override fun substitute(substitutor: TypeSubstitutor): DeclarationDescriptor? = this + + override fun accept(visitor: DeclarationDescriptorVisitor, data: D): R = visitor.visitPackageViewDescriptor(this, data) } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt index 8c448b2275f..7ae1f11db28 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt @@ -43,6 +43,12 @@ public class ModuleDescriptorImpl( private var dependencies: ModuleDependencies? = null private var packageFragmentProviderForModuleContent: PackageFragmentProvider? = null + override fun getPackage(fqName: FqName): PackageViewDescriptor = LazyPackageViewDescriptorImpl(this, fqName, storageManager) + + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection { + return packageFragmentProvider.getSubPackagesOf(fqName, nameFilter) + } + private val packageFragmentProviderForWholeModuleWithDependencies by Delegates.lazy { val moduleDependencies = dependencies.sure { "Dependencies of module $id were not set before querying module content" } val dependenciesDescriptors = moduleDependencies.descriptors @@ -82,17 +88,11 @@ public class ModuleDescriptorImpl( */ public fun initialize(providerForModuleContent: PackageFragmentProvider) { assert(!isInitialized) { "Attempt to initialize module $id twice" } - packageFragmentProviderForModuleContent = providerForModuleContent + this.packageFragmentProviderForModuleContent = providerForModuleContent } - override fun getPackage(fqName: FqName): PackageViewDescriptor? { - val fragments = packageFragmentProviderForWholeModuleWithDependencies.getPackageFragments(fqName) - return if (!fragments.isEmpty()) PackageViewDescriptorImpl(this, fqName, fragments) else null - } - - override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection { - return packageFragmentProviderForWholeModuleWithDependencies.getSubPackagesOf(fqName, nameFilter) - } + val packageFragmentProvider: PackageFragmentProvider + get() = packageFragmentProviderForWholeModuleWithDependencies private val friendModules = LinkedHashSet() @@ -121,4 +121,4 @@ public class LazyModuleDependencies( override val descriptors: List get() = dependencies() -} \ No newline at end of file +} diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/SubpackagesScope.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/SubpackagesScope.kt index cb210fbd313..047dbbf275b 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/SubpackagesScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/SubpackagesScope.kt @@ -17,28 +17,38 @@ package org.jetbrains.kotlin.descriptors.impl import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageViewDescriptor +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl -import org.jetbrains.kotlin.utils.* - -import java.util.ArrayList import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl +import org.jetbrains.kotlin.utils.Printer +import org.jetbrains.kotlin.utils.addIfNotNull +import org.jetbrains.kotlin.utils.sure +import java.util.ArrayList -public class SubpackagesScope(private val containingDeclaration: PackageViewDescriptor) : JetScopeImpl() { +public class SubpackagesScope(private val moduleDescriptor: ModuleDescriptor, private val fqName: FqName) : JetScopeImpl() { override fun getContainingDeclaration(): DeclarationDescriptor { - return containingDeclaration + return moduleDescriptor.getPackage(fqName) } override fun getPackage(name: Name): PackageViewDescriptor? { - return if (name.isSpecial()) null else containingDeclaration.getModule().getPackage(containingDeclaration.getFqName().child(name)) + if (name.isSpecial()) { + return null + } + val packageViewDescriptor = moduleDescriptor.getPackage(fqName.child(name)) + if (packageViewDescriptor.isEmpty()) { + return null + } + return packageViewDescriptor } override fun getDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection { if (!kindFilter.acceptsKinds(DescriptorKindFilter.PACKAGES_MASK)) return listOf() - val subFqNames = containingDeclaration.getModule().getSubPackagesOf(containingDeclaration.getFqName(), nameFilter) + val subFqNames = moduleDescriptor.getSubPackagesOf(fqName, nameFilter) val result = ArrayList(subFqNames.size()) for (subFqName in subFqNames) { val shortName = subFqName.shortName() @@ -53,7 +63,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc p.println(javaClass.getSimpleName(), " {") p.pushIndent() - p.println("thisDescriptor = ", containingDeclaration) + p.println("thisDescriptor = ", getContainingDeclaration()) p.popIndent() p.println("}") diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt index 341cd3aa224..047d2535957 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt @@ -44,8 +44,7 @@ public val DeclarationDescriptor.module: ModuleDescriptor public fun ModuleDescriptor.resolveTopLevelClass(topLevelClassFqName: FqName): ClassDescriptor? { assert(!topLevelClassFqName.isRoot()) - return getPackage(topLevelClassFqName.parent())?.memberScope - ?.getClassifier(topLevelClassFqName.shortName()) as? ClassDescriptor + return getPackage(topLevelClassFqName.parent()).memberScope.getClassifier(topLevelClassFqName.shortName()) as? ClassDescriptor } public val ClassDescriptor.classId: ClassId diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt index a661a684fa5..28a9a48a9ca 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt @@ -26,7 +26,7 @@ class KPackageImpl(override val jClass: Class<*>) : KCallableContainerImpl(), KP val moduleData = jClass.getOrCreateModule() val fqName = jClass.classId.getPackageFqName() - moduleData.module.getPackage(fqName) ?: throw KotlinReflectionInternalError("Package not resolved: $fqName") + moduleData.module.getPackage(fqName) } override val scope: JetScope get() = descriptor.memberScope diff --git a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt index db5d245644f..8f7940423be 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt @@ -181,7 +181,6 @@ public abstract class ElementResolver protected constructor( if (trace.getBindingContext()[BindingContext.REFERENCE_TARGET, jetElement] == null) { val fqName = header.getFqName(jetElement) val packageDescriptor = resolveSession.getModuleDescriptor().getPackage(fqName) - ?: error("Package descriptor should be present in session for $fqName") trace.record(BindingContext.REFERENCE_TARGET, jetElement, packageDescriptor) } } @@ -410,14 +409,13 @@ public abstract class ElementResolver protected constructor( // Inside import if (expression.getParentOfType(false) != null) { - val rootPackage = resolveSession.getModuleDescriptor().getPackage(FqName.ROOT)!! + val rootPackage = resolveSession.getModuleDescriptor().getPackage(FqName.ROOT) if (parent is JetDotQualifiedExpression) { val element = parent.getReceiverExpression() val fqName = expression.getContainingJetFile().getPackageFqName() val filePackage = resolveSession.getModuleDescriptor().getPackage(fqName) - ?: error("File package should be already resolved and be found") val descriptors = if (element is JetDotQualifiedExpression) { qualifiedExpressionResolver.lookupDescriptorsForQualifiedExpression( @@ -439,7 +437,7 @@ public abstract class ElementResolver protected constructor( val packageDirective = expression.getParentOfType(false) if (packageDirective != null) { val packageDescriptor = resolveSession.getModuleDescriptor().getPackage(packageDirective.getFqName(expression as JetSimpleNameExpression).parent()) - return packageDescriptor?.memberScope + return packageDescriptor.memberScope } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java index 68d67345ef6..cb1b09ccf46 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java @@ -128,7 +128,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport // make sure we create a package descriptor PackageViewDescriptor packageDescriptor = session.getModuleDescriptor().getPackage(packageFqName); - if (packageDescriptor == null) { + if (packageDescriptor.isEmpty()) { LOG.warn("No descriptor found for package " + packageFqName + " in file " + file.getName() + "\n" + file.getText()); session.forceResolveAll(); continue; diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt index ddcd2fb7b53..69a14e754c9 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt @@ -127,10 +127,7 @@ private fun resolveParamLink(fromDescriptor: DeclarationDescriptor, qualifiedNam } private fun getPackageInnerScope(descriptor: PackageFragmentDescriptor): JetScope { - val module = descriptor.getContainingDeclaration() - val packageView = module.getPackage(descriptor.fqName) - val packageScope = packageView!!.memberScope - return packageScope + return descriptor.getContainingDeclaration().getPackage(descriptor.fqName).memberScope } private fun getClassInnerScope(outerScope: JetScope, descriptor: ClassDescriptor): JetScope { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java index 224333c8869..1d9cc76bfd0 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java @@ -122,7 +122,6 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { } PackageViewDescriptor packageView = newModuleContext.getModule().getPackage(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME); - assert packageView != null : "Should contain " + KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME + " package"; List fragments = packageView.getFragments(); BuiltInsReferenceResolver.this.moduleDescriptor = newModuleContext.getModule(); diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt index ce1fd8a46b0..dc175d04f04 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt @@ -61,11 +61,6 @@ fun findPackagePartInternalNameForLibraryFile(topLevelDeclaration: JetDeclaratio val packageFqName = topLevelDeclaration.getContainingJetFile().getPackageFqName() val packageDescriptor = descriptor.module.getPackage(packageFqName) - if (packageDescriptor == null) { - reportError(topLevelDeclaration, descriptor) - return null - } - val descFromSourceText = render(descriptor) val descriptors: Collection = when (descriptor) { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceWithAnnotationAnalyzer.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceWithAnnotationAnalyzer.kt index 97ef825efb8..3594cc4a370 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceWithAnnotationAnalyzer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceWithAnnotationAnalyzer.kt @@ -163,7 +163,7 @@ object ReplaceWithAnnotationAnalyzer { return when (descriptor) { is PackageFragmentDescriptor -> { val moduleDescriptor = descriptor.getContainingDeclaration() - getResolutionScope(moduleDescriptor.getPackage(descriptor.fqName)!!) + getResolutionScope(moduleDescriptor.getPackage(descriptor.fqName)) } is PackageViewDescriptor -> diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index a239a1d7638..372f1f0889c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -329,7 +329,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { private fun getDeclarationScope(): JetScope { if (config.isExtension || receiverClassDescriptor == null) { - return currentFileModule.getPackage(config.currentFile.getPackageFqName())!!.memberScope + return currentFileModule.getPackage(config.currentFile.getPackageFqName()).memberScope } if (receiverClassDescriptor is ClassDescriptorWithResolutionScopes) { diff --git a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt index 8d766c6816e..4f9aaab7027 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt @@ -216,7 +216,7 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert } .filterNotNull() - val filePackage = moduleDescriptor.getPackage(file.getPackageFqName())!! + val filePackage = moduleDescriptor.getPackage(file.getPackageFqName()) fun isVisible(descriptor: DeclarationDescriptor): Boolean { if (descriptor !is DeclarationDescriptorWithVisibility) return true @@ -263,7 +263,7 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert private fun getMemberScope(fqName: FqName, moduleDescriptor: ModuleDescriptor): JetScope? { val packageView = moduleDescriptor.getPackage(fqName) - if (packageView != null) { + if (!packageView.isEmpty()) { return packageView.memberScope } diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/TextConsistencyBaseTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/TextConsistencyBaseTest.kt index 670274de2cb..bbffc933b16 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/TextConsistencyBaseTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/TextConsistencyBaseTest.kt @@ -67,8 +67,7 @@ private class ResolverForDecompilerImpl(val module: ModuleDescriptor) : Resolver } override fun resolveDeclarationsInPackage(packageFqName: FqName): Collection { - val packageView = module.getPackage(packageFqName) ?: return listOf() - return packageView.memberScope.getAllDescriptors() filter { + return module.getPackage(packageFqName).memberScope.getAllDescriptors() filter { it is CallableMemberDescriptor && it.module != KotlinBuiltIns.getInstance().getBuiltInsModule() } sortBy MemberComparator.INSTANCE } diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt index f8e9ecc50dc..0622cd4efc3 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt @@ -249,7 +249,7 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { val scopeToSearch = if (classIdStr != null) { module.findClassAcrossModuleDependencies(classIdStr.toClassId())!!.getDefaultType().getMemberScope() } else { - module.getPackage(FqName(packageFqnStr!!))!!.memberScope + module.getPackage(FqName(packageFqnStr!!)).memberScope } val psiElement = DescriptorToSourceUtils.descriptorToDeclaration(findDescriptorToRename(scopeToSearch))!! diff --git a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java index 4f76e7f88ac..059dbab2163 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java @@ -62,7 +62,7 @@ public abstract class AbstractResolveByStubTest extends KotlinCodeInsightTestCas JetFile file = (JetFile) getFile(); ModuleDescriptor module = ResolvePackage.findModuleDescriptor(file); PackageViewDescriptor packageViewDescriptor = module.getPackage(new FqName("test")); - Assert.assertNotNull(packageViewDescriptor); + Assert.assertFalse(packageViewDescriptor.isEmpty()); File fileToCompareTo = new File(FileUtil.getNameWithoutExtension(path) + ".txt"); diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt index 58ed9b5e7b5..9c573b257d5 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt @@ -101,7 +101,7 @@ public object KotlinJavascriptSerializationUtil { KotlinJavascriptMetadataUtils.formatMetadataAsString(moduleName, moduleDescriptor.toBinaryMetadata()) fun serializePackage(module: ModuleDescriptor, fqName: FqName, writeFun: (String, ByteArrayOutputStream) -> Unit) { - val packageView = module.getPackage(fqName) ?: error("No package resolved in $module") + val packageView = module.getPackage(fqName) val skip: (DeclarationDescriptor) -> Boolean = { DescriptorUtils.getContainingModule(it) != module }