Add modality/visibility/inline to all expect/actual declarations in QF

So #KT-25539 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-07-25 17:27:18 +03:00
parent 54b63ea43a
commit 14d6560e67
23 changed files with 119 additions and 44 deletions
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
import org.jetbrains.kotlin.idea.caches.project.implementedDescriptors
import org.jetbrains.kotlin.idea.caches.project.implementingDescriptors
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.core.setVisibility
import org.jetbrains.kotlin.idea.core.toDescriptor
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -126,3 +127,17 @@ fun KtDeclaration.isEffectivelyActual(): Boolean {
private fun MemberDescriptor.isEnumEntryInActual() =
(DescriptorUtils.isEnumEntry(this) && (containingDeclaration as? MemberDescriptor)?.isActual == true)
fun KtDeclaration.runOnExpectAndAllActuals(checkExpect: Boolean = true, f: (KtDeclaration) -> Unit) {
if (hasActualModifier()) {
val expectElement = liftToExpected()
expectElement?.actualsForExpected()?.forEach {
if (it !== this) {
f(it)
}
}
expectElement?.let { f(it) }
} else if (!checkExpect || isExpectDeclaration()) {
actualsForExpected().forEach { f(it) }
}
}