in intellij-plugin-verifier/verifier-core/src/main/java/com/jetbrains/pluginverifier/verifiers/resolution/AccessibilityUtil.kt [25:53]
fun detectAccessProblem(callee: ClassFileMember, caller: ClassFileMember, context: VerificationContext): AccessType? {
when {
callee.isPrivate -> {
if (callee is Method || callee is Field) {
val callerClass = if (caller is ClassFile) caller else caller.containingClassFile
val calleeClass = callee.containingClassFile
return if (doClassesBelongToTheSameNestHost(callerClass, calleeClass, context)) {
null
} else {
AccessType.PRIVATE
}
}
if (caller.containingClassFile.name != callee.containingClassFile.name) {
return AccessType.PRIVATE
}
}
callee.isProtected ->
if (caller.containingClassFile.packageName != callee.containingClassFile.packageName) {
if (!context.classResolver.isSubclassOf(caller.containingClassFile, callee.containingClassFile.name)) {
return AccessType.PROTECTED
}
}
callee.isPackagePrivate ->
if (caller.containingClassFile.packageName != callee.containingClassFile.packageName) {
return AccessType.PACKAGE_PRIVATE
}
}
return null
}