### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java,v retrieving revision 1.17 diff -u -r1.17 ClassFileConstants.java --- compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java 27 Jan 2006 16:46:59 -0000 1.17 +++ compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java 24 Feb 2006 12:09:53 -0000 @@ -46,7 +46,6 @@ */ int AccAnnotationDefault = ASTNode.Bit18; // indicate presence of an attribute "DefaultValue" (annotation method) int AccDeprecated = ASTNode.Bit21; // indicate presence of an attribute "Deprecated" - int AccHierarchyInconsistent = ASTNode.Bit22; int Utf8Tag = 1; int IntegerTag = 3; Index: compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java,v retrieving revision 1.72 diff -u -r1.72 ClassFileReader.java --- compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java 27 Jan 2006 16:46:59 -0000 1.72 +++ compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java 24 Feb 2006 12:09:54 -0000 @@ -284,7 +284,7 @@ } } } else if (CharOperation.equals(attributeName, AttributeNamesConstants.InconsistentHierarchy)) { - this.accessFlags |= ClassFileConstants.AccHierarchyInconsistent; + this.tagBits |= TagBits.HasInconsistentHierarchy; } break; case 'S' : @@ -662,8 +662,15 @@ if (this.getModifiers() != newClassFile.getModifiers()) return true; + // only consider a portion of the tagbits which indicate a structural change for dependents + // e.g. @Override change has no influence outside + long OnlyStructuralTagBits = TagBits.AnnotationTargetMASK // different @Target status ? + | TagBits.AnnotationDeprecated // different @Deprecated status ? + | TagBits.AnnotationRetentionMASK // different @Retention status ? + | TagBits.HasInconsistentHierarchy; // different hierarchy status ? + // meta-annotations - if ((this.getTagBits() & TagBits.AnnotationTargetMASK|TagBits.AnnotationDeprecated|TagBits.AnnotationRetentionMASK) != (newClassFile.getTagBits() & TagBits.AnnotationTargetMASK|TagBits.AnnotationDeprecated|TagBits.AnnotationRetentionMASK)) + if ((this.getTagBits() & OnlyStructuralTagBits) != (newClassFile.getTagBits() & OnlyStructuralTagBits)) return true; // generic signature Index: compiler/org/eclipse/jdt/internal/compiler/lookup/TagBits.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/TagBits.java,v retrieving revision 1.21 diff -u -r1.21 TagBits.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/TagBits.java 15 Feb 2006 12:48:11 -0000 1.21 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/TagBits.java 24 Feb 2006 12:09:54 -0000 @@ -26,6 +26,8 @@ long AnonymousTypeMask = LocalTypeMask | IsAnonymousType; long IsBinaryBinding = ASTNode.Bit7; + long HasInconsistentHierarchy = ASTNode.Bit8; // for binary type binding only + // for the type cycle hierarchy check used by ClassScope long BeginHierarchyCheck = ASTNode.Bit9; // type long EndHierarchyCheck = ASTNode.Bit10; // type