User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cl:types:condition [2017/05/01 21:00] (current)
Line 1: Line 1:
 +====== Condition Type CONDITION ======
 +
 +====Class Precedence List====
 +**condition**,​ **[[CL:​Types:​t]]**
 +
 +====Description====
 +All types of //​[[CL:​Glossary:​condition|conditions]]//,​ whether error or non-error, must inherit from this //​[[CL:​Glossary:​type]]//​.
 +
 +No additional //​[[CL:​Glossary:​subtype]]//​ relationships among the specified subtypes of **condition** are allowed, except when explicitly mentioned in the text; however implementations are permitted to introduce additional //​[[CL:​Glossary:​type|types]]//​ and one of these //​[[CL:​Glossary:​type|types]]//​ can be a //​[[CL:​Glossary:​subtype]]//​ of any number of the subtypes of **condition**.
 +
 +Whether a user-defined //​[[CL:​Glossary:​condition]]//​ //​[[CL:​Glossary:​type]]//​ has //​[[CL:​Glossary:​slot|slots]]//​ that are accessible by //​[[CL:​Glossary:​with-slots]]//​ is //​[[CL:​Glossary:​implementation-dependent]]//​. Furthermore,​ even in an //​[[CL:​Glossary:​implementation]]//​ in which user-defined //​[[CL:​Glossary:​condition]]//​ //​[[CL:​Glossary:​type|types]]//​ would have //​[[CL:​Glossary:​slot|slots]]//,​ it is //​[[CL:​Glossary:​implementation-dependent]]//​ whether any //​[[CL:​Glossary:​condition]]//​ //​[[CL:​Glossary:​type|types]]//​ defined in this document have such //​[[CL:​Glossary:​slot|slots]]//​ or, if they do, what their //​[[CL:​Glossary:​names]]//​ might be; only the reader functions documented by this specification may be relied upon by portable code.
 +
 +//​[[CL:​Glossary:​Conforming code]]// must observe the following restrictions related to //​[[CL:​Glossary:​condition|conditions]]//:​
 +
 + * **[[CL:​Macros:​define-condition]]**,​ not **[[CL:​Macros:​defclass]]**,​ must be used to define new //​[[CL:​Glossary:​condition]]//​ //​[[CL:​Glossary:​type|types]]//​.
 +
 + * **[[CL:​Macros:​make-condition]]**,​ not **[[CL:​Functions:​make-instance]]**,​ must be used to create //​[[CL:​Glossary:​condition]]//​ //​[[CL:​Glossary:​object|objects]]//​ explicitly.
 +
 + * The **'':​report''​** option of **[[CL:​Macros:​define-condition]]**,​ not **[[CL:​Macros:​defmethod]]** for **[[CL:​Functions:​print-object]]**,​ must be used to define a condition reporter.
 +
 + * **[[CL:​Functions:​slot-value]]**,​ **[[CL:​Functions:​slot-boundp]]**,​ **[[CL:​Functions:​slot-makunbound]]**,​ and **[[CL:​Macros:​with-slots]]** must not be used on //​[[CL:​Glossary:​condition]]//​ //​[[CL:​Glossary:​object|objects]]//​. Instead, the appropriate accessor functions (defined by **[[CL:​Macros:​define-condition]]**) should be used. \endlist
 +
 +\issue{CLOS-CONDITIONS-AGAIN:​ALLOW-SUBSET} \issue{CONDITION-RESTARTS:​BUGGY} \issue{CLOS-CONDITIONS-AGAIN:​ALLOW-SUBSET} \issue{CLOS-CONDITIONS:​INTEGRATE} \issue{CONDITION-SLOTS:​HIDDEN}