[Checkers] Subtypes of Interned classes

Matt Papi mpapi at csail.mit.edu
Fri Mar 21 14:09:43 EDT 2008

It seems that r1989 (made a few hours ago) "fixed" the bug. That commit 
added a missing call to asSuperOf in SimpleSubtypeRelation.isSubtype (in 
the same way that IGJ's isSubtype uses it) as a fix for a completely 
different bug. In fact, I hadn't even tried reproducing the bug until I 
saw Mahmood's email.

So now, while the Interned checker still doesn't implicitly annotate the 
commonapi.NodeHandle, asSuperOf in isSubtype raises commonapi.NodeHandle 
to @Interned pastry.NodeHandle, so the override check now passes.

We should probably still talk about the annotation inheritance problem, 
but now it can definitely wait until after the release.

- Matt

Mahmood Ali wrote:
> Hi,
> I have been investigating the bug that Mike has reported about  
> Pastry.  I assume that they were about NodeHandle not being annotated  
> as Interned by default, hence getting a method override exception  
> (along with a lot of false warnings):
>      [javac] /Users/mahmood/pastry/src/rice/pastry/client/ 
> PastryAppl.java:372: getHint() in <anonymous  
> rice.pastry.client.PastryAppl$1> cannot override getHint() in  
> rice.p2p.commonapi.MessageReceipt; attempting to use an incompatible  
> return type
>      [javac] found   : rice.pastry.NodeHandle
>      [javac] required: @checkers.quals.Interned  
> rice.p2p.commonapi.NodeHandle
>      [javac]       public NodeHandle getHint() {
> It seems to me that the problem was due to InternedChecker not  
> assuming that the subtype of an interned is interned.
> There are two NodeHandle: rice.pastry.NodeHandle (which is not  
> annotated as Interned) and rice.p2p.common.api.NodeHandle. When the  
> take the base of rice.pastry.NodeHandle as  
> rice.p2p.common.api.NodeHandle we get one without the Interned.
> This comes back to the question of default annotations. I don't think  
> that I will be able to fix this in this release (unless it is a hack).
> - Mahmood
> _______________________________________________
> checkers mailing list
> checkers at lists.csail.mit.edu
> https://lists.csail.mit.edu/mailman/listinfo/checkers

More information about the checkers mailing list