fun detectAccessProblem()

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
}