LightClassUtil.extractPropertyAccessors refactoring to fix KotlinShortNamesCacheTest.testGetMethodsByNameWithCustomPropertyAccessors test
After light classes caching the test started to fail. Also refer Simon Ogorodnik.
This commit is contained in:
committed by
Nicolay Mitropolsky
parent
710c726c9a
commit
657123f2c0
@@ -127,10 +127,10 @@ object LightClassUtil {
|
|||||||
return getPsiMethodWrappers(declaration).firstOrNull()
|
return getPsiMethodWrappers(declaration).firstOrNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getPsiMethodWrappers(declaration: KtDeclaration): Sequence<PsiMethod> {
|
private fun getPsiMethodWrappers(declaration: KtDeclaration): Sequence<KtLightMethod> =
|
||||||
return getWrappingClasses(declaration).flatMap { it.methods.asSequence() }
|
getWrappingClasses(declaration).flatMap { it.methods.asSequence() }
|
||||||
.filter { method -> method is KtLightMethod && method.kotlinOrigin === declaration }
|
.filterIsInstance<KtLightMethod>()
|
||||||
}
|
.filter { it.kotlinOrigin === declaration }
|
||||||
|
|
||||||
private fun getWrappingClass(declaration: KtDeclaration): PsiClass? {
|
private fun getWrappingClass(declaration: KtDeclaration): PsiClass? {
|
||||||
var declaration = declaration
|
var declaration = declaration
|
||||||
@@ -191,33 +191,19 @@ object LightClassUtil {
|
|||||||
private fun extractPropertyAccessors(
|
private fun extractPropertyAccessors(
|
||||||
ktDeclaration: KtDeclaration,
|
ktDeclaration: KtDeclaration,
|
||||||
specialGetter: PsiMethod?, specialSetter: PsiMethod?): PropertyAccessorsPsiMethods {
|
specialGetter: PsiMethod?, specialSetter: PsiMethod?): PropertyAccessorsPsiMethods {
|
||||||
var getterWrapper = specialGetter
|
|
||||||
var setterWrapper = specialSetter
|
|
||||||
val additionalAccessors = arrayListOf<PsiMethod>()
|
|
||||||
|
|
||||||
for (wrapper in getPsiMethodWrappers(ktDeclaration)) {
|
val (setters, getters) = getPsiMethodWrappers(ktDeclaration).partition { it.isSetter }
|
||||||
if (wrapper !is KtLightMethod) continue
|
|
||||||
|
|
||||||
if (wrapper.isSetter) {
|
|
||||||
if (setterWrapper == null || setterWrapper === specialSetter) {
|
|
||||||
setterWrapper = wrapper
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
additionalAccessors.add(wrapper)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (getterWrapper == null || getterWrapper === specialGetter) {
|
|
||||||
getterWrapper = wrapper
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
additionalAccessors.add(wrapper)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
val allGetters = listOfNotNull(specialGetter) + getters.filterNot { it == specialGetter }
|
||||||
|
val allSetters = listOfNotNull(specialSetter) + setters.filterNot { it == specialSetter }
|
||||||
val backingField = getLightClassBackingField(ktDeclaration)
|
val backingField = getLightClassBackingField(ktDeclaration)
|
||||||
return PropertyAccessorsPsiMethods(getterWrapper, setterWrapper, backingField, additionalAccessors)
|
val additionalAccessors = allGetters.drop(1) + allSetters.drop(1)
|
||||||
|
return PropertyAccessorsPsiMethods(
|
||||||
|
allGetters.firstOrNull(),
|
||||||
|
allSetters.firstOrNull(),
|
||||||
|
backingField,
|
||||||
|
additionalAccessors
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildLightTypeParameterList(
|
fun buildLightTypeParameterList(
|
||||||
|
|||||||
Reference in New Issue
Block a user