[Checkers] Comments on Prototype hierarchy
mernst at cs.washington.edu
Tue Jun 2 13:18:51 EDT 2009
> I played with the Prototype checker for a bit today.
> Here is my comment:
> 1. The type hierarchy could benefit from a bottom type. Actually,
> almost all qualifier hierarchies benefits from a bottom qualifier to
> handle null. In IGJ the bottom qualifier is packaged scope, so users
> cannot use it.
That sounds possibly reasonable. Should it be built into every checker by
default, including the basic checker? Should it have a standard name?
> I think it might be better for create a PrototypeChecker class that
> only has TypeQualifier fields (analogous to NullnessChecker) which
> utilizes a package scope qualifier for null.
When in particular does a programmer want to use the bottom qualifier?
I believe you, but some concrete examples would be useful.
> 2. I think that you might reconsider your default option. In your
> previous email about defaults you wanted the default to be
> NonPrototype, rather than the root qualifier PrototypeOrNot. I think
> that could cause a problem to flow, as we designed it to be type
> refinement rather than type inference. The following statement would
> be invalid:
> Invariant inv = new @Prototype Invariant(...);
> Because inv in defaults would be of type '@NonPrototype Invariant'
> which cannot be refined to '@Prototype Invariant'.
I see @Prototype as as aberration. Any use must be explicitly noted, even
in a method body. I am happy that
Invariant inv = new @Prototype Invariant(...);
is invalid. This should be written as
@Prototype Invariant inv = new @Prototype Invariant(...);
More information about the checkers