diff --git a/documentation/trunk/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki b/documentation/trunk/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki index 4245f60c..ee64fd32 100644 --- a/documentation/trunk/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki +++ b/documentation/trunk/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki @@ -1,3 +1,5 @@ +[[Property:modification_date|Mon, 20 Dec 2021 10:15:00 GMT]] +[[Property:publication_date|Mon, 20 Dec 2021 10:13:53 GMT]] [[Property:link_title|Background and tools]] [[Property:title|Void-safety: Background, definition, and tools]] [[Property:weight|0]] @@ -67,7 +69,7 @@ We know that in the context of certain code patterns, it is clear that it would Here a check is made to ensure x is not void. Then as long as no assignments to x are made in the interim, a feature f can be applied to x with the certainty that x will be attached at the time ... and importantly, this can be determined at compile time. So, we say that this code pattern is a CAP for x. -It is important to understand that in this example (and with other CAPs), x is allowed to be a local variable or formal argument only. That is, x may not be an attribute or general expression (with one exception which we will see [[#Stable attributes|below]]). Direct access to class attribute references cannot be allowed via a CAP due to the fact that they could be set to void by a routine call in some execution path invoked by the intervening instructions or possibly even different process thread. In a later [[Void-safety: Background, definition, and tools#Types as "attached" or "detachable"|section]], we well see that this is not quite such a limitations as it may appear at this point. +It is important to understand that in this example (and with other CAPs), x is allowed to be a local variable or formal argument only. That is, x may not be an attribute or general expression (with one exception which we will see [[#Stable attributes|below]]). Direct access to class attribute references cannot be allowed via a CAP due to the fact that they could be set to void by a routine call in some execution path invoked by the intervening instructions or possibly even different process thread. In a later [[Void-safety: Background, definition, and tools#Types as "attached" or "detachable"|section]], we will see that this is not quite such a limitations as it may appear at this point. {{note|You will find more useful information about CAPs in [[Creating a new void-safe project#More about CAPs|More about CAPs]]. Learn how certain code patterns are determined to be CAPs in [[What makes a Certified Attachment Pattern]]. }} @@ -263,7 +265,7 @@ Constrained genericity can be used to create generic classes in which the generi class C [G -> attached ANY] ... -then x in this class G represents an attached type. Consequently, the actual generic type in any derivation must be attached ... and feature calls on x are safe. +then x in this class has attached type G. Consequently, the actual generic type in any derivation must be attached ... and feature calls on x are safe. ==Rule for ARRAYs==