|
- ; diagcat.inc - THE Nova128 diagnostic catalog (E02-S04).
- ;
- ; One line per diagnostic: DIAGNOSTIC symbol, number, "message"
- ; The including file defines the DIAGNOSTIC macro: errors.inc turns each line
- ; into a constant E_<symbol>; diagnostics.s turns it into the message table.
- ; docs/diagnostics.md is generated from this file by build-diag-test.ps1.
- ;
- ; Rules (checked by scripts/build-diag-test.ps1):
- ; - Numbers are stable. Never renumber or reuse; append within the range.
- ; - Ranges: 1-19 source and lexical 20-59 syntax
- ; 60-79 names and declarations 80-119 types
- ; 120-129 access 130-149 interfaces
- ; 150-169 methods and returns 200-219 disk
- ; 220-239 resource limits
- ; - Messages are uppercase ASCII (PETSCII unshifted letters), at most 39
- ; characters with no arguments. Each % is replaced by an argument (at most
- ; two, each at most 16 characters); the screen clips the result to 39.
-
- ; ---------------------------------------------------- source and lexical
- DIAGNOSTIC SRC_LINE_TOO_LONG, 1, "LINE LONGER THAN 80 CHARACTERS"
- DIAGNOSTIC SRC_FILE_TOO_LARGE, 2, "SOURCE LARGER THAN 18999 BYTES"
- DIAGNOSTIC SRC_TOO_MANY_LINES, 3, "MORE THAN 599 LINES"
- DIAGNOSTIC LEX_INVALID_CHAR, 4, "INVALID CHARACTER"
- DIAGNOSTIC LEX_IDENT_TOO_LONG, 5, "NAME LONGER THAN 16 CHARACTERS"
- DIAGNOSTIC LEX_NUMBER_RANGE, 6, "NUMBER LARGER THAN 65535"
- DIAGNOSTIC LEX_BAD_NUMBER, 7, "MALFORMED NUMBER"
- DIAGNOSTIC LEX_UNTERMINATED_STRING, 8, "STRING NOT CLOSED ON THIS LINE"
- DIAGNOSTIC LEX_BAD_ESCAPE, 9, "UNKNOWN ESCAPE SEQUENCE"
- DIAGNOSTIC LEX_BAD_CHAR_LITERAL, 10, "CHARACTER LITERAL NEEDS ONE CHARACTER"
-
- ; ----------------------------------------------------------------- syntax
- DIAGNOSTIC SYN_EXPECTED_IDENTIFIER, 20, "NAME EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_EOL, 21, "END OF LINE EXPECTED"
- DIAGNOSTIC SYN_UNEXPECTED_EOL, 22, "LINE ENDS TOO EARLY"
- DIAGNOSTIC SYN_EXPECTED_RPAREN, 23, "')' EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_END_PROGRAM, 24, "END PROGRAM EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_END_METHOD, 25, "END METHOD EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_END_IF, 26, "END IF EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_END_CLASS, 27, "END CLASS EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_INTERFACE_NAME, 28, "INTERFACE NAME EXPECTED"
- DIAGNOSTIC SYN_INTERFACE_METHOD_BODY, 29, "INTERFACE METHODS HAVE NO BODY"
- DIAGNOSTIC SYN_UNEXPECTED_TOKEN, 30, "% IS NOT ALLOWED HERE"
- DIAGNOSTIC SYN_EXPECTED_PROGRAM, 31, "PROGRAM DECLARATION EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_END_INTERFACE, 32, "END INTERFACE EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_LPAREN, 33, "'(' EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_AS, 34, "AS EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_TYPE, 35, "TYPE EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_END_WHILE, 36, "END WHILE EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_END_FOR, 37, "END FOR EXPECTED"
- DIAGNOSTIC SYN_NOT_A_STATEMENT, 38, "NOT A STATEMENT"
- DIAGNOSTIC SYN_NOT_ASSIGNABLE, 39, "CANNOT ASSIGN TO THIS"
- DIAGNOSTIC SYN_EXPECTED_RBRACKET, 40, "']' EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_TO, 41, "TO EXPECTED"
- DIAGNOSTIC SYN_EXPECTED_EQUALS, 42, "'=' EXPECTED"
-
- ; -------------------------------------------- names and declarations
- DIAGNOSTIC SEM_DUPLICATE_NAME, 60, "% IS ALREADY DECLARED"
- DIAGNOSTIC SEM_UNKNOWN_NAME, 61, "% IS NOT DECLARED"
-
- ; ------------------------------------------------------------------ types
- DIAGNOSTIC TYP_MISMATCH, 80, "% EXPECTED; % FOUND"
- DIAGNOSTIC TYP_CONDITION_NOT_BOOLEAN, 81, "CONDITION MUST BE BOOLEAN"
- DIAGNOSTIC TYP_BAD_OPERAND, 82, "% NOT ALLOWED ON %"
- DIAGNOSTIC TYP_OPERANDS_DIFFER, 83, "% AND % DO NOT MIX"
- DIAGNOSTIC TYP_NUMBER_RANGE, 84, "NUMBER OUT OF RANGE"
- DIAGNOSTIC TYP_NUMBER_DOES_NOT_FIT, 85, "% DOES NOT FIT %"
- DIAGNOSTIC TYP_DIVIDE_BY_ZERO, 86, "DIVISION BY ZERO"
- DIAGNOSTIC TYP_NOT_ARRAY, 87, "% IS NOT AN ARRAY"
- DIAGNOSTIC TYP_ARRAY_NEEDS_INDEX, 88, "% NEEDS AN INDEX"
- DIAGNOSTIC TYP_INDEX_RANGE, 89, "INDEX OUT OF RANGE"
- DIAGNOSTIC TYP_NO_MEMBERS, 90, "% HAS NO MEMBERS"
- DIAGNOSTIC TYP_CANNOT_PRINT, 91, "% CANNOT BE PRINTED"
- DIAGNOSTIC TYP_CANNOT_DELETE, 92, "% CANNOT BE DELETED"
- DIAGNOSTIC TYP_NOT_CLASS, 93, "% IS NOT A CLASS"
- DIAGNOSTIC TYP_ARRAY_SIGNATURE, 94, "ARRAYS CANNOT BE PARAMETERS OR RESULTS"
- DIAGNOSTIC TYP_ARRAY_LENGTH, 95, "ARRAY LENGTH MUST NOT BE ZERO"
- DIAGNOSTIC TYP_INSTANCE_TOO_LARGE, 96, "CLASS INSTANCE TOO LARGE"
-
- ; ----------------------------------------------------------------- access
- DIAGNOSTIC ACC_PRIVATE_MEMBER, 120, "% IS PRIVATE"
-
- ; ------------------------------------------------------------- interfaces
- DIAGNOSTIC IFC_METHOD_MISSING, 130, "% IS NOT IMPLEMENTED"
- DIAGNOSTIC IFC_SIGNATURE_MISMATCH, 131, "% DIFFERS FROM INTERFACE"
- DIAGNOSTIC IFC_SIGNATURE_CONFLICT, 132, "% HAS CONFLICTING SIGNATURES"
- DIAGNOSTIC IFC_NOT_INTERFACE, 133, "% IS NOT AN INTERFACE"
-
- ; ---------------------------------------------------- methods and returns
- DIAGNOSTIC SEM_MISSING_RETURN, 150, "MISSING RETURN VALUE"
- DIAGNOSTIC SEM_LIFECYCLE_RETURN, 151, "% CANNOT RETURN A VALUE"
- DIAGNOSTIC SEM_LIFECYCLE_PARAMS, 152, "% TAKES NO PARAMETERS"
- DIAGNOSTIC SEM_ARG_COUNT, 153, "% TAKES % ARGUMENTS"
-
- ; ------------------------------------------------------------------- disk
- DIAGNOSTIC DSK_SOURCE_UNREADABLE, 200, "CANNOT READ SOURCE; DOS %"
- DIAGNOSTIC DSK_ERR_FILE_UNWRITABLE, 201, "CANNOT WRITE ERROR FILE; DOS %"
- DIAGNOSTIC DSK_OUTPUT_EXISTS, 202, "OUTPUT FILE ALREADY EXISTS"
-
- ; ------------------------------------------------------- resource limits
- DIAGNOSTIC RES_TOO_MANY_NAMES, 220, "MORE THAN 255 NAMES"
- DIAGNOSTIC RES_ERROR_LIMIT, 221, "TOO MANY ERRORS; COMPILATION STOPPED"
- DIAGNOSTIC RES_NESTING_TOO_DEEP, 222, "BLOCKS NESTED TOO DEEPLY"
- DIAGNOSTIC RES_TOO_MANY_MEMBERS, 223, "MORE THAN 255 MEMBERS"
- DIAGNOSTIC RES_TOO_MANY_PARAMS, 224, "MORE THAN 255 PARAMETERS"
- DIAGNOSTIC RES_EXPR_TOO_DEEP, 225, "EXPRESSION NESTED TOO DEEPLY"
- DIAGNOSTIC RES_TOO_MANY_IMPLEMENTS, 226, "MORE THAN 255 IMPLEMENTED INTERFACES"
- DIAGNOSTIC RES_EMIT_FAILED, 227, "CANNOT EMIT THIS CODE YET"
- DIAGNOSTIC RES_SIZE_MISMATCH, 228, "CODE SIZE CHANGED BETWEEN PASSES"
|