diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected.log b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected.log new file mode 100644 index 000000000000..3278e003c037 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected.log @@ -0,0 +1,12 @@ +Cleaning output files: +out/production/ChangePackagePrivateToProtected/ppp/Service.class +End of files +Compiling files: +src/ppp/Service.java +End of files +Cleaning output files: +out/production/ChangePackagePrivateToProtected/qqq/DerivedService.class +End of files +Compiling files: +src/qqq/DerivedService.java +End of files \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/ppp/Service.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/ppp/Service.java new file mode 100644 index 000000000000..57d2ed39b993 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/ppp/Service.java @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + void method(String param, boolean flag) { + } + + void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/ppp/Service.java.new b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/ppp/Service.java.new new file mode 100644 index 000000000000..2bd43000cc0f --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/ppp/Service.java.new @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + protected void method(String param, boolean flag) { + } + + protected void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/Client.java new file mode 100644 index 000000000000..308c19c49d62 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/Client.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.Service; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/ClientDerived.java new file mode 100644 index 000000000000..db6f5a5409bd --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/ClientDerived.java @@ -0,0 +1,7 @@ +package qqq; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/DerivedService.java new file mode 100644 index 000000000000..80325d61488c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToProtected/src/qqq/DerivedService.java @@ -0,0 +1,14 @@ +package qqq; + +import ppp.Service; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic.log b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic.log new file mode 100644 index 000000000000..0c994c138365 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic.log @@ -0,0 +1,16 @@ +Cleaning output files: +out/production/ChangePackagePrivateToPublic/ppp/Service.class +End of files +Compiling files: +src/ppp/Service.java +End of files +Cleaning output files: +out/production/ChangePackagePrivateToPublic/qqq/Client.class +out/production/ChangePackagePrivateToPublic/qqq/ClientDerived.class +out/production/ChangePackagePrivateToPublic/qqq/DerivedService.class +End of files +Compiling files: +src/qqq/Client.java +src/qqq/ClientDerived.java +src/qqq/DerivedService.java +End of files \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/ppp/Service.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/ppp/Service.java new file mode 100644 index 000000000000..57d2ed39b993 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/ppp/Service.java @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + void method(String param, boolean flag) { + } + + void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/ppp/Service.java.new b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/ppp/Service.java.new new file mode 100644 index 000000000000..6d29f5345023 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/ppp/Service.java.new @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + public void method(String param, boolean flag) { + } + + public void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/Client.java new file mode 100644 index 000000000000..308c19c49d62 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/Client.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.Service; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/ClientDerived.java new file mode 100644 index 000000000000..db6f5a5409bd --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/ClientDerived.java @@ -0,0 +1,7 @@ +package qqq; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/DerivedService.java new file mode 100644 index 000000000000..80325d61488c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePackagePrivateToPublic/src/qqq/DerivedService.java @@ -0,0 +1,14 @@ +package qqq; + +import ppp.Service; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate.log b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate.log new file mode 100644 index 000000000000..605681e8ed60 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate.log @@ -0,0 +1,16 @@ +Cleaning output files: +out/production/ChangePrivateToPackagePrivate/ppp/Service.class +End of files +Compiling files: +src/ppp/Service.java +End of files +Cleaning output files: +out/production/ChangePrivateToPackagePrivate/ppp/Client.class +out/production/ChangePrivateToPackagePrivate/ppp/ClientDerived.class +out/production/ChangePrivateToPackagePrivate/ppp/DerivedService.class +End of files +Compiling files: +src/ppp/Client.java +src/ppp/ClientDerived.java +src/ppp/DerivedService.java +End of files \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Client.java new file mode 100644 index 000000000000..56434b18e0aa --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Client.java @@ -0,0 +1,7 @@ +package ppp; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/ClientDerived.java new file mode 100644 index 000000000000..fa0e18193b9f --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/ClientDerived.java @@ -0,0 +1,7 @@ +package ppp; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/DerivedService.java new file mode 100644 index 000000000000..a7fde1d4edc0 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/DerivedService.java @@ -0,0 +1,12 @@ +package ppp; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Service.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Service.java new file mode 100644 index 000000000000..ed896952ac6a --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Service.java @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + private void method(String param, boolean flag) { + } + + private void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Service.java.new b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Service.java.new new file mode 100644 index 000000000000..57d2ed39b993 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/ppp/Service.java.new @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + void method(String param, boolean flag) { + } + + void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/Client.java new file mode 100644 index 000000000000..308c19c49d62 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/Client.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.Service; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/ClientDerived.java new file mode 100644 index 000000000000..247405f2b66d --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/ClientDerived.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.DerivedService; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/DerivedService.java new file mode 100644 index 000000000000..80325d61488c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPackagePrivate/src/qqq/DerivedService.java @@ -0,0 +1,14 @@ +package qqq; + +import ppp.Service; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected.log b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected.log new file mode 100644 index 000000000000..d2677e96aec0 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected.log @@ -0,0 +1,18 @@ +Cleaning output files: +out/production/ChangePrivateToProtected/ppp/Service.class +End of files +Compiling files: +src/ppp/Service.java +End of files +Cleaning output files: +out/production/ChangePrivateToProtected/ppp/Client.class +out/production/ChangePrivateToProtected/ppp/ClientDerived.class +out/production/ChangePrivateToProtected/ppp/DerivedService.class +out/production/ChangePrivateToProtected/qqq/DerivedService.class +End of files +Compiling files: +src/ppp/Client.java +src/ppp/ClientDerived.java +src/ppp/DerivedService.java +src/qqq/DerivedService.java +End of files \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Client.java new file mode 100644 index 000000000000..56434b18e0aa --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Client.java @@ -0,0 +1,7 @@ +package ppp; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/ClientDerived.java new file mode 100644 index 000000000000..fa0e18193b9f --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/ClientDerived.java @@ -0,0 +1,7 @@ +package ppp; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/DerivedService.java new file mode 100644 index 000000000000..a7fde1d4edc0 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/DerivedService.java @@ -0,0 +1,12 @@ +package ppp; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Service.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Service.java new file mode 100644 index 000000000000..ed896952ac6a --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Service.java @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + private void method(String param, boolean flag) { + } + + private void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Service.java.new b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Service.java.new new file mode 100644 index 000000000000..2bd43000cc0f --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/ppp/Service.java.new @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + protected void method(String param, boolean flag) { + } + + protected void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/Client.java new file mode 100644 index 000000000000..308c19c49d62 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/Client.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.Service; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/ClientDerived.java new file mode 100644 index 000000000000..247405f2b66d --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/ClientDerived.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.DerivedService; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/DerivedService.java new file mode 100644 index 000000000000..80325d61488c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToProtected/src/qqq/DerivedService.java @@ -0,0 +1,14 @@ +package qqq; + +import ppp.Service; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic.log b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic.log new file mode 100644 index 000000000000..609308ffd341 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic.log @@ -0,0 +1,22 @@ +Cleaning output files: +out/production/ChangePrivateToPublic/ppp/Service.class +End of files +Compiling files: +src/ppp/Service.java +End of files +Cleaning output files: +out/production/ChangePrivateToPublic/ppp/Client.class +out/production/ChangePrivateToPublic/ppp/ClientDerived.class +out/production/ChangePrivateToPublic/ppp/DerivedService.class +out/production/ChangePrivateToPublic/qqq/Client.class +out/production/ChangePrivateToPublic/qqq/ClientDerived.class +out/production/ChangePrivateToPublic/qqq/DerivedService.class +End of files +Compiling files: +src/ppp/Client.java +src/ppp/ClientDerived.java +src/ppp/DerivedService.java +src/qqq/Client.java +src/qqq/ClientDerived.java +src/qqq/DerivedService.java +End of files \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Client.java new file mode 100644 index 000000000000..56434b18e0aa --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Client.java @@ -0,0 +1,7 @@ +package ppp; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/ClientDerived.java new file mode 100644 index 000000000000..fa0e18193b9f --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/ClientDerived.java @@ -0,0 +1,7 @@ +package ppp; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/DerivedService.java new file mode 100644 index 000000000000..a7fde1d4edc0 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/DerivedService.java @@ -0,0 +1,12 @@ +package ppp; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Service.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Service.java new file mode 100644 index 000000000000..ed896952ac6a --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Service.java @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + private void method(String param, boolean flag) { + } + + private void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Service.java.new b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Service.java.new new file mode 100644 index 000000000000..6d29f5345023 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/ppp/Service.java.new @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + public void method(String param, boolean flag) { + } + + public void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/Client.java new file mode 100644 index 000000000000..308c19c49d62 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/Client.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.Service; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/ClientDerived.java new file mode 100644 index 000000000000..247405f2b66d --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/ClientDerived.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.DerivedService; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/DerivedService.java new file mode 100644 index 000000000000..80325d61488c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changePrivateToPublic/src/qqq/DerivedService.java @@ -0,0 +1,14 @@ +package qqq; + +import ppp.Service; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } + + public void compute() { + method(null, true); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic.log b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic.log new file mode 100644 index 000000000000..8f601385461a --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic.log @@ -0,0 +1,16 @@ +Cleaning output files: +out/production/ChangeProtectedToPublic/ppp/Service.class +End of files +Compiling files: +src/ppp/Service.java +End of files +Cleaning output files: +out/production/ChangeProtectedToPublic/qqq/Client.class +out/production/ChangeProtectedToPublic/qqq/ClientDerived.class +out/production/ChangeProtectedToPublic/qqq/DerivedService.class +End of files +Compiling files: +src/qqq/Client.java +src/qqq/ClientDerived.java +src/qqq/DerivedService.java +End of files \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/ppp/Service.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/ppp/Service.java new file mode 100644 index 000000000000..2bd43000cc0f --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/ppp/Service.java @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + protected void method(String param, boolean flag) { + } + + protected void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/ppp/Service.java.new b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/ppp/Service.java.new new file mode 100644 index 000000000000..6d29f5345023 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/ppp/Service.java.new @@ -0,0 +1,13 @@ +package ppp; + +public class Service { + + public void method(String param, boolean flag) { + } + + public void method2(String param, boolean flag) { + } + + public void method(Integer param, boolean flag) { + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/Client.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/Client.java new file mode 100644 index 000000000000..308c19c49d62 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/Client.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.Service; + +public class Client { + public void perform(Service service) { + service.method(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/ClientDerived.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/ClientDerived.java new file mode 100644 index 000000000000..db6f5a5409bd --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/ClientDerived.java @@ -0,0 +1,7 @@ +package qqq; + +public class ClientDerived { + public void perform(DerivedService service) { + service.method2(null, true); + } +} diff --git a/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/DerivedService.java b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/DerivedService.java new file mode 100644 index 000000000000..935133485ad4 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/methodModifiers/changeProtectedToPublic/src/qqq/DerivedService.java @@ -0,0 +1,9 @@ +package qqq; + +import ppp.Service; + +public class DerivedService extends Service{ + + public void method2(Long param, boolean flag) { + } +} \ No newline at end of file diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Difference.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Difference.java index 5a7e474f47e4..0bb884c46fdb 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Difference.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Difference.java @@ -12,12 +12,22 @@ import java.util.*; public abstract class Difference { public static boolean weakerAccess(final int me, final int than) { - return ((me & Opcodes.ACC_PRIVATE) > 0 && (than & Opcodes.ACC_PRIVATE) == 0) || - ((me & Opcodes.ACC_PROTECTED) > 0 && (than & Opcodes.ACC_PUBLIC) > 0) || - (isPackageLocal(me) && (than & (Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC)) > 0); + return (isPrivate(me) && !isPrivate(than)) || (isProtected(me) && isPublic(than)) || (isPackageLocal(me) && (than & (Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC)) != 0); } - private static boolean isPackageLocal(final int access) { + public static boolean isPrivate(int access) { + return (access & Opcodes.ACC_PRIVATE) != 0; + } + + public static boolean isPublic(int access) { + return (access & Opcodes.ACC_PUBLIC) != 0; + } + + public static boolean isProtected(int access) { + return (access & Opcodes.ACC_PROTECTED) != 0; + } + + public static boolean isPackageLocal(final int access) { return (access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC)) == 0; } @@ -162,6 +172,8 @@ public abstract class Difference { public abstract boolean accessRestricted(); + public abstract boolean accessExpanded(); + public abstract int addedModifiers(); public abstract int removedModifiers(); diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/DifferenceImpl.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/DifferenceImpl.java index cabb4356f26f..92ba45899f56 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/DifferenceImpl.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/DifferenceImpl.java @@ -29,6 +29,11 @@ class DifferenceImpl extends Difference{ return myDelegate.accessRestricted(); } + @Override + public boolean accessExpanded() { + return myDelegate.accessExpanded(); + } + @Override public int addedModifiers() { return myDelegate.addedModifiers(); 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 dedfe0c05241..733c910aa7ee 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 @@ -30,6 +30,7 @@ import java.io.PrintStream; import java.lang.annotation.RetentionPolicy; import java.util.*; import java.util.concurrent.LinkedBlockingQueue; +import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; @@ -572,9 +573,25 @@ public final class Mappings { } private Iterable allMethodsRecursively(ClassRepr cls) { - return Iterators.flat(cls.getMethods(), Iterators.flat(Iterators.map(cls.getSuperTypes(), st -> { + return Iterators.flat(collectRecursively(cls, c-> c.getMethods())); + } + + private Iterable findAllOverloads(final ClassRepr cls, Function correspondenceFinder) { + Function> converter = c -> c == null? Collections.emptyList() : Iterators.filter(Iterators.map(c.getMethods(), m -> { + Integer accessScope = correspondenceFinder.apply(m); + return accessScope != null? new OverloadDescriptor(accessScope, m, c) : null; + }), Objects::nonNull); + + return Iterators.flat(Iterators.flat( + collectRecursively(cls, converter), + Iterators.map(getAllSubclasses(cls.name), subName -> converter.apply(subName != cls.name? classReprByName(subName) : null)) + )); + } + + private Iterable collectRecursively(ClassRepr cls, Function mapper) { + return Iterators.flat(Iterators.asIterable(mapper.apply(cls)), Iterators.flat(Iterators.map(cls.getSuperTypes(), st -> { final ClassRepr cr = classReprByName(st.className); - return cr != null ? allMethodsRecursively(cr) : Collections.emptyList(); + return cr != null ? collectRecursively(cr, mapper) : Collections.emptyList(); }))); } @@ -886,7 +903,8 @@ public final class Mappings { @Override public boolean checkResidence(final int residence) { - return !ClassRepr.getPackageName(myContext.getValue(residence)).equals(packageName); + final String className = myContext.getValue(residence); + return className == null || !ClassRepr.getPackageName(className).equals(packageName); } } @@ -1434,6 +1452,8 @@ public final class Mappings { } } + final List> moreAccessible = new ArrayList<>(); + for (final Pair mr : changed) { final MethodRepr m = mr.first; final MethodRepr.Diff d = mr.second; @@ -1441,6 +1461,10 @@ public final class Mappings { debug("Method: ", m.name); + if (d.accessExpanded()) { + moreAccessible.add(mr); + } + if (it.isAnnotation()) { if (d.defaultRemoved()) { debug("Class is annotation, default value is removed => adding annotation query"); @@ -1530,9 +1554,7 @@ public final class Mappings { } } else { - if ((d.addedModifiers() & Opcodes.ACC_FINAL) != 0 || - (d.addedModifiers() & Opcodes.ACC_PUBLIC) != 0 || - (d.addedModifiers() & Opcodes.ACC_ABSTRACT) != 0) { + if ((d.addedModifiers() & (Opcodes.ACC_FINAL | Opcodes.ACC_PUBLIC | Opcodes.ACC_ABSTRACT)) != 0) { debug("Added final, public or abstract specifier --- affecting subclasses"); myFuture.affectSubclasses(it.name, myAffectedFiles, state.myAffectedUsages, state.myDependants, false, myCompiledFiles, null); if (it.isInterface() && (d.addedModifiers() & Opcodes.ACC_ABSTRACT) != 0) { @@ -1591,6 +1613,41 @@ public final class Mappings { } } } + + if (!moreAccessible.isEmpty()) { + final Iterable allOverloads = myFuture.findAllOverloads(it, mr -> { + Integer result = null; + for (Pair pair : moreAccessible) { + MethodRepr m = pair.first; + MethodRepr.Diff d = pair.second; + if (mr.name == m.name && !m.equals(mr)) { + int newAccess = m.access & (~d.removedModifiers()) | d.addedModifiers(); + if (result == null || Difference.weakerAccess(result, newAccess)) { + result = newAccess; + } + } + } + return result; + }); + for (OverloadDescriptor descr : allOverloads) { + + debug("Method became more accessible --- affect usages of overloading methods: ", descr.overloadMethod.name); + + final Set overloadsUsages = new HashSet<>(); + myFuture.affectMethodUsages( + descr.overloadMethod, myFuture.propagateMethodAccess(descr.overloadMethod, descr.overloadMethodOwner.name), descr.overloadMethod.createUsage(myContext, descr.overloadMethodOwner.name), overloadsUsages, state.myDependants + ); + state.myAffectedUsages.addAll(overloadsUsages); + final UsageConstraint constr = Difference.isPackageLocal(descr.accessScope)? myFuture.new PackageConstraint(it.getPackageName()).negate() : + Difference.isProtected(descr.accessScope)? myFuture.new InheritanceConstraint(it).negate() : null; + if (constr != null) { + for (final UsageRepr.Usage usage : overloadsUsages) { + state.myUsageConstraints.put(usage, constr); + } + } + } + } + debug("End of changed methods processing"); } @@ -1739,11 +1796,9 @@ public final class Mappings { if (!field.isPrivate() && (field.access & INLINABLE_FIELD_MODIFIERS_MASK) == INLINABLE_FIELD_MODIFIERS_MASK && d.hadValue()) { final int changedModifiers = d.addedModifiers() | d.removedModifiers(); final boolean harmful = (changedModifiers & (Opcodes.ACC_STATIC | Opcodes.ACC_FINAL)) != 0; - final boolean accessChanged = (changedModifiers & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED)) != 0; - final boolean becameLessAccessible = accessChanged && d.accessRestricted(); final boolean valueChanged = (d.base() & Difference.VALUE) != 0; - if (harmful || valueChanged || becameLessAccessible) { + if (harmful || valueChanged || d.accessRestricted()) { if (myProcessConstantsIncrementally) { debug("Potentially inlined field changed its access or value => affecting field usages and static member import usages"); myFuture.affectFieldUsages(field, propagated.get(), field.createUsage(myContext, it.name), state.myAffectedUsages, state.myDependants); @@ -3055,6 +3110,18 @@ public final class Mappings { return myChangedFiles; } + private static class OverloadDescriptor { + final int accessScope; + final MethodRepr overloadMethod; + final ClassRepr overloadMethodOwner; + + OverloadDescriptor(int accessScope, MethodRepr overloadMethod, ClassRepr overloadMethodOwner) { + this.accessScope = accessScope; + this.overloadMethod = overloadMethod; + this.overloadMethodOwner = overloadMethodOwner; + } + } + private static void debug(final String s) { LOG.debug(s); } diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Proto.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Proto.java index a6dbfbffb480..a5d7f37556fb 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Proto.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Proto.java @@ -156,7 +156,7 @@ class Proto implements RW.Savable, Streamable, ProtoEntity { @Override public boolean packageLocalOn() { - return (past.isPrivate() || past.isPublic() || past.isProtected()) && Proto.this.isPackageLocal(); + return !past.isPackageLocal() && Proto.this.isPackageLocal(); } @Override @@ -169,6 +169,11 @@ class Proto implements RW.Savable, Streamable, ProtoEntity { return Difference.weakerAccess(access, past.access); } + @Override + public boolean accessExpanded() { + return Difference.weakerAccess(past.access, access); + } + @Override public Specifier annotations() { return ann; diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/MethodModifierTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/MethodModifierTest.java index d268ea77f9a0..a1da6d0b7051 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/MethodModifierTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/MethodModifierTest.java @@ -31,6 +31,30 @@ public class MethodModifierTest extends IncrementalTestCase { doTest(); } + public void testChangePrivateToPackagePrivate() { + doTest().assertFailed(); + } + + public void testChangePrivateToProtected() { + doTest().assertFailed(); + } + + public void testChangePrivateToPublic() { + doTest().assertFailed(); + } + + public void testChangePackagePrivateToProtected() { + doTest().assertFailed(); + } + + public void testChangePackagePrivateToPublic() { + doTest().assertFailed(); + } + + public void testChangeProtectedToPublic() { + doTest().assertFailed(); + } + public void testSetAbstract() { doTest(); }