incremental compilation: ensure javac always resolves dependencies within same module against sources and not classes compiled on previous steps (IDEA-108215)

This commit is contained in:
Eugene Zhuravlev
2013-06-14 18:04:05 +04:00
parent e1ce52e3bf
commit 7cd43429a7
15 changed files with 109 additions and 13 deletions
@@ -0,0 +1,10 @@
Cleaning output files:
out/production/RecompileTwinDependencies/package1/A.class
End of files
Cleaning output files:
out/production/RecompileTwinDependencies/package1/C.class
End of files
Compiling files:
src/package2/A.java
src/package2/C.java
End of files
@@ -0,0 +1,10 @@
package com;
import package1.*;
import package2.*;
public class B {
public A get() { // resolves to "public package1.A get();" or "public package2.A get();" depending on where A is
return null;
}
}
@@ -0,0 +1,4 @@
package package1;
public class A { // resolves to "class package1.A"
}
@@ -0,0 +1,9 @@
package package1;
import com.B;
public class C {
{
new B().get(); // resolves to invoking of "com/B.get:()Lpackage1/A;"
}
}
@@ -0,0 +1,5 @@
package package1;
// Dummy class for non-empty package
public class Dummy {
}
@@ -0,0 +1,4 @@
package package2;
public class A { // resolves to "class package2.A"
}
@@ -0,0 +1,11 @@
package package2;
import com.B;
public class C {
{
new B().get(); // should be resolved to "com/B.get:()Lpackage2/A;"
// but package2/C.java is first compiled when B.class still contains "public package1.A get();"
// and compiler returns an error
}
}
@@ -0,0 +1,5 @@
package package2;
// Dummy class for non-empty package
public class Dummy {
}