I would have thought that the IDEA dependency checker would prioritize the set of classes based on the dependency. If an interface to a class changes, then all classes that implement the interface should be recompiled before classes that extend those classes.
I don't see why IDEA would invoke the compiler on the concrete class until after it had recompiled ALL classes that implement Foo? Perhaps I don't understand? Shouldn't intellij's dependency checker be run first? Or perhaps it works off the byte-code. In which case, until the class has byte-code generated for it, you can't do the dependency checking. I was thinking of a source-level dependency hierarchy, not one based on the byte code.. Mike On 27 Mar 2002 at 19:45, Eugene Zhuravlev wrote: > Hi Jonas, > > Yes, this is a known issue. The problem is that in this particular > case the dependency is checked by the javac. IDEA's dependency checker > is not even started because of the errors reported by javac. Currently > we have no ideas how to solve this problem efficiently. But IMHO this > problems is a minor one - anyway you get some errors reported instead > of silently "compiling" and reporting that everything is ok. > > Best regards, > Eugene Zhuravlev > JetBrains, Inc / IntelliJ Software, http://www.intellij.com/ > "Develop with pleasure!" > > > ----- Original Message ----- > From: "Jonas Kvarnstr�m" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Wednesday, March 27, 2002 17:26 > Subject: [Eap-list] Bug in dependency checker (or compiler?) (#611) > > > > Consider the following classes and interfaces: > > > > public interface Foo { > > public void method(); > > } > > public abstract class AbstractFoo implements Foo { } > > public class SomeFoo extends AbstractFoo { > > public void method() {} > > } > > > > Compile this. Then change SomeFoo: > > > > public class SomeFoo extends AbstractFoo { > > public void method() throws Exception {} > > } > > > > You'll get a compiler error since Foo.method() doesn't throw > > Exception. > > Change Foo: > > > > public interface Foo { > > public void method() throws Exception; > > } > > > > Information about the abstract methods inherited from Foo is > > apparently stored in AbstractFoo, so AbstractFoo now needs to be > > recompiled -- but IDEA doesn't realize this so ctrl-f9 will just > > give you the same compiler error again and again until you rebuild > > the entire project or realize there's an abstract intermediate class > > and recompile it manually. > > > > > > > > _______________________________________________ > > Eap-list mailing list > > [EMAIL PROTECTED] > > http://www.intellij.com/mailman/listinfo/eap-list > > > _______________________________________________ > Eap-list mailing list > [EMAIL PROTECTED] > http://www.intellij.com/mailman/listinfo/eap-list > --- [EMAIL PROTECTED] To obtain my PGP public key, mail "SEND PUB KEY" in the subject to "[EMAIL PROTECTED]" _______________________________________________ Eap-list mailing list [EMAIL PROTECTED] http://www.intellij.com/mailman/listinfo/eap-list
