The %globals property has the following form
%globals G1, G2, . . ., Gn
where each Gi
is one of: the name of a pattern, the name of a data-item, immutable
, unique
, and n >= 0. In the following G = [G1,G2,…,Gn]
.
The %globals
restriction imposes restrictions on which global data-items and global patterns that can be referred in the-descriptor and its sub-descriptors:
- A global data-item X can only be referred if:
- X is in G.
- The type of X is a pattern in G.
- X is a sub-descriptor of a pattern in G.
- A global pattern P can only be referred if:
- P is in G or a sub-descriptor of a pattern in G.
- P is restricted by %globals Q1, Q2, …, Qm where G is a subset of Q1, Q2, …, Qm. I.e., P must be at least as restricted as the-descriptor.
- For any virtual declaration of the form V:< Object, V cannot be instantiated.
- For any pattern in Record, the type of any argument must conform to G.
- There are no additional restrictions on a given Gi other than what may be defined directly for G.
If a descriptor is restricted by %globals
i.e. with no arguments, then no global data-items or global patterns in enclosing objects may be referred, except for descriptors that are also restricted by %globals
with no arguments.
Define conform