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

Reply via email to