-- file ErrorTab.Mesa
-- last modified by Satterthwaite, September 13, 1982 11:31 am
-- last modified by Donahue, 11-Dec-81 13:58:57

DIRECTORY
  Log: TYPE USING [ErrorCode],
  Tree: TYPE USING [NodeName];

ErrorTab: PROGRAM = {

OpName: ARRAY Tree.NodeName[assignx..uparrow] OF STRING = [
    "←", "←",
    " OR ", " AND ", "=", "#", "<", ">=", ">", "<=", " IN ", " ~IN ",
    "+", "-", "*", "/", " MOD ",
    ".", ".", ".",
    " NEW ", "~", "-", "@", "↑"];

FnName: ARRAY Tree.NodeName[min..nil] OF STRING = [
    "MIN", "MAX", "LONG", "ABS", "ALL", "SIZE",
    "FIRST", "LAST", "PRED", "SUCC",
    "DESCRIPTOR", "LENGTH", "BASE", "LOOPHOLE", "NIL"];

ErrorMessages: ARRAY Log.ErrorCode OF STRING = [
    
   -- general purpose errors (no parameters)
    --compilerError,
	"FATAL COMPILER ERROR",
    --unimplemented,
	"unimplemented construct",
    --other,
	"unspecified error",
    --aborted,
	"compilation aborted",

   -- errors with no parameters
    --bodyEntries,
	"too many procedure or signal definitions",
    --bodyType,
	"illegal initialization to body",
    --catchLabel,
	"misplaced RETRY or CONTINUE",
    --descriptor,
	"misused DESCRIPTOR",
    --discrimForm,
	"incorrect discrimination",
    --exit,
	"illegal EXIT or LOOP",
    --exportedVars,
	"too many exported variables",
    --fieldSize,
	"variable or field too large",
    --illDefinedReturn,
	"default return of anonymous value",
    --implicitCall,
	"implicit system call",
    --inlineType,
	"illegal initialization to inline",
    --instLength,
        "instruction has incorrect length",
    --interfaceEntries,
	"too many interface items",
    --keys,
	"keywords not permitted",
    --long,
	"misused LONG",
    --machDep,
        "type must be MACHINE DEPENDENT",
    --misplacedCatch,
        "misplaced catch phrase",
    --misplacedEntry,
        "unmonitored ENTRY or INTERNAL",
    --misplacedMonitorRef,
	"unmonitored WAIT or NOTIFY",
    --misplacedResume,
	"illegal REJECT or RESUME",
    --misplacedReturn,
	"illegal RETURN",
    --misplacedStop,
	"illegal STOP",
    --misplacedType,
	"misplaced exported type",
    --mixedPositions,
	"mixed explicit and implicit field positions",
    --noAccess,
	"attempt to access private fields",
    --nonOrderedType,
	"index or interval type must be ordered",
    --nonTypeCons,
        "unrecognizable type constructor",
    --nonVoidStmt,
        "procedure used as a statement returns a value",
    --relative,
	"misused RELATIVE",
    --staticNesting,
	"body or catch phrase nested too deeply",
    --stringLength,
        "invalid string length",
    --subrangeBounds,
        "interval bounds are not constant",
    --subrangeNesting,
        "interval bounds are out of range",
    --unreachable,
        "unreachable code",
    --unsafeBlock,
        "improper use of an unsafe block",
    --var,
	"misused VAR",

   -- errors mapping hash to sei parameters
    --unknownId,
        "is undeclared",
    --unknownField,
        "is not valid as a field selector",

   -- errors with hash parameters
    --ambiguousId,
	"is ambiguous without discrimination",
    --duplicateId,
        "is multiply defined",
    --missingImport,
	"is an unmatched implicit import",
    --unknownTag,
	"is not a legal variant tag",
    --duplicateTag,
	"labels multiple variants",
    --unknownVariant,
	"does not name a variant",
    --unknownKey,
	"is not valid as a key",
    --duplicateKey,
	"is repeated as a key",
    --omittedKey,
	"cannot be defaulted",
    --openId,
	"must label a record",
    --fileName,
        "cannot be opened",
    --fileVersion,
        "referenced in different versions",
    --fileWrong,
        "found in wrong version",
    --moduleId,
        "is not a module name",

   -- errors with sei parameters
    --addressOverflow,
	"exceeds addressing limits",
    --circularType,
        "leads to a circular type definition", 
    --circularValue,
        "has ill-defined or circular value",
    --elision,
	"cannot be defaulted or voided",
    --enumOrder,
	"is out of order",
    --exportAttr,
	"is exported with incorrect attributes",
    --fieldPosition,
        "has invalid field width or alignment",
    --forwardRef,
        "is used before set",
    --inlineRhs,
        "is a misused inline",
    --internalCall,
        "is a misused INTERNAL",
    --missingBase,
	"requires a base value",
    --missingInit,
	"requires an initial value",
    --missingLock,
	"required for lock",
    --nonDefinition,
	"improperly defined for a DEFINITIONS module",
    --nonTagType,
	"has a type illegal for a tag",
    --nonTypeId,
        "is not a type",
    --notImported,
        "must come from an imported interface",
    --position,
	"cannot have a specified position",
    --recordGap,
	"is followed by a gap",
    --recordOverlap,
	"overlaps another field",
    --recursiveInline,
	"is INLINE and recursive",
    --typeLength,
	"has unknown or ill-defined length",
    --varExport,
	"has no exportable value",
    --voided,
	"cannot be voided",

   -- errors with tree parameters
    --boundsFault,
	"is out of range",
    --controlId,
	"is an improper control variable",
    --defaultForm,
	"has an invalid default",
    --duplicateLabel,
	"is multiply defined",
    --exportClash,
	"is exported with incorrect type",
    --missingBinding,
	"lacks a tag needed for discrimination",
    --missingCoercion
        "requires an unimplemented coercion",
    --misusedInline,
	"is an incorrectly used inline",
    --mixedRepresentation,
	"has signed/unsigned ambiguity",
    --noApplication,
	"does not allow an argument list",
    --nonAddressable,
	"does not allow indirect reference",
    --nonConstant,
	"has nonconstant value",
    --nonLHS,
        "cannot be updated",
    --nonVariantLabel,
	"specifies an inadmissable test",
    --noTarget,
	"requires explicit type",
    --notPortable,
	"is not importable/exportable",
    --noVariants,
	"has no variants",
    --overflow,
	"overflows",
    --relationType,
	"relational has inadmissable operands",
    --scopeFault,
        "is being assigned out of scope",
    --sizeClash,
        "has incorrect or ambiguous length",
    --spuriousBinding,
        "explicit selection not permitted",
    --typeClash,
        "has incorrect type",
    --unknownLabel,
        "is undeclared",
    -- unsafeOperation,
    	"is an unsafe operation",
    -- unsafeSelection,
    	"is discriminated unsafely",

   -- errors with numeric parameters
    --listShort
        "too few elements in list",
    --listLong
        "too many elements in list",

   -- warnings with no parameters
    --attrClash
	"invalid attribute combination",
    --pointerInit
        "multiple initialization with a pointer",
    --stateVector,
	"state vector has improper offset",
    --unsafeArgs
	"long REF-containing arg/return record is unsafe",

   -- warnings with sei parameters
    --privateExport
        "is private but matches an export",
    --uninitialized
        "appears uninitialized",
    --unusedExport
        "receives no exported values",
    --unusedId
        "is never referenced",
    --unusedImport
        "supplies no imported values",
    --voidExport
        "matches a constant in an exported interface",

   -- warnings with substring parameters
    --replString
        "has global strings preventing replacement",
    --replId
        "has incompatible attributes for replacement",

   -- warnings with tree parameters
    --unsignedCompare
        "will use unsigned comparison"

    ];

}.