public void visitProgramClass(ProgramClass programClass) { int currentAccessFlags = programClass.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); // Compute the required access level. Clazz referencingClass = this.referencingClass; int requiredAccessLevel = inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : AccessUtil.PUBLIC; // Fix the class access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programClass.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } }
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)); } }
new AccessFixer())); new AccessFixer()));
programClassPool.classesAccept(new AccessFixer()); programClassPool.classesAccept(new AccessFixer());
programClassPool.classesAccept(new AccessFixer()); programClassPool.classesAccept(new AccessFixer());
programClassPool.classesAccept(new AccessFixer()); programClassPool.classesAccept(new AccessFixer());