diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4.log b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4.log
new file mode 100644
index 000000000000..1271cf07c7f9
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4.log
@@ -0,0 +1,6 @@
+Cleaning output files:
+out/production/nonIncremental4/A.class
+End of files
+Compiling files:
+src/A.java
+End of files
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/.name b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/.name
new file mode 100644
index 000000000000..9058bc55024a
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/.name
@@ -0,0 +1 @@
+nonIncremental4
\ No newline at end of file
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/compiler.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/compiler.xml
new file mode 100644
index 000000000000..a1b41c52c724
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/compiler.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/copyright/profiles_settings.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/copyright/profiles_settings.xml
new file mode 100644
index 000000000000..3572571ad83c
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/encodings.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/encodings.xml
new file mode 100644
index 000000000000..e206d70d8595
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/encodings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/misc.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/misc.xml
new file mode 100644
index 000000000000..492d8ee45ce4
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/misc.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ IDEA jdk
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/modules.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/modules.xml
new file mode 100644
index 000000000000..5b72606625e5
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/scopes/scope_settings.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/scopes/scope_settings.xml
new file mode 100644
index 000000000000..922003b8433b
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/uiDesigner.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/uiDesigner.xml
new file mode 100644
index 000000000000..3b0002030884
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/uiDesigner.xml
@@ -0,0 +1,125 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/vcs.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/vcs.xml
new file mode 100644
index 000000000000..def6a6a18457
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/workspace.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/workspace.xml
new file mode 100644
index 000000000000..5c69be76afd6
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/workspace.xml
@@ -0,0 +1,399 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ localhost
+ 5050
+
+
+
+
+
+ 1333201752849
+ 1333201752849
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/A.java.new b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/A.java.new
new file mode 100644
index 000000000000..73dca289a964
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/A.java.new
@@ -0,0 +1,10 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: db
+ * Date: 31.03.12
+ * Time: 17:50
+ * To change this template use File | Settings | File Templates.
+ */
+public class A {
+ public final static int X = 0;
+}
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/nonIncremental4.iml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/nonIncremental4.iml
new file mode 100644
index 000000000000..d5c074327501
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/nonIncremental4.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/A.java b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/A.java
new file mode 100644
index 000000000000..5b61bd62314f
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/A.java
@@ -0,0 +1,14 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: db
+ * Date: 31.03.12
+ * Time: 17:50
+ * To change this template use File | Settings | File Templates.
+ */
+public class A {
+ public final static int X;
+
+ static {
+ X = 100;
+ }
+}
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/C.java b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/C.java
new file mode 100644
index 000000000000..cf7ba0e1a6aa
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/C.java
@@ -0,0 +1,9 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: db
+ * Date: 31.03.12
+ * Time: 17:51
+ * To change this template use File | Settings | File Templates.
+ */
+public class C {
+}
diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java
index 8af0a272f344..8ba5807be69d 100644
--- a/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java
+++ b/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java
@@ -83,4 +83,11 @@ public class FieldPropertyTest extends IncrementalTestCase {
public void testNonIncremental2() throws Exception {
doTest();
}
+ //public void testNonIncremental3() throws Exception {
+ // doTest();
+ // }
+
+ public void testNonIncremental4() throws Exception {
+ doTest();
+ }
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java
index 9b591460b155..2eaedf77c615 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java
@@ -134,6 +134,11 @@ public class ClassRepr extends Proto {
public int base() {
return d;
}
+
+ @Override
+ public boolean hadValue() {
+ return false;
+ }
};
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java b/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java
index 7b10a1f34cbe..003afdf31e0f 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java
@@ -112,4 +112,6 @@ abstract class Difference {
public abstract int removedModifiers();
public abstract boolean packageLocalOn();
+
+ public abstract boolean hadValue ();
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java
index 6af8cfc58e9d..42142fe8019c 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java
@@ -1432,7 +1432,7 @@ public class Mappings {
debug("Field: ", it.name);
if ((field.access & Opcodes.ACC_PRIVATE) == 0 && (field.access & mask) == mask) {
- if ((d.base() & Difference.ACCESS) > 0 || (d.base() & Difference.VALUE) > 0) {
+ if ((d.base() & Difference.ACCESS) > 0 || ((d.base() & Difference.VALUE) > 0 && d.hadValue())) {
debug("Inline field changed it's access or value => a switch to non-incremental mode requested");
if (!incrementalDecision(it.name, field, affectedFiles, filter)) {
debug("End of Differentiate, returning false");
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java
index f4e325fa5ecf..b8804dc3285a 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java
@@ -80,6 +80,11 @@ class MethodRepr extends ProtoMember {
public boolean packageLocalOn() {
return diff.packageLocalOn();
}
+
+ @Override
+ public boolean hadValue() {
+ return ((MethodRepr)past).hasValue();
+ }
};
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java b/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java
index 99508de315e0..fd2badf35b42 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java
@@ -90,6 +90,11 @@ class Proto implements RW.Savable {
((access & Opcodes.ACC_PRIVATE) == 0 && (access & Opcodes.ACC_PROTECTED) == 0 && (access & Opcodes.ACC_PUBLIC) == 0);
}
+
+ @Override
+ public boolean hadValue() {
+ return false;
+ }
};
}
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java b/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java
index 4a301c335108..191f8f2b3435 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java
@@ -170,6 +170,11 @@ abstract class ProtoMember extends Proto {
public boolean packageLocalOn() {
return diff.packageLocalOn();
}
+
+ @Override
+ public boolean hadValue() {
+ return ((ProtoMember)past).hasValue();
+ }
};
}
}