Refactoring: move JavaDescriptorResolver extensions to idea-analysis module

This commit is contained in:
Nikolay Krasko
2015-05-15 15:22:43 +03:00
parent ea789845aa
commit edeea5e399
4 changed files with 43 additions and 50 deletions
@@ -29,31 +29,4 @@ public class JavaDescriptorResolver(public val packageFragmentProvider: LazyJava
public fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
return packageFragmentProvider.getClass(javaClass)
}
}
public fun JavaDescriptorResolver.resolveMethod(method: JavaMethod): FunctionDescriptor? {
return getContainingScope(method)?.getFunctions(method.getName())?.findByJavaElement(method)
}
public fun JavaDescriptorResolver.resolveConstructor(constructor: JavaConstructor): ConstructorDescriptor? {
return resolveClass(constructor.getContainingClass())?.getConstructors()?.findByJavaElement(constructor)
}
public fun JavaDescriptorResolver.resolveField(field: JavaField): PropertyDescriptor? {
return getContainingScope(field)?.getProperties(field.getName())?.findByJavaElement(field) as? PropertyDescriptor
}
private fun JavaDescriptorResolver.getContainingScope(member: JavaMember): JetScope? {
val containingClass = resolveClass(member.getContainingClass())
return if (member.isStatic())
containingClass?.getStaticScope()
else
containingClass?.getDefaultType()?.getMemberScope()
}
private fun <T : DeclarationDescriptorWithSource> Collection<T>.findByJavaElement(javaElement: JavaElement): T? {
return firstOrNull {
member ->
(member.getSource() as? JavaSourceElement)?.javaElement == javaElement
}
}
}