From 14a98a621b30618a8123e8e50cb8d4f991edf7c0 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Wed, 31 Oct 2012 21:53:35 +0100 Subject: [PATCH] IDEA-93760 External build: incremental make does not pick up non-compilable overriding method throwing checked exception --- .../membersChange/removeThrowsInBaseMethod.log | 12 ++++++++++++ .../removeThrowsInBaseMethod/ThrowingTop.java.new | 4 ++++ .../membersChange/removeThrowsInBaseMethod/data.xml | 12 ++++++++++++ .../removeThrowsInBaseMethod/src/Checked.java | 2 ++ .../removeThrowsInBaseMethod/src/ThrowingBottom.java | 5 +++++ .../removeThrowsInBaseMethod/src/ThrowingTop.java | 4 ++++ .../jps/builders/java/dependencyView/Mappings.java | 2 +- .../org/jetbrains/ether/MemberChangeTest.java | 4 ++++ 8 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod.log create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/ThrowingTop.java.new create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/data.xml create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/Checked.java create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingBottom.java create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingTop.java diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod.log b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod.log new file mode 100644 index 000000000000..beafde02710d --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod.log @@ -0,0 +1,12 @@ +Cleaning output files: +out/production/RemoveThrowsInBaseMethod/ThrowingTop.class +End of files +Compiling files: +src/ThrowingTop.java +End of files +Cleaning output files: +out/production/RemoveThrowsInBaseMethod/ThrowingBottom.class +End of files +Compiling files: +src/ThrowingBottom.java +End of files diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/ThrowingTop.java.new b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/ThrowingTop.java.new new file mode 100644 index 000000000000..45cfe09cc96c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/ThrowingTop.java.new @@ -0,0 +1,4 @@ +public class ThrowingTop { + public void spoil() { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/data.xml b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/data.xml new file mode 100644 index 000000000000..1703127221bb --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/data.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/Checked.java b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/Checked.java new file mode 100644 index 000000000000..53dc42b125db --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/Checked.java @@ -0,0 +1,2 @@ +public class Checked extends Exception { +} diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingBottom.java b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingBottom.java new file mode 100644 index 000000000000..ed28053e2d06 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingBottom.java @@ -0,0 +1,5 @@ +public class ThrowingBottom extends ThrowingTop{ + @Override + public void spoil() throws Checked { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingTop.java b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingTop.java new file mode 100644 index 000000000000..4982adab593c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/removeThrowsInBaseMethod/src/ThrowingTop.java @@ -0,0 +1,4 @@ +public class ThrowingTop { + public void spoil() throws Checked { + } +} diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java index 040bd77b6ea1..f2496ae52e18 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java @@ -1190,7 +1190,7 @@ public class Mappings { for (final Pair mr : changed) { final MethodRepr m = mr.first; final MethodRepr.Diff d = (MethodRepr.Diff)mr.second; - final boolean throwsChanged = (d.exceptions().added().size() > 0) || (d.exceptions().changed().size() > 0); + final boolean throwsChanged = !d.exceptions().unchanged(); debug("Method: ", m.name); diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java index 701aa6f8143d..3a3b5364e60b 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java @@ -176,6 +176,10 @@ public class MemberChangeTest extends IncrementalTestCase { doTest(); } + public void testRemoveThrowsInBaseMethod() { + doTest(); + } + public void testAddMethod() { doTest(); }