From b1b83a0ecb4d19380792b567a0f1d9e405b302e9 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 25 Dec 2013 17:43:36 +0400 Subject: [PATCH] Store connection between files and lazy package fragment descriptor LazyPackageDescriptor objects are going to be used as input for light class generation. Java code generator expects to find connection between descriptors and files in binding context. --- .../FileBasedPackageMemberDeclarationProvider.java | 8 +++++++- .../declarations/PackageMemberDeclarationProvider.java | 8 +++++++- .../resolve/lazy/descriptors/LazyPackageDescriptor.java | 8 +++++++- .../resolve/StubPackageMemberDeclarationProvider.java | 6 ++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java index a2a5a6bbf07..e3cdd2394a1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -74,6 +74,12 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD return factory.getPackageDeclarations(fqName); } + @NotNull + @Override + public Collection getPackageFiles() { + return packageFiles; + } + @Override public String toString() { return "Declarations for package " + fqName; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/PackageMemberDeclarationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/PackageMemberDeclarationProvider.java index f9a7f463fbe..2f45e503962 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/PackageMemberDeclarationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/PackageMemberDeclarationProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,8 @@ package org.jetbrains.jet.lang.resolve.lazy.declarations; import com.intellij.psi.NavigatablePsiElement; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.ReadOnly; +import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Collection; @@ -28,4 +30,8 @@ public interface PackageMemberDeclarationProvider extends DeclarationProvider { @NotNull Collection getPackageDeclarations(FqName fqName); + + @NotNull + @ReadOnly + Collection getPackageFiles(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java index 8c033043aab..8602227142a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageDescriptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,8 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil; import org.jetbrains.jet.lang.resolve.lazy.LazyEntity; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; @@ -49,6 +51,10 @@ public class LazyPackageDescriptor extends DeclarationDescriptorImpl implements this.declarationProvider = declarationProvider; this.memberScope = new LazyPackageMemberScope(resolveSession, declarationProvider, this); + + for (JetFile file : declarationProvider.getPackageFiles()) { + this.resolveSession.getTrace().record(BindingContext.FILE_TO_PACKAGE_FRAGMENT, file, this); + } } @NotNull diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/StubPackageMemberDeclarationProvider.java b/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/StubPackageMemberDeclarationProvider.java index 0a3be551dab..79082d43212 100644 --- a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/StubPackageMemberDeclarationProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/StubPackageMemberDeclarationProvider.java @@ -90,4 +90,10 @@ public class StubPackageMemberDeclarationProvider extends AbstractStubDeclaratio } }); } + + @NotNull + @Override + public Collection getPackageFiles() { + return JetAllPackagesIndex.getInstance().get(fqName.asString(), project, searchScope); + } }