Java Resolver: Substitute original element when resolving PsiMethod to FunctionDescriptor

#KT-7353 Fixed
This commit is contained in:
Alexey Sedunov
2015-05-22 15:08:52 +03:00
parent babb7e58bc
commit b2201026d1
18 changed files with 214 additions and 5 deletions
@@ -46,12 +46,13 @@ public object JavaResolveExtension : CacheExtension<(PsiElement) -> Pair<JavaDes
}
fun PsiMethod.getJavaMethodDescriptor(): FunctionDescriptor {
val resolver = JavaResolveExtension.getResolver(getProject(), this)
val method = getOriginalElement() as PsiMethod
val resolver = JavaResolveExtension.getResolver(method.getProject(), method)
val methodDescriptor = when {
this.isConstructor() -> resolver.resolveConstructor(JavaConstructorImpl(this))
else -> resolver.resolveMethod(JavaMethodImpl(this))
method.isConstructor() -> resolver.resolveConstructor(JavaConstructorImpl(method))
else -> resolver.resolveMethod(JavaMethodImpl(method))
}
assert(methodDescriptor != null) { "No descriptor found for " + getText() }
assert(methodDescriptor != null) { "No descriptor found for " + method.getText() }
return methodDescriptor!!
}