Minor refactoring in LazyJavaPackageScope
This commit is contained in:
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
|
|||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor;
|
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor;
|
||||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment;
|
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment;
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass;
|
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass;
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement;
|
||||||
import org.jetbrains.kotlin.load.kotlin.ModuleMapping;
|
import org.jetbrains.kotlin.load.kotlin.ModuleMapping;
|
||||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileKotlinClass;
|
import org.jetbrains.kotlin.load.kotlin.VirtualFileKotlinClass;
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider;
|
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider;
|
||||||
@@ -143,12 +144,15 @@ public class JvmCodegenUtil {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
KotlinJvmBinaryClass binaryClass = ((LazyJavaPackageFragment) packageFragment).getScope().getKotlinBinaryClass();
|
SourceElement source = ((LazyJavaPackageFragment) packageFragment).getSource();
|
||||||
if (binaryClass instanceof VirtualFileKotlinClass) {
|
if (source instanceof KotlinJvmBinarySourceElement) {
|
||||||
VirtualFile file = ((VirtualFileKotlinClass) binaryClass).getFile();
|
KotlinJvmBinaryClass binaryClass = ((KotlinJvmBinarySourceElement) source).getBinaryClass();
|
||||||
if (file.getFileSystem().getProtocol() == StandardFileSystems.FILE_PROTOCOL) {
|
if (binaryClass instanceof VirtualFileKotlinClass) {
|
||||||
File ioFile = VfsUtilCore.virtualToIoFile(file);
|
VirtualFile file = ((VirtualFileKotlinClass) binaryClass).getFile();
|
||||||
return ioFile.getAbsolutePath().startsWith(outDirectory.getAbsolutePath() + File.separator);
|
if (file.getFileSystem().getProtocol() == StandardFileSystems.FILE_PROTOCOL) {
|
||||||
|
File ioFile = VfsUtilCore.virtualToIoFile(file);
|
||||||
|
return ioFile.getAbsolutePath().startsWith(outDirectory.getAbsolutePath() + File.separator);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-3
@@ -22,8 +22,10 @@ import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
|
|||||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||||
import org.jetbrains.kotlin.load.java.structure.JavaPackage
|
import org.jetbrains.kotlin.load.java.structure.JavaPackage
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement
|
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DecapitalizedAnnotationScope
|
import org.jetbrains.kotlin.resolve.scopes.DecapitalizedAnnotationScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||||
|
import org.jetbrains.kotlin.storage.get
|
||||||
|
|
||||||
class LazyJavaPackageFragment(
|
class LazyJavaPackageFragment(
|
||||||
private val c: LazyJavaResolverContext,
|
private val c: LazyJavaResolverContext,
|
||||||
@@ -38,6 +40,10 @@ class LazyJavaPackageFragment(
|
|||||||
LazyJavaClassDescriptor(c, this, javaClass.fqName!!, javaClass)
|
LazyJavaClassDescriptor(c, this, javaClass.fqName!!, javaClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val oldPackageFacade by c.storageManager.createNullableLazyValue {
|
||||||
|
c.components.kotlinClassFinder.findKotlinClass(PackageClassUtils.getPackageClassId(fqName))
|
||||||
|
}
|
||||||
|
|
||||||
internal fun resolveTopLevelClass(javaClass: JavaClass) = topLevelClasses(javaClass)
|
internal fun resolveTopLevelClass(javaClass: JavaClass) = topLevelClasses(javaClass)
|
||||||
|
|
||||||
override fun getMemberScope(): JetScope = wrappedScope
|
override fun getMemberScope(): JetScope = wrappedScope
|
||||||
@@ -45,8 +51,6 @@ class LazyJavaPackageFragment(
|
|||||||
override fun toString() = "lazy java package fragment: $fqName"
|
override fun toString() = "lazy java package fragment: $fqName"
|
||||||
|
|
||||||
override fun getSource(): SourceElement {
|
override fun getSource(): SourceElement {
|
||||||
val binaryClass = scope.kotlinBinaryClass ?: return SourceElement.NO_SOURCE
|
return KotlinJvmBinarySourceElement(oldPackageFacade ?: return SourceElement.NO_SOURCE)
|
||||||
|
|
||||||
return KotlinJvmBinarySourceElement(binaryClass)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-7
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
|
|||||||
import org.jetbrains.kotlin.load.java.lazy.resolveKotlinBinaryClass
|
import org.jetbrains.kotlin.load.java.lazy.resolveKotlinBinaryClass
|
||||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||||
import org.jetbrains.kotlin.load.java.structure.JavaPackage
|
import org.jetbrains.kotlin.load.java.structure.JavaPackage
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
|
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -43,12 +42,6 @@ public class LazyJavaPackageScope(
|
|||||||
private val jPackage: JavaPackage,
|
private val jPackage: JavaPackage,
|
||||||
containingDeclaration: LazyJavaPackageFragment
|
containingDeclaration: LazyJavaPackageFragment
|
||||||
) : LazyJavaStaticScope(c, containingDeclaration) {
|
) : LazyJavaStaticScope(c, containingDeclaration) {
|
||||||
|
|
||||||
// TODO: Storing references is a temporary hack until modules infrastructure is implemented.
|
|
||||||
// See JetTypeMapperWithOutDirectories for details
|
|
||||||
public val kotlinBinaryClass: KotlinJvmBinaryClass?
|
|
||||||
= c.components.kotlinClassFinder.findKotlinClass(PackageClassUtils.getPackageClassId(packageFragment.fqName))
|
|
||||||
|
|
||||||
private val kotlinBinaryClasses = c.storageManager.createLazyValue {
|
private val kotlinBinaryClasses = c.storageManager.createLazyValue {
|
||||||
val simpleNames = c.components.packageMapper.findPackageParts(jPackage.getFqName().asString())
|
val simpleNames = c.components.packageMapper.findPackageParts(jPackage.getFqName().asString())
|
||||||
val packageClassId = PackageClassUtils.getPackageClassId(packageFragment.fqName).packageFqName
|
val packageClassId = PackageClassUtils.getPackageClassId(packageFragment.fqName).packageFqName
|
||||||
|
|||||||
@@ -33,3 +33,5 @@ public interface NullableLazyValue<T : Any> : Function0<T?> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public fun <T : Any> NotNullLazyValue<T>.get(_this: Any?, p: PropertyMetadata): T = invoke()
|
public fun <T : Any> NotNullLazyValue<T>.get(_this: Any?, p: PropertyMetadata): T = invoke()
|
||||||
|
|
||||||
|
public fun <T : Any> NullableLazyValue<T>.get(_this: Any?, p: PropertyMetadata): T? = invoke()
|
||||||
|
|||||||
Reference in New Issue
Block a user