protected and protect_proj user attributes #
protected is an attribute to protect a declaration.
If a declaration foo.bar is marked protected, then it must be referred to
by its full name foo.bar, even when the foo namespace is open.
protect_proj attribute to protect the projections of a structure.
If a structure foo is marked with the protect_proj user attribute, then
all of the projections become protected.
protect_proj without bar baz will protect all projections except for bar and baz.
Examples #
In this example all of foo.bar, foo.baz and foo.qux will be protected.
The following code example define the structure foo, and the projections foo.qux
will be protected, but not foo.baz or foo.bar
Attribute to protect a declaration.
If a declaration foo.bar is marked protected, then it must be referred to
by its full name foo.bar, even when the foo namespace is open.
Protectedness is a built in parser feature that is independent of this attribute.
A declaration may be protected even if it does not have the @[protected] attribute.
This provides a convenient way to protect many declarations at once.
Attribute to protect the projections of a structure.
If a structure foo is marked with the protect_proj user attribute, then
all of the projections become protected, meaning they must always be referred to by
their full name foo.bar, even when the foo namespace is open.
protect_proj without bar baz will protect all projections except for bar and baz.