Search in sources :

Example 1 with LazyPackageDescriptor

use of org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor in project kotlin by JetBrains.

the class ResolveSession method collectAllPackages.

@NotNull
private List<LazyPackageDescriptor> collectAllPackages(@NotNull List<LazyPackageDescriptor> result, @NotNull LazyPackageDescriptor current) {
    result.add(current);
    for (FqName subPackage : packageFragmentProvider.getSubPackagesOf(current.getFqName(), MemberScope.Companion.getALL_NAME_FILTER())) {
        LazyPackageDescriptor fragment = getPackageFragment(subPackage);
        assert fragment != null : "Couldn't find fragment for " + subPackage;
        collectAllPackages(result, fragment);
    }
    return result;
}
Also used : FqName(org.jetbrains.kotlin.name.FqName) LazyPackageDescriptor(org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor) NotNull(org.jetbrains.annotations.NotNull)

Example 2 with LazyPackageDescriptor

use of org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor in project kotlin by JetBrains.

the class LazyDeclarationResolver method getMemberScopeDeclaredIn.

@NotNull
/*package*/
MemberScope getMemberScopeDeclaredIn(@NotNull KtDeclaration declaration, @NotNull LookupLocation location) {
    KtDeclaration parentDeclaration = KtStubbedPsiUtil.getContainingDeclaration(declaration);
    boolean isTopLevel = parentDeclaration == null;
    if (isTopLevel) {
        // for top level declarations we search directly in package because of possible conflicts with imports
        KtFile ktFile = (KtFile) declaration.getContainingFile();
        FqName fqName = ktFile.getPackageFqName();
        LazyPackageDescriptor packageDescriptor = topLevelDescriptorProvider.getPackageFragment(fqName);
        if (packageDescriptor == null) {
            if (topLevelDescriptorProvider instanceof LazyClassContext) {
                ((LazyClassContext) topLevelDescriptorProvider).getDeclarationProviderFactory().diagnoseMissingPackageFragment(ktFile);
            } else {
                throw new IllegalStateException("Cannot find package fragment for file " + ktFile.getName() + " with package " + fqName);
            }
        }
        return packageDescriptor.getMemberScope();
    } else {
        if (parentDeclaration instanceof KtClassOrObject) {
            return getClassDescriptor((KtClassOrObject) parentDeclaration, location).getUnsubstitutedMemberScope();
        } else if (parentDeclaration instanceof KtScript) {
            return getScriptDescriptor((KtScript) parentDeclaration, location).getUnsubstitutedMemberScope();
        } else {
            throw new IllegalStateException("Don't call this method for local declarations: " + declaration + "\n" + PsiUtilsKt.getElementTextWithContext(declaration));
        }
    }
}
Also used : FqName(org.jetbrains.kotlin.name.FqName) LazyPackageDescriptor(org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor) NotNull(org.jetbrains.annotations.NotNull)

Example 3 with LazyPackageDescriptor

use of org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor in project kotlin by JetBrains.

the class LoadBuiltinsTest method testBuiltIns.

public void testBuiltIns() throws Exception {
    RecursiveDescriptorComparator.Configuration configuration = RecursiveDescriptorComparator.RECURSIVE_ALL.includeMethodsOfKotlinAny(false).withRenderer(DescriptorRenderer.Companion.withOptions(new Function1<DescriptorRendererOptions, Unit>() {

        @Override
        public Unit invoke(DescriptorRendererOptions options) {
            options.setWithDefinedIn(false);
            options.setOverrideRenderingPolicy(OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE);
            options.setVerbose(true);
            options.setAnnotationArgumentsRenderingPolicy(AnnotationArgumentsRenderingPolicy.UNLESS_EMPTY);
            options.setModifiers(DescriptorRendererModifier.ALL);
            return Unit.INSTANCE;
        }
    }));
    PackageFragmentProvider packageFragmentProvider = createBuiltInsPackageFragmentProvider();
    List<KtFile> files = KotlinTestUtils.loadToJetFiles(getEnvironment(), ContainerUtil.concat(allFilesUnder("core/builtins/native"), allFilesUnder("core/builtins/src")));
    ModuleDescriptor module = LazyResolveTestUtilsKt.createResolveSessionForFiles(getEnvironment().getProject(), files, false).getModuleDescriptor();
    for (FqName packageFqName : CollectionsKt.listOf(BUILT_INS_PACKAGE_FQ_NAME, COLLECTIONS_PACKAGE_FQ_NAME, RANGES_PACKAGE_FQ_NAME)) {
        PackageFragmentDescriptor fromLazyResolve = CollectionsKt.single(module.getPackage(packageFqName).getFragments());
        if (fromLazyResolve instanceof LazyPackageDescriptor) {
            PackageFragmentDescriptor deserialized = CollectionsKt.single(packageFragmentProvider.getPackageFragments(packageFqName));
            RecursiveDescriptorComparator.validateAndCompareDescriptors(fromLazyResolve, deserialized, configuration, new File("compiler/testData/builtin-classes/default/" + packageFqName.asString().replace('.', '-') + ".txt"));
        }
    }
}
Also used : RecursiveDescriptorComparator(org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator) ModuleDescriptor(org.jetbrains.kotlin.descriptors.ModuleDescriptor) PackageFragmentProvider(org.jetbrains.kotlin.descriptors.PackageFragmentProvider) BuiltInsPackageFragmentProviderKt.createBuiltInPackageFragmentProvider(org.jetbrains.kotlin.builtins.BuiltInsPackageFragmentProviderKt.createBuiltInPackageFragmentProvider) FqName(org.jetbrains.kotlin.name.FqName) Function1(kotlin.jvm.functions.Function1) LazyPackageDescriptor(org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor) KtFile(org.jetbrains.kotlin.psi.KtFile) PackageFragmentDescriptor(org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor) KtFile(org.jetbrains.kotlin.psi.KtFile) File(java.io.File)

Aggregations

FqName (org.jetbrains.kotlin.name.FqName)3 LazyPackageDescriptor (org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor)3 NotNull (org.jetbrains.annotations.NotNull)2 File (java.io.File)1 Function1 (kotlin.jvm.functions.Function1)1 BuiltInsPackageFragmentProviderKt.createBuiltInPackageFragmentProvider (org.jetbrains.kotlin.builtins.BuiltInsPackageFragmentProviderKt.createBuiltInPackageFragmentProvider)1 ModuleDescriptor (org.jetbrains.kotlin.descriptors.ModuleDescriptor)1 PackageFragmentDescriptor (org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor)1 PackageFragmentProvider (org.jetbrains.kotlin.descriptors.PackageFragmentProvider)1 KtFile (org.jetbrains.kotlin.psi.KtFile)1 RecursiveDescriptorComparator (org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator)1