A defining occurrence of a type identifier associates that identifier with
a specific type.
TypeDefDefId is a defining occurrence of a type identifier.
The value of the TypeDefDefId.Type attribute must be set by
user computation to a definition table key representing the associated type.
ChkTypeDefDefId is usually inherited along with TypeDefDefId.
It reports an error if the Type attribute does not refer to a type,
or if the type refers to itself.
Mystery type declarations would be specified as follows:
SYMBOL TypIdDef INHERITS TypeDefDefId, ChkTypeDefDefId END;
RULE: TypeDecl ::= 'TYPE' TypIdDef '=' Type
COMPUTE TypIdDef.Type=Type.Type;
END;
TypeDefUseId is an applied occurrence of a type identifier.
The value of the TypeDefUseId.Type attribute is set by the module to
the definition table key of the type identifier itself
(see Dependences among types and type identifiers).
ChkTypeDefUseId is usually inherited along with TypeDefUseId.
It reports an error if the Type attribute does not refer to a type.
Mystery type identifier uses would be specified as follows:
SYMBOL TypIdUse INHERITS TypeDefUseId, ChkTypeDefUseId END;
RULE: Type ::= TypIdUse
COMPUTE Type.Type=TypIdUse.Type;
END;