public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { int currentAccessFlags = programMember.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); // Compute the required access level. int requiredAccessLevel = programClass.equals(referencingClass) ? AccessUtil.PRIVATE : inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : referencedClass.extends_(referencingClass) && referencingClass.extends_(programClass) ? AccessUtil.PROTECTED : AccessUtil.PUBLIC; // Fix the class member access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programMember.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Do we need to update the access flags? int currentAccessFlags = programMember.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); if (currentAccessLevel < AccessUtil.PUBLIC) { // Compute the required access level. // For protected access, the referencing method may not be // static. We're also taking into account the class in the // invocation and the class that actually contains the member. int requiredAccessLevel = programClass.equals(referencingClass) ? AccessUtil.PRIVATE : inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : (referencingMethodAccessFlags & ClassConstants.ACC_STATIC) == 0 && (referencedClass == null || referencingClass.extends_(referencedClass)) && referencingClass.extends_(programClass) ? AccessUtil.PROTECTED : AccessUtil.PUBLIC; // Fix the class member access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programMember.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } } } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Do we need to update the access flags? int currentAccessFlags = programMember.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); if (currentAccessLevel < AccessUtil.PUBLIC) { // Compute the required access level. // For protected access, the referencing method may not be // static. We're also taking into account the class in the // invocation and the class that actually contains the member. int requiredAccessLevel = programClass.equals(referencingClass) ? AccessUtil.PRIVATE : inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : (referencingMethodAccessFlags & ClassConstants.ACC_STATIC) == 0 && (referencedClass == null || referencingClass.extends_(referencedClass)) && referencingClass.extends_(programClass) ? AccessUtil.PROTECTED : AccessUtil.PUBLIC; // Fix the class member access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programMember.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } } } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Do we need to update the access flags? int currentAccessFlags = programMember.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); if (currentAccessLevel < AccessUtil.PUBLIC) { // Compute the required access level. // For protected access, the referencing method may not be // static. We're also taking into account the class in the // invocation and the class that actually contains the member. int requiredAccessLevel = programClass.equals(referencingClass) ? AccessUtil.PRIVATE : inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : (referencingMethodAccessFlags & ClassConstants.ACC_STATIC) == 0 && (referencedClass == null || referencingClass.extends_(referencedClass)) && referencingClass.extends_(programClass) ? AccessUtil.PROTECTED : AccessUtil.PUBLIC; // Fix the class member access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programMember.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } } } }