- ASSERT fault?

From: CFB Software <"CFB>
Date: Mon, 12 Jun 2006 10:29:28 +0930

----boundary-LibPST-iamunique-1343191860_-_-
Content-type: text/plain

> -----Original Message-----
> From: blackbox{([at]})nowhere.xy
> Behalf Of Marco Ciot
> Sent: Sunday, 11 June 2006 6:27 PM
> To: BlackBox Mailing List
> Subject: [BlackBox] - ASSERT fault?
>
>
> It would be inconvenient if ASSERT(FALSE) wouldn't raise an
> error at compile
> time already.
>
> I often place ASSERT statements like:
>
> ASSERT(LEN(array) >= maxItemCnt);
>

OK, thanks - I see the benefit of that. The earlier a problem is
detected the easier it is to fix. However, that only applies in a
limited number of situations - i.e. when the expression can be evaluated
at compile-time.

> And of course I want the compiler to let me know immediately that the
> assertion fails.
>

Note that, with reference to your example above, the compiler can only
let you know *immediately* if 'array' has been declared with static
dimensions. If 'array' is declared as a POINTER to AnArray, or 'array'
is an open-array parameter then the expression cannot be evaluated until
runtime.

> The intention of using ASSERT is never to HALT, but to assert
> a condition
> for the subsequent program code. In other words: if a program
> is correct no
> ASSERT in it will ever fail (and neither will any type
> guard). This is why
> it is possible to drop the time consuming checks with a
> compiler option.
>
> The conclusion is that if you place debugging statements in
> the code to
> cause halts you should always use HALT and not ASSERT.
> E.g.:
> IF a = 10 THEN HALT(99) END;
> and not:
> ASSERT(a # 10, 99);
>

Your conclusion is not one that I would agree with. It also does not
seem to be supported by the Oms documentation relating to the
recommended use of assertions.

Regards,
Chris

Chris Burrows
CFB Software
http://www.cfbsoftware.com/gpcp
 

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-1343191860_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS1c
cGFyDQo+IEZyb206IGJsYWNrYm94QG9iZXJvbi5jaCBbbWFpbHRvOmJsYWNrYm94QG9iZXJvbi5j
aF0gT24gXHBhcg0KPiBCZWhhbGYgT2YgTWFyY28gQ2lvdFxwYXINCj4gU2VudDogU3VuZGF5LCAx
MSBKdW5lIDIwMDYgNjoyNyBQTVxwYXINCj4gVG86IEJsYWNrQm94IE1haWxpbmcgTGlzdFxwYXIN
Cj4gU3ViamVjdDogW0JsYWNrQm94XSAtIEFTU0VSVCBmYXVsdD9ccGFyDQo+IFxwYXINCj4gXHBh
cg0KPiBJdCB3b3VsZCBiZSBpbmNvbnZlbmllbnQgaWYgQVNTRVJUKEZBTFNFKSB3b3VsZG4ndCBy
YWlzZSBhbiBccGFyDQo+IGVycm9yIGF0IGNvbXBpbGVccGFyDQo+IHRpbWUgYWxyZWFkeS5ccGFy
DQo+IFxwYXINCj4gSSBvZnRlbiBwbGFjZSBBU1NFUlQgc3RhdGVtZW50cyBsaWtlOlxwYXINCj4g
XHBhcg0KPiBBU1NFUlQoTEVOKGFycmF5KSA+PSBtYXhJdGVtQ250KTtccGFyDQo+IFxwYXINClxw
YXINCk9LLCB0aGFua3MgLSBJIHNlZSB0aGUgYmVuZWZpdCBvZiB0aGF0LiAgVGhlIGVhcmxpZXIg
YSBwcm9ibGVtIGlzXHBhcg0KZGV0ZWN0ZWQgdGhlIGVhc2llciBpdCBpcyB0byBmaXguIEhvd2V2
ZXIsIHRoYXQgb25seSBhcHBsaWVzIGluIGFccGFyDQpsaW1pdGVkIG51bWJlciBvZiBzaXR1YXRp
b25zIC0gaS5lLiB3aGVuIHRoZSBleHByZXNzaW9uIGNhbiBiZSBldmFsdWF0ZWRccGFyDQphdCBj
b21waWxlLXRpbWUuIFxwYXINClxwYXINCj4gQW5kIG9mIGNvdXJzZSBJIHdhbnQgdGhlIGNvbXBp
bGVyIHRvIGxldCBtZSBrbm93IGltbWVkaWF0ZWx5IHRoYXQgdGhlXHBhcg0KPiBhc3NlcnRpb24g
ZmFpbHMuXHBhcg0KPiBccGFyDQpccGFyDQpOb3RlIHRoYXQsIHdpdGggcmVmZXJlbmNlIHRvIHlv
dXIgZXhhbXBsZSBhYm92ZSwgdGhlIGNvbXBpbGVyIGNhbiBvbmx5XHBhcg0KbGV0IHlvdSBrbm93
ICppbW1lZGlhdGVseSogaWYgJ2FycmF5JyBoYXMgYmVlbiBkZWNsYXJlZCB3aXRoIHN0YXRpY1xw
YXINCmRpbWVuc2lvbnMuIElmICdhcnJheScgaXMgZGVjbGFyZWQgYXMgYSBQT0lOVEVSIHRvIEFu
QXJyYXksIG9yICdhcnJheSdccGFyDQppcyBhbiBvcGVuLWFycmF5IHBhcmFtZXRlciB0aGVuIHRo
ZSBleHByZXNzaW9uIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWxccGFyDQpydW50aW1lLiBccGFy
DQpccGFyDQo+IFRoZSBpbnRlbnRpb24gb2YgdXNpbmcgQVNTRVJUIGlzIG5ldmVyIHRvIEhBTFQs
IGJ1dCB0byBhc3NlcnQgXHBhcg0KPiBhIGNvbmRpdGlvblxwYXINCj4gZm9yIHRoZSBzdWJzZXF1
ZW50IHByb2dyYW0gY29kZS4gSW4gb3RoZXIgd29yZHM6IGlmIGEgcHJvZ3JhbSBccGFyDQo+IGlz
IGNvcnJlY3Qgbm9ccGFyDQo+IEFTU0VSVCBpbiBpdCB3aWxsIGV2ZXIgZmFpbCAoYW5kIG5laXRo
ZXIgd2lsbCBhbnkgdHlwZSBccGFyDQo+IGd1YXJkKS4gVGhpcyBpcyB3aHlccGFyDQo+IGl0IGlz
IHBvc3NpYmxlIHRvIGRyb3AgdGhlIHRpbWUgY29uc3VtaW5nIGNoZWNrcyB3aXRoIGEgXHBhcg0K
PiBjb21waWxlciBvcHRpb24uXHBhcg0KPiBccGFyDQo+IFRoZSBjb25jbHVzaW9uIGlzIHRoYXQg
aWYgeW91IHBsYWNlIGRlYnVnZ2luZyBzdGF0ZW1lbnRzIGluIFxwYXINCj4gdGhlIGNvZGUgdG9c
cGFyDQo+IGNhdXNlIGhhbHRzIHlvdSBzaG91bGQgYWx3YXlzIHVzZSBIQUxUIGFuZCBub3QgQVNT
RVJULlxwYXINCj4gRS5nLjpccGFyDQo+IFx0YWIgSUYgYSA9IDEwIFRIRU4gSEFMVCg5OSkgRU5E
O1xwYXINCj4gYW5kIG5vdDpccGFyDQo+IFx0YWIgQVNTRVJUKGEgIyAxMCwgOTkpO1xwYXINCj4g
XHBhcg0KXHBhcg0KWW91ciBjb25jbHVzaW9uIGlzIG5vdCBvbmUgdGhhdCBJIHdvdWxkIGFncmVl
IHdpdGguIEl0IGFsc28gZG9lcyBub3RccGFyDQpzZWVtIHRvIGJlIHN1cHBvcnRlZCBieSB0aGUg
T21zIGRvY3VtZW50YXRpb24gcmVsYXRpbmcgdG8gdGhlXHBhcg0KcmVjb21tZW5kZWQgdXNlIG9m
IGFzc2VydGlvbnMuXHBhcg0KXHBhcg0KUmVnYXJkcyxccGFyDQpDaHJpc1xwYXINClxwYXINCkNo
cmlzIEJ1cnJvd3NccGFyDQpDRkIgU29mdHdhcmVccGFyDQpodHRwOi8vd3d3LmNmYnNvZnR3YXJl
LmNvbS9ncGNwXHBhcg0KIFxwYXINClxwYXINCi0tLSBCbGFja0JveFxwYXINCi0tLSBzZW5kIHN1
YmplY3QgSEVMUCBvciBVTlNVQlNDUklCRSB0byBibGFja2JveEBvYmVyb24uY2h9fQBvYmVyb24u
Y2gN


----boundary-LibPST-iamunique-1343191860_-_---
Received on Mon Jun 12 2006 - 02:59:28 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:27:51 UTC