in ide-diff-builder/src/main/java/org/jetbrains/ide/diff/builder/api/IntroducedProcessor.kt [18:55]
override fun process(
oldClass: ClassFile?,
oldMember: ClassFileMember?,
newClass: ClassFile?,
newMember: ClassFileMember?,
oldResolver: Resolver,
newResolver: Resolver
) {
if (newMember != null && newMember.isAccessible && (oldMember == null || !oldMember.isAccessible)) {
if (oldClass != null) {
val memberMovedDown = hasSuperTypeMatchingPredicate(oldClass, oldResolver) { parentClass ->
when (newMember) {
is Method -> {
parentClass.methods.any {
it.name == newMember.name
&& it.descriptor == newMember.descriptor
&& it.isStatic == newMember.isStatic
&& it.isAccessible
}
}
is Field -> {
parentClass.fields.any {
it.name == newMember.name
&& it.descriptor == newMember.descriptor
&& it.isStatic == newMember.isStatic
&& it.isAccessible
}
}
else -> false
}
}
if (memberMovedDown) {
return
}
}
result += newMember
}
}