|Title||CHECKL is used where CHECKD_NOSIG would give more control|
|Assigned user||Richard Brooksby|
|Description||MPS check methods often do CHECKL(FooCheck(foo)) because FooStruct doesn't have a sig. In this case they ought to be using CHECKD_NOSIG(Foo, foo).|
|Analysis||Global replace and clean-up.|
Consider defining a macro along with FooStruct so that the call-sites don't have to know.
Also consider whether something similar is needed for AVERT.
|Evidence||"Review of mps/branch/2014-02-22/splay-tune" <|
|Created by||Richard Brooksby|
|Created on||2014-03-11 12:52:29|
|Last modified by||Gareth Rees|
|Last modified on||2014-04-06 22:51:21|
|History||2014-03-11 RB Created.|
|185263||closed||2014-04-06 22:51:05||Gareth Rees||Improve control over checking:
1. Where Type is a pointer type with a signature, replace CHECKL(TypeCheck(val)) with CHECKD(Type, val).
2. Where Type is a pointer type with no signature, replace CHECKL(TypeCheck(val)) with CHECKD_NOSIG(Type, val).
3. Where Type is a pointer type with a signature, but the structure is not visible at point of checking, replace CHECKL(TypeCheck(val)) with CHECKD_NOSIG(Type, val). Reference <design/check/#.hidden-type>
4. Make BTCheck extern and use it where possible.
5. Replace AVER(TypeCheck(val)) with AVERT(Type, val).