Provide access to package fragments generated for static members of Java classes
This commit is contained in:
+5
@@ -65,4 +65,9 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
public PackageFragmentDescriptor getPackageFragment(@NotNull FqName fqName) {
|
||||
return lazyJavaPackageFragmentProvider.getPackageFragment(fqName);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PackageFragmentDescriptor getPackageFragment(@NotNull JavaClass javaClass) {
|
||||
return lazyJavaPackageFragmentProvider.getPackageFragment(javaClass);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-3
@@ -61,9 +61,8 @@ public class LazyJavaPackageFragmentProvider(
|
||||
}
|
||||
else {
|
||||
val jClass = c.findJavaClass(fqName)
|
||||
if (jClass != null && DescriptorResolverUtils.hasStaticMembers(jClass)) {
|
||||
val correspondingClass = c.javaClassResolver.resolveClass(jClass)
|
||||
if (correspondingClass != null) LazyPackageFragmentForJavaClass(c, _module, jClass) else null
|
||||
if (jClass != null) {
|
||||
packageFragmentsForClasses(jClass)
|
||||
}
|
||||
else null
|
||||
}
|
||||
@@ -85,7 +84,17 @@ public class LazyJavaPackageFragmentProvider(
|
||||
)
|
||||
}
|
||||
|
||||
private val packageFragmentsForClasses: MemoizedFunctionToNullable<JavaClass, LazyPackageFragmentForJavaClass> = c.storageManager.createMemoizedFunctionWithNullableValues {
|
||||
jClass ->
|
||||
if (DescriptorResolverUtils.hasStaticMembers(jClass)) {
|
||||
val correspondingClass = c.javaClassResolver.resolveClass(jClass)
|
||||
if (correspondingClass != null) LazyPackageFragmentForJavaClass(c, _module, jClass) else null
|
||||
}
|
||||
else null
|
||||
}
|
||||
|
||||
override fun getPackageFragment(fqName: FqName) = _packageFragments(fqName)
|
||||
fun getPackageFragment(javaClass: JavaClass) = packageFragmentsForClasses(javaClass)
|
||||
|
||||
override fun getPackageFragments(fqName: FqName) = getPackageFragment(fqName)?.let {listOf(it)}.orEmpty()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user