Index: model/org/eclipse/jdt/internal/core/builder/State.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/State.java,v retrieving revision 1.60 diff -u -r1.60 State.java --- model/org/eclipse/jdt/internal/core/builder/State.java 16 Mar 2007 18:28:59 -0000 1.60 +++ model/org/eclipse/jdt/internal/core/builder/State.java 16 May 2007 15:33:20 -0000 @@ -66,10 +66,17 @@ this.typeLocators = new SimpleLookupTable(7); this.buildNumber = 0; // indicates a full build - this.lastStructuralBuildTime = System.currentTimeMillis(); + this.lastStructuralBuildTime = computeStructuralBuildTime(javaBuilder.lastState == null ? 0 : javaBuilder.lastState.lastStructuralBuildTime); this.structuralBuildTimes = new SimpleLookupTable(3); } +long computeStructuralBuildTime(long previousTime) { + long newTime = System.currentTimeMillis(); + if (newTime <= previousTime) + newTime = previousTime + 1; + return newTime; +} + void copyFrom(State lastState) { this.knownPackageNames = null; this.previousStructuralBuildTime = lastState.previousStructuralBuildTime; @@ -354,7 +361,7 @@ void tagAsStructurallyChanged() { this.previousStructuralBuildTime = this.lastStructuralBuildTime; this.structurallyChangedTypes = new StringSet(7); - this.lastStructuralBuildTime = System.currentTimeMillis(); + this.lastStructuralBuildTime = computeStructuralBuildTime(this.previousStructuralBuildTime); } boolean wasStructurallyChanged(IProject prereqProject, State prereqState) {