@@ -2895,4 +2895,63 @@ public List<CtClass> createNewClasses(ClassPool classPool) {
28952895 assertThat (jApiClass .isBinaryCompatible (), is (true ));
28962896 assertThat (jApiClass .isSourceCompatible (), is (true ));
28972897 }
2898+
2899+ @ Test
2900+ void testPackagePrivateMethodRemovedInSuperclass () throws Exception {
2901+ JarArchiveComparatorOptions options = new JarArchiveComparatorOptions ();
2902+ options .setAccessModifier (AccessModifier .PROTECTED );
2903+ List <JApiClass > jApiClasses = ClassesHelper .compareClasses (options , new ClassesHelper .ClassesGenerator () {
2904+ @ Override
2905+ public List <CtClass > createOldClasses (ClassPool classPool ) throws Exception {
2906+ CtClass aSuperClass = CtClassBuilder .create ().name ("japicmp.Superclass" ).addToClassPool (classPool );
2907+ CtMethodBuilder .create ().packageProtectedAccess ().name ("method" ).addToClass (aSuperClass );
2908+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).withSuperclass (aSuperClass ).addToClassPool (classPool );
2909+ return Arrays .asList (aSuperClass , aClass );
2910+ }
2911+
2912+ @ Override
2913+ public List <CtClass > createNewClasses (ClassPool classPool ) {
2914+ CtClass aSuperClass = CtClassBuilder .create ().name ("japicmp.Superclass" ).addToClassPool (classPool );
2915+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).withSuperclass (aSuperClass ).addToClassPool (classPool );
2916+ return Arrays .asList (aSuperClass , aClass );
2917+ }
2918+ });
2919+ JApiClass jApiClass = getJApiClass (jApiClasses , "japicmp.Superclass" );
2920+ JApiMethod jApiMethod = getJApiMethod (jApiClass .getMethods (), "method" );
2921+ assertThat (jApiMethod .getChangeStatus (), is (JApiChangeStatus .REMOVED ));
2922+ jApiClass = getJApiClass (jApiClasses , "japicmp.Test" );
2923+ assertThat (jApiClass .getCompatibilityChanges (), hasSize (0 ));
2924+ assertThat (jApiClass .isBinaryCompatible (), is (true ));
2925+ assertThat (jApiClass .isSourceCompatible (), is (true ));
2926+ }
2927+
2928+ @ Test
2929+ void testPackagePrivateSyntheticMethodRemovedInSuperclassIgnoreSynthetic () throws Exception {
2930+ JarArchiveComparatorOptions options = new JarArchiveComparatorOptions ();
2931+ options .setAccessModifier (AccessModifier .PRIVATE );
2932+ options .setIncludeSynthetic (false );
2933+ List <JApiClass > jApiClasses = ClassesHelper .compareClasses (options , new ClassesHelper .ClassesGenerator () {
2934+ @ Override
2935+ public List <CtClass > createOldClasses (ClassPool classPool ) throws Exception {
2936+ CtClass aSuperClass = CtClassBuilder .create ().name ("japicmp.Superclass" ).addToClassPool (classPool );
2937+ CtMethodBuilder .create ().packageProtectedAccess ().syntheticModifier ().name ("method" ).addToClass (aSuperClass );
2938+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).withSuperclass (aSuperClass ).addToClassPool (classPool );
2939+ return Arrays .asList (aSuperClass , aClass );
2940+ }
2941+
2942+ @ Override
2943+ public List <CtClass > createNewClasses (ClassPool classPool ) {
2944+ CtClass aSuperClass = CtClassBuilder .create ().name ("japicmp.Superclass" ).addToClassPool (classPool );
2945+ CtClass aClass = CtClassBuilder .create ().name ("japicmp.Test" ).withSuperclass (aSuperClass ).addToClassPool (classPool );
2946+ return Arrays .asList (aSuperClass , aClass );
2947+ }
2948+ });
2949+ JApiClass jApiClass = getJApiClass (jApiClasses , "japicmp.Superclass" );
2950+ JApiMethod jApiMethod = getJApiMethod (jApiClass .getMethods (), "method" );
2951+ assertThat (jApiMethod .getChangeStatus (), is (JApiChangeStatus .REMOVED ));
2952+ jApiClass = getJApiClass (jApiClasses , "japicmp.Test" );
2953+ assertThat (jApiClass .getCompatibilityChanges (), hasSize (0 ));
2954+ assertThat (jApiClass .isBinaryCompatible (), is (true ));
2955+ assertThat (jApiClass .isSourceCompatible (), is (true ));
2956+ }
28982957}
0 commit comments