From f7e78891bb0df6a6bddee8ee17009c0e2f40b412 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Mon, 22 Sep 2014 19:54:09 +0200 Subject: [PATCH] make rules fix: method overriding is not applicable to constructors --- .../membersChange/addParameterToConstructor.log | 12 ++++++++++++ .../addParameterToConstructor/src/Base.java | 6 ++++++ .../addParameterToConstructor/src/Client.java | 5 +++++ .../addParameterToConstructor/src/Derived.java | 2 ++ .../addParameterToConstructor/src/Derived.java.new | 4 ++++ .../jps/builders/java/dependencyView/Mappings.java | 6 ++++++ .../org/jetbrains/ether/MemberChangeTest.java | 4 ++++ 7 files changed, 39 insertions(+) create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor.log create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Base.java create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Client.java create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java create mode 100644 java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java.new diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor.log b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor.log new file mode 100644 index 000000000000..e5b59a10493a --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor.log @@ -0,0 +1,12 @@ +Cleaning output files: +out/production/AddParameterToConstructor/Derived.class +End of files +Compiling files: +src/Derived.java +End of files +Cleaning output files: +out/production/AddParameterToConstructor/Client.class +End of files +Compiling files: +src/Client.java +End of files diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Base.java b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Base.java new file mode 100644 index 000000000000..9262897bb0d3 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Base.java @@ -0,0 +1,6 @@ +public class Base { + public Base() { + } + public Base(int param) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Client.java b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Client.java new file mode 100644 index 000000000000..13e45591477f --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Client.java @@ -0,0 +1,5 @@ +public class Client { + public static void main(String[] args) { + Derived der = new Derived(); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java new file mode 100644 index 000000000000..41ae2febf063 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java @@ -0,0 +1,2 @@ +public class Derived extends Base { +} diff --git a/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java.new b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java.new new file mode 100644 index 000000000000..508e6f8dec90 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/membersChange/addParameterToConstructor/src/Derived.java.new @@ -0,0 +1,4 @@ +public class Derived extends Base { + public Derived(int ppp) { + } +} 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 3e3a4793cbb6..cfe3c555bff7 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 @@ -351,6 +351,9 @@ public class Mappings { } private void addOverridingMethods(final MethodRepr m, final ClassRepr fromClass, final MethodRepr.Predicate predicate, final Collection> container) { + if (m.name == myInitName) { + return; // overriding is not defined for constructors + } final TIntHashSet subClasses = myClassToSubclasses.get(fromClass.name); if (subClasses == null) { return; @@ -387,6 +390,9 @@ public class Mappings { } private Collection> findOverriddenMethods(final MethodRepr m, final ClassRepr c) { + if (m.name == myInitName) { + return Collections.emptySet(); // overriding is not defined for constructors + } final Collection> result = new HashSet>(); addOverridenMethods(c, MethodRepr.equalByJavaRules(m), result); return result; diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java index c1c1f81c3cca..90ecb820bbc6 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/MemberChangeTest.java @@ -116,6 +116,10 @@ public class MemberChangeTest extends IncrementalTestCase { doTest(); } + public void testAddParameterToConstructor() { + doTest(); + } + public void testDeleteInner() { doTest(); }