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) {
|
public PackageFragmentDescriptor getPackageFragment(@NotNull FqName fqName) {
|
||||||
return lazyJavaPackageFragmentProvider.getPackageFragment(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 {
|
else {
|
||||||
val jClass = c.findJavaClass(fqName)
|
val jClass = c.findJavaClass(fqName)
|
||||||
if (jClass != null && DescriptorResolverUtils.hasStaticMembers(jClass)) {
|
if (jClass != null) {
|
||||||
val correspondingClass = c.javaClassResolver.resolveClass(jClass)
|
packageFragmentsForClasses(jClass)
|
||||||
if (correspondingClass != null) LazyPackageFragmentForJavaClass(c, _module, jClass) else null
|
|
||||||
}
|
}
|
||||||
else null
|
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)
|
override fun getPackageFragment(fqName: FqName) = _packageFragments(fqName)
|
||||||
|
fun getPackageFragment(javaClass: JavaClass) = packageFragmentsForClasses(javaClass)
|
||||||
|
|
||||||
override fun getPackageFragments(fqName: FqName) = getPackageFragment(fqName)?.let {listOf(it)}.orEmpty()
|
override fun getPackageFragments(fqName: FqName) = getPackageFragment(fqName)?.let {listOf(it)}.orEmpty()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user