From 7c47039d000710d04e9bb98063f7edba41d2e58c Mon Sep 17 00:00:00 2001 From: Dmitry Boulytchev Date: Sat, 31 Mar 2012 18:39:57 +0400 Subject: [PATCH] Fixed conservative bug in differentiate (compile-server). --- .../fieldProperties/nonIncremental4.log | 6 + .../nonIncremental4/.idea/.name | 1 + .../nonIncremental4/.idea/compiler.xml | 21 + .../.idea/copyright/profiles_settings.xml | 5 + .../nonIncremental4/.idea/encodings.xml | 5 + .../nonIncremental4/.idea/misc.xml | 26 ++ .../nonIncremental4/.idea/modules.xml | 9 + .../.idea/scopes/scope_settings.xml | 5 + .../nonIncremental4/.idea/uiDesigner.xml | 125 ++++++ .../nonIncremental4/.idea/vcs.xml | 7 + .../nonIncremental4/.idea/workspace.xml | 399 ++++++++++++++++++ .../nonIncremental4/A.java.new | 10 + .../nonIncremental4/nonIncremental4.iml | 12 + .../nonIncremental4/src/A.java | 14 + .../nonIncremental4/src/C.java | 9 + .../jetbrains/ether/FieldPropertyTest.java | 7 + .../ether/dependencyView/ClassRepr.java | 5 + .../ether/dependencyView/Difference.java | 2 + .../ether/dependencyView/Mappings.java | 2 +- .../ether/dependencyView/MethodRepr.java | 5 + .../jetbrains/ether/dependencyView/Proto.java | 5 + .../ether/dependencyView/ProtoMember.java | 5 + 22 files changed, 684 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4.log create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/.name create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/compiler.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/copyright/profiles_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/encodings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/misc.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/modules.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/scopes/scope_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/uiDesigner.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/vcs.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/workspace.xml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/A.java.new create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/nonIncremental4.iml create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/A.java create mode 100644 java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/C.java 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(); + } }; } }