mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Overriden methods supported in a conservative manner (compile server).
This commit is contained in:
+2
@@ -5,8 +5,10 @@ Compiling files:
|
||||
src/Base.java
|
||||
End of files
|
||||
Cleaning output files:
|
||||
out/production/DeleteMethodImplementation4/BaseImpl.class
|
||||
out/production/DeleteMethodImplementation4/BaseImplImpl.class
|
||||
End of files
|
||||
Compiling files:
|
||||
src/BaseImpl.java
|
||||
src/BaseImplImpl.java
|
||||
End of files
|
||||
|
||||
+6
@@ -4,3 +4,9 @@ End of files
|
||||
Compiling files:
|
||||
src/Base.java
|
||||
End of files
|
||||
Cleaning output files:
|
||||
out/production/DeleteMethodImplementation5/BaseImpl.class
|
||||
End of files
|
||||
Compiling files:
|
||||
src/BaseImpl.java
|
||||
End of files
|
||||
|
||||
+6
@@ -4,3 +4,9 @@ End of files
|
||||
Compiling files:
|
||||
src/BaseImpl.java
|
||||
End of files
|
||||
Cleaning output files:
|
||||
out/production/DeleteMethodImplementation6/BaseImplImpl.class
|
||||
End of files
|
||||
Compiling files:
|
||||
src/BaseImplImpl.java
|
||||
End of files
|
||||
|
||||
@@ -72,7 +72,7 @@ public class GenericTest extends IncrementalTestCase {
|
||||
public void testChangeToCovariantMethodInBase3() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
*/
|
||||
public void testChangeVarargSignature() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
@@ -80,7 +80,6 @@ public class GenericTest extends IncrementalTestCase {
|
||||
public void testChangeVarargSignature1() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
*/
|
||||
|
||||
public void testCovariance() throws Exception {
|
||||
doTest();
|
||||
@@ -114,7 +113,7 @@ public class GenericTest extends IncrementalTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
/* Not working yet
|
||||
/* Not working yet */
|
||||
public void testOverrideAnnotatedAnonymousNotRecompile() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
@@ -122,7 +121,6 @@ public class GenericTest extends IncrementalTestCase {
|
||||
public void testOverrideAnnotatedInner() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
*/
|
||||
|
||||
public void testParamTypes() throws Exception {
|
||||
doTest();
|
||||
|
||||
@@ -177,7 +177,7 @@ public abstract class IncrementalTestCase extends TestCase {
|
||||
finally {
|
||||
try {
|
||||
closeAppender();
|
||||
delete(new File(workDir));
|
||||
//delete(new File(workDir));
|
||||
}
|
||||
finally {
|
||||
Logger.setFactory(oldFactory);
|
||||
|
||||
@@ -116,11 +116,9 @@ public class MemberChangeTest extends IncrementalTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
/* Not working yet
|
||||
public void testDeleteMethodImplementation4() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
*/
|
||||
|
||||
public void testDeleteMethodImplementation5() throws Exception {
|
||||
doTest();
|
||||
|
||||
@@ -1103,47 +1103,55 @@ public class Mappings {
|
||||
}
|
||||
|
||||
if ((m.access & Opcodes.ACC_ABSTRACT) == 0) {
|
||||
final Collection<Pair<MethodRepr, ClassRepr>> overriding = u.findOverridingMethods(m, it, false);
|
||||
|
||||
for (final Pair<MethodRepr, ClassRepr> p : overriding) {
|
||||
final DependencyContext.S fName = myClassToSourceFile.get(p.second.name);
|
||||
affectedFiles.add(new File(myContext.getValue(fName)));
|
||||
}
|
||||
|
||||
for (DependencyContext.S p : propagated) {
|
||||
final ClassRepr s = u.reprByName(p);
|
||||
if (!p.equals(it.name)) {
|
||||
final ClassRepr s = u.reprByName(p);
|
||||
|
||||
if (s != null) {
|
||||
final Collection<Pair<MethodRepr, ClassRepr>> overridenInS = u.findOverridenMethods(m, s);
|
||||
if (s != null) {
|
||||
final Collection<Pair<MethodRepr, ClassRepr>> overridenInS = u.findOverridenMethods(m, s);
|
||||
|
||||
overridenInS.addAll(overridenMethods);
|
||||
overridenInS.addAll(overridenMethods);
|
||||
|
||||
boolean allAbstract = true;
|
||||
boolean visited = false;
|
||||
boolean allAbstract = true;
|
||||
boolean visited = false;
|
||||
|
||||
for (Pair<MethodRepr, ClassRepr> pp : overridenInS) {
|
||||
final ClassRepr cc = pp.second;
|
||||
for (Pair<MethodRepr, ClassRepr> pp : overridenInS) {
|
||||
final ClassRepr cc = pp.second;
|
||||
|
||||
if (cc == myMockClass) {
|
||||
visited = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (cc.name.equals(it.name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (cc == myMockClass) {
|
||||
visited = true;
|
||||
continue;
|
||||
allAbstract = ((pp.first.access & Opcodes.ACC_ABSTRACT) > 0) || ((cc.access & Opcodes.ACC_INTERFACE) > 0);
|
||||
|
||||
if (!allAbstract) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (cc.name.equals(it.name)) {
|
||||
continue;
|
||||
}
|
||||
if (allAbstract && visited) {
|
||||
final DependencyContext.S source = myClassToSourceFile.get(p);
|
||||
|
||||
visited = true;
|
||||
allAbstract = ((pp.first.access & Opcodes.ACC_ABSTRACT) > 0) || ((cc.access & Opcodes.ACC_INTERFACE) > 0);
|
||||
|
||||
if (!allAbstract) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (allAbstract && visited) {
|
||||
final DependencyContext.S source = myClassToSourceFile.get(p);
|
||||
|
||||
if (source != null) {
|
||||
final String f = myContext.getValue(source);
|
||||
debug(
|
||||
"Removed method is not abstract & is overrides some abstract method which is not then over-overriden in subclass ",
|
||||
p);
|
||||
debug("Affecting subclass source file ", f);
|
||||
affectedFiles.add(new File(f));
|
||||
if (source != null) {
|
||||
final String f = myContext.getValue(source);
|
||||
debug("Removed method is not abstract & overrides some abstract method which is not then over-overriden in subclass ",
|
||||
p);
|
||||
debug("Affecting subclass source file ", f);
|
||||
affectedFiles.add(new File(f));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1597,19 +1605,19 @@ public class Mappings {
|
||||
for (DependencyContext.S f : delta.getChangedFiles()) {
|
||||
mySourceFileToClasses.remove(f);
|
||||
final Collection<ClassRepr> classes = delta.mySourceFileToClasses.get(f);
|
||||
if (classes != null){
|
||||
if (classes != null) {
|
||||
mySourceFileToClasses.put(f, classes);
|
||||
}
|
||||
|
||||
mySourceFileToUsages.remove(f);
|
||||
final Collection<UsageRepr.Cluster> clusters = delta.mySourceFileToUsages.get(f);
|
||||
if (clusters != null){
|
||||
if (clusters != null) {
|
||||
mySourceFileToUsages.put(f, clusters);
|
||||
}
|
||||
|
||||
mySourceFileToAnnotationUsages.remove(f);
|
||||
final Collection<UsageRepr.Usage> usages = delta.mySourceFileToAnnotationUsages.get(f);
|
||||
if (usages != null){
|
||||
if (usages != null) {
|
||||
mySourceFileToAnnotationUsages.put(f, usages);
|
||||
}
|
||||
}
|
||||
@@ -1637,7 +1645,7 @@ public class Mappings {
|
||||
|
||||
depClasses.retainAll(changedClasses);
|
||||
|
||||
if (! classChanged && depClasses.isEmpty()) {
|
||||
if (!classChanged && depClasses.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user