]> git.sur5r.net Git - cc65/commitdiff
Error handling cleanup/changes.
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 15 Oct 2000 19:52:01 +0000 (19:52 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 15 Oct 2000 19:52:01 +0000 (19:52 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@369 b7a2c559-68d2-44c3-8de9-860c34a00d81

14 files changed:
src/cc65/codegen.c
src/cc65/declare.c
src/cc65/error.c
src/cc65/error.h
src/cc65/expr.c
src/cc65/input.c
src/cc65/litpool.c
src/cc65/locals.c
src/cc65/main.c
src/cc65/pragma.c
src/cc65/preproc.c
src/cc65/scanner.c
src/cc65/stmt.c
src/cc65/symtab.c

index 4a041b4e85bfdcd6ae5c5bfc860d03c0fdb62ba5..74e5b9774aa3dbe2f7a966281b6fd6da3b5ebebb 100644 (file)
@@ -3372,7 +3372,7 @@ void g_lt (unsigned flags, unsigned long val)
 
        /* Give a warning in some special cases */
        if ((flags & CF_UNSIGNED) && val == 0) {
 
        /* Give a warning in some special cases */
        if ((flags & CF_UNSIGNED) && val == 0) {
-           Warning (WARN_COND_NEVER_TRUE);
+           Warning ("Condition is never true");
        }
 
        /* Look at the type */
        }
 
        /* Look at the type */
@@ -3587,7 +3587,7 @@ void g_ge (unsigned flags, unsigned long val)
 
        /* Give a warning in some special cases */
        if ((flags & CF_UNSIGNED) && val == 0) {
 
        /* Give a warning in some special cases */
        if ((flags & CF_UNSIGNED) && val == 0) {
-           Warning (WARN_COND_ALWAYS_TRUE);
+           Warning ("Condition is always true");
        }
 
        /* Look at the type */
        }
 
        /* Look at the type */
index c2b4c5313795158d4ab32ce13363f6c42b665a99..004a9c27af4a5e6b22eadc398b63c58f66a315b4 100644 (file)
@@ -907,7 +907,7 @@ void CheckEmptyDecl (const DeclSpec* D)
  */
 {
     if ((D->Flags & DS_EXTRA_TYPE) == 0) {
  */
 {
     if ((D->Flags & DS_EXTRA_TYPE) == 0) {
-       Warning (WARN_USELESS_DECL);
+       Warning ("Useless declaration");
     }
 }
 
     }
 }
 
index 8fdea906830a1af29dd99daa7a88ae18b858eb53..95db80a45b140e081be74082d8697d53f2034142 100644 (file)
 
 
 
 
 
 
-static char* WarnMsg [WARN_COUNT-1] = {
-    "Unreachable code",
-    "Condition is never true",
-    "Condition is always true",
-    "Converting pointer to integer without a cast",
-    "Converting integer to pointer without a cast",
-    "Function call without a prototype",
-    "Unknown #pragma",
-    "No case labels",
-    "Function must be extern",
-    "Parameter `%s' is never used",
-    "`%s' is defined but never used",
-    "Constant is long",
-    "`/*' found inside a comment",
-    "Useless declaration",
-};
-
-
-
 /* Error messages sorted by ErrTypes */
 static char* ErrMsg [ERR_COUNT-1] = {
 /* Error messages sorted by ErrTypes */
 static char* ErrMsg [ERR_COUNT-1] = {
-    "Invalid character (%u)",
-    "Unexpected newline",
-    "End-of-file reached in comment starting at line %u",
     "Syntax error",
     "`\"' expected",
     "`:' expected",
     "Syntax error",
     "`\"' expected",
     "`:' expected",
@@ -92,23 +70,11 @@ static char* ErrMsg [ERR_COUNT-1] = {
     "Incompatible pointer types",
     "Too many arguments in function call",
     "Too few arguments in function call",
     "Incompatible pointer types",
     "Too many arguments in function call",
     "Too few arguments in function call",
-    "Macro argument count mismatch",
     "Duplicate macro parameter: %s",
     "Duplicate macro parameter: %s",
-    "Macro redefinition is not identical",
     "Variable identifier expected",
     "Integer expression expected",
     "Constant expression expected",
     "No active loop",
     "Variable identifier expected",
     "Integer expression expected",
     "Constant expression expected",
     "No active loop",
-    "`\"' or `<' expected",
-    "Missing terminator or name too long",
-    "Include file `%s' not found",
-    "Cannot open include file `%s': %s",
-    "Invalid #error directive",
-    "#error: %s",
-    "Unexpected `#endif'",
-    "Unexpected `#else'",
-    "`#endif' expected",
-    "Compiler directive expected",
     "Redefinition of `%s'",
     "Conflicting types for `%s'",
     "String literal expected",
     "Redefinition of `%s'",
     "Conflicting types for `%s'",
     "String literal expected",
@@ -118,7 +84,6 @@ static char* ErrMsg [ERR_COUNT-1] = {
     "Unexpected `continue'",
     "Undefined symbol: `%s'",
     "Undefined label: `%s'",
     "Unexpected `continue'",
     "Undefined symbol: `%s'",
     "Undefined label: `%s'",
-    "Include nesting too deep",
     "Too many local variables",
     "Too many initializers",
     "Cannot initialize incomplete type",
     "Too many local variables",
     "Too many initializers",
     "Cannot initialize incomplete type",
@@ -134,7 +99,6 @@ static char* ErrMsg [ERR_COUNT-1] = {
     "Illegal function call",
     "Illegal indirection",
     "Illegal address",
     "Illegal function call",
     "Illegal indirection",
     "Illegal address",
-    "Illegal macro call",
     "Illegal hex digit",
     "Illegal character constant",
     "Illegal modifier",
     "Illegal hex digit",
     "Illegal character constant",
     "Illegal modifier",
@@ -162,20 +126,6 @@ static char* ErrMsg [ERR_COUNT-1] = {
 
 
 
 
 
 
-static char* FatMsg [FAT_COUNT-1] = {
-    "Too many errors",
-    "Cannot open output file: %s",
-    "Cannot write to output file (disk full?)",
-    "Cannot open input file: %s",
-    "Out of memory",
-    "Stack overflow",
-    "Stack empty",
-    "Out of string space",
-    "Too many case labels",
-};
-
-
-
 /* Count of errors/warnings */
 unsigned ErrorCount    = 0;
 unsigned WarningCount  = 0;
 /* Count of errors/warnings */
 unsigned ErrorCount    = 0;
 unsigned WarningCount  = 0;
@@ -188,59 +138,50 @@ unsigned WarningCount     = 0;
 
 
 
 
 
 
-void Warning (unsigned WarnNum, ...)
-/* Print warning message. */
+static void IntWarning (const char* Filename, unsigned Line, const char* Msg, va_list ap)
+/* Print warning message - internal function. */
 {
 {
-    va_list ap;
-
     if (!NoWarn) {
     if (!NoWarn) {
-       fprintf (stderr, "%s(%u): Warning #%u: ",
-                GetCurrentFile(), curpos, WarnNum);
-
-       va_start (ap, WarnNum);
-       vfprintf (stderr, WarnMsg [WarnNum-1], ap);
-       va_end (ap);
+               fprintf (stderr, "%s(%u): Warning: ", Filename, Line);
+       vfprintf (stderr, Msg, ap);
        fprintf (stderr, "\n");
 
        if (Verbose) {
            fprintf (stderr, "Line: %s\n", line);
        }
        fprintf (stderr, "\n");
 
        if (Verbose) {
            fprintf (stderr, "Line: %s\n", line);
        }
+       ++WarningCount;
     }
     }
-    ++ WarningCount;
 }
 
 
 
 }
 
 
 
-void PPWarning (unsigned WarnNum, ...)
-/* Print warning message. For use within the preprocessor. */
+void Warning (const char* Format, ...)
+/* Print warning message. */
 {
     va_list ap;
 {
     va_list ap;
-
-    if (!NoWarn) {
-       fprintf (stderr, "%s(%u): Warning #%u: ",
-                GetCurrentFile(), GetCurrentLine(), WarnNum);
-
-       va_start (ap, WarnNum);
-       vfprintf (stderr, WarnMsg [WarnNum-1], ap);
-       va_end (ap);
-       fprintf (stderr, "\n");
-    }
-    ++WarningCount;
+    va_start (ap, Format);
+    IntWarning (GetCurrentFile(), curpos, Format, ap);
+    va_end (ap);
 }
 
 
 
 }
 
 
 
-void Error (unsigned ErrNum, ...)
-/* Print an error message */
+void PPWarning (const char* Format, ...)
+/* Print warning message. For use within the preprocessor. */
 {
     va_list ap;
 {
     va_list ap;
+    va_start (ap, Format);
+    IntWarning (GetCurrentFile(), GetCurrentLine(), Format, ap);
+    va_end (ap);
+}
 
 
-    fprintf (stderr, "%s(%u): Error #%u: ",
-            GetCurrentFile(), curpos, ErrNum);
 
 
-    va_start (ap, ErrNum);
-    vfprintf (stderr, ErrMsg [ErrNum-1], ap);
-    va_end (ap);
+
+static void IntError (const char* Filename, unsigned Line, const char* Msg, va_list ap)
+/* Print an error message - internal function*/
+{
+    fprintf (stderr, "%s(%u): Error: ", Filename, Line);
+    vfprintf (stderr, Msg, ap);
     fprintf (stderr, "\n");
 
     if (Verbose) {
     fprintf (stderr, "\n");
 
     if (Verbose) {
@@ -248,43 +189,54 @@ void Error (unsigned ErrNum, ...)
     }
     ++ErrorCount;
     if (ErrorCount > 10) {
     }
     ++ErrorCount;
     if (ErrorCount > 10) {
-               Fatal (FAT_TOO_MANY_ERRORS);
+               Fatal ("Too many errors");
     }
 }
 
 
 
     }
 }
 
 
 
-void PPError (unsigned ErrNum, ...)
-/* Print an error message. For use within the preprocessor.  */
+void Error (unsigned ErrNum, ...)
+/* Print an error message */
 {
     va_list ap;
 {
     va_list ap;
+    va_start (ap, ErrNum);
+    IntError (GetCurrentFile(), curpos, ErrMsg [ErrNum-1], ap);
+    va_end (ap);
+}
 
 
-    fprintf (stderr, "%s(%u): Error #%u: ",
-            GetCurrentFile(), GetCurrentLine(), ErrNum);
 
 
-    va_start (ap, ErrNum);
-    vfprintf (stderr, ErrMsg [ErrNum-1], ap);
+
+void MError (const char* Format, ...)
+/* Print an error message */
+{
+    va_list ap;
+    va_start (ap, Format);
+    IntError (GetCurrentFile(), curpos, Format, ap);
     va_end (ap);
     va_end (ap);
-    fprintf (stderr, "\n");
+}
 
 
-    ++ErrorCount;
-    if (ErrorCount > 10) {
-               Fatal (FAT_TOO_MANY_ERRORS);
-    }
+
+
+void PPError (const char* Format, ...)
+/* Print an error message. For use within the preprocessor.  */
+{
+    va_list ap;
+    va_start (ap, Format);
+    IntError (GetCurrentFile(), GetCurrentLine(), Format, ap);
+    va_end (ap);
 }
 
 
 
 }
 
 
 
-void Fatal (unsigned FatNum, ...)
+void Fatal (const char* Format, ...)
 /* Print a message about a fatal error and die */
 {
     va_list ap;
 
 /* Print a message about a fatal error and die */
 {
     va_list ap;
 
-    fprintf (stderr, "%s(%u): Fatal #%u: ",
-            GetCurrentFile(), curpos, FatNum);
+    fprintf (stderr, "%s(%u): Fatal: ", GetCurrentFile(), curpos);
 
 
-    va_start (ap, FatNum);
-    vfprintf (stderr, FatMsg [FatNum-1], ap);
+    va_start (ap, Format);
+    vfprintf (stderr, Format, ap);
     va_end (ap);
     fprintf (stderr, "\n");
 
     va_end (ap);
     fprintf (stderr, "\n");
 
index c44518300e00ee2c874a2b9203af409d18021513..b67fcb240251571f7666ea50bcfb9ab0a1aceb69 100644 (file)
 
 
 
 
 
 
-/* Warning numbers */
-enum Warnings {
-    WARN_NONE,                         /* No warning */
-    WARN_UNREACHABLE_CODE,
-    WARN_COND_NEVER_TRUE,
-    WARN_COND_ALWAYS_TRUE,
-    WARN_PTR_TO_INT_CONV,
-    WARN_INT_TO_PTR_CONV,
-    WARN_FUNC_WITHOUT_PROTO,
-    WARN_UNKNOWN_PRAGMA,
-    WARN_NO_CASE_LABELS,
-    WARN_FUNC_MUST_BE_EXTERN,
-    WARN_UNUSED_PARM,
-    WARN_UNUSED_ITEM,
-    WARN_CONSTANT_IS_LONG,
-    WARN_NESTED_COMMENT,
-    WARN_USELESS_DECL,
-    WARN_COUNT                         /* Warning count */
-};
-
 /* Error numbers */
 /* Error numbers */
-enum Errors {  
+enum Errors {
     ERR_NONE,                          /* No error */
     ERR_NONE,                          /* No error */
-    ERR_INVALID_CHAR,
-    ERR_UNEXPECTED_NEWLINE,
-    ERR_EOF_IN_COMMENT,
     ERR_SYNTAX,
     ERR_QUOTE_EXPECTED,
     ERR_COLON_EXPECTED,
     ERR_SYNTAX,
     ERR_QUOTE_EXPECTED,
     ERR_COLON_EXPECTED,
@@ -92,23 +69,11 @@ enum Errors {
     ERR_INCOMPATIBLE_POINTERS,
     ERR_TOO_MANY_FUNC_ARGS,
     ERR_TOO_FEW_FUNC_ARGS,
     ERR_INCOMPATIBLE_POINTERS,
     ERR_TOO_MANY_FUNC_ARGS,
     ERR_TOO_FEW_FUNC_ARGS,
-    ERR_MACRO_ARGCOUNT,
     ERR_DUPLICATE_MACRO_ARG,
     ERR_DUPLICATE_MACRO_ARG,
-    ERR_MACRO_REDEF,
     ERR_VAR_IDENT_EXPECTED,
     ERR_INT_EXPR_EXPECTED,
     ERR_CONST_EXPR_EXPECTED,
     ERR_NO_ACTIVE_LOOP,
     ERR_VAR_IDENT_EXPECTED,
     ERR_INT_EXPR_EXPECTED,
     ERR_CONST_EXPR_EXPECTED,
     ERR_NO_ACTIVE_LOOP,
-    ERR_INCLUDE_LTERM_EXPECTED,
-    ERR_INCLUDE_RTERM_EXPECTED,
-    ERR_INCLUDE_NOT_FOUND,
-    ERR_INCLUDE_OPEN_FAILURE,
-    ERR_INVALID_USER_ERROR,
-    ERR_USER_ERROR,
-    ERR_UNEXPECTED_CPP_ENDIF,
-    ERR_UNEXPECTED_CPP_ELSE,
-    ERR_CPP_ENDIF_EXPECTED,
-    ERR_CPP_DIRECTIVE_EXPECTED,
     ERR_MULTIPLE_DEFINITION,
     ERR_CONFLICTING_TYPES,
     ERR_STRLIT_EXPECTED,
     ERR_MULTIPLE_DEFINITION,
     ERR_CONFLICTING_TYPES,
     ERR_STRLIT_EXPECTED,
@@ -118,7 +83,6 @@ enum Errors {
     ERR_UNEXPECTED_CONTINUE,
     ERR_UNDEFINED_SYMBOL,
     ERR_UNDEFINED_LABEL,
     ERR_UNEXPECTED_CONTINUE,
     ERR_UNDEFINED_SYMBOL,
     ERR_UNDEFINED_LABEL,
-    ERR_INCLUDE_NESTING,
     ERR_TOO_MANY_LOCALS,
     ERR_TOO_MANY_INITIALIZERS,
     ERR_INIT_INCOMPLETE_TYPE,
     ERR_TOO_MANY_LOCALS,
     ERR_TOO_MANY_INITIALIZERS,
     ERR_INIT_INCOMPLETE_TYPE,
@@ -134,7 +98,6 @@ enum Errors {
     ERR_ILLEGAL_FUNC_CALL,
     ERR_ILLEGAL_INDIRECT,
     ERR_ILLEGAL_ADDRESS,
     ERR_ILLEGAL_FUNC_CALL,
     ERR_ILLEGAL_INDIRECT,
     ERR_ILLEGAL_ADDRESS,
-    ERR_ILLEGAL_MACRO_CALL,
     ERR_ILLEGAL_HEX_DIGIT,
     ERR_ILLEGAL_CHARCONST,
     ERR_ILLEGAL_MODIFIER,
     ERR_ILLEGAL_HEX_DIGIT,
     ERR_ILLEGAL_CHARCONST,
     ERR_ILLEGAL_MODIFIER,
@@ -161,23 +124,6 @@ enum Errors {
     ERR_COUNT                          /* Error count */
 };
 
     ERR_COUNT                          /* Error count */
 };
 
-/* Fatal errors */
-enum Fatals {
-    FAT_NONE,
-    FAT_TOO_MANY_ERRORS,
-    FAT_CANNOT_OPEN_OUTPUT,
-    FAT_CANNOT_WRITE_OUTPUT,
-    FAT_CANNOT_OPEN_INPUT,
-    FAT_OUT_OF_MEMORY,
-    FAT_STACK_OVERFLOW,
-    FAT_STACK_EMPTY,
-    FAT_OUT_OF_STRSPACE,
-    FAT_TOO_MANY_CASE_LABELS,
-    FAT_COUNT                          /* Fatal error count */
-};
-
-
-
 /* Count of errors/warnings */
 extern unsigned ErrorCount;
 extern unsigned WarningCount;
 /* Count of errors/warnings */
 extern unsigned ErrorCount;
 extern unsigned WarningCount;
@@ -190,22 +136,25 @@ extern unsigned WarningCount;
 
 
 
 
 
 
-void Warning (unsigned WarnNum, ...);
+void Warning (const char* Format, ...) attribute ((format (printf, 1, 2)));
 /* Print warning message. */
 
 /* Print warning message. */
 
-void PPWarning (unsigned WarnNum, ...);
+void PPWarning (const char* Format, ...) attribute ((format (printf, 1, 2)));
 /* Print warning message. For use within the preprocessor. */
 
 void Error (unsigned ErrNum, ...);
 /* Print an error message */
 
 /* Print warning message. For use within the preprocessor. */
 
 void Error (unsigned ErrNum, ...);
 /* Print an error message */
 
-void PPError (unsigned ErrNum, ...);
+void MError (const char* Format, ...) attribute ((format (printf, 1, 2)));
+/* Print an error message */
+
+void PPError (const char* Format, ...) attribute ((format (printf, 1, 2)));
 /* Print an error message. For use within the preprocessor.  */
 
 /* Print an error message. For use within the preprocessor.  */
 
-void Fatal (unsigned FatNum, ...);
+void Fatal (const char* Format, ...) attribute ((noreturn, format (printf, 1, 2)));
 /* Print a message about a fatal error and die */
 
 /* Print a message about a fatal error and die */
 
-void Internal (char* Format, ...) attribute ((noreturn));
+void Internal (char* Format, ...) attribute ((noreturn, format (printf, 1, 2)));
 /* Print a message about an internal compiler error and die. */
 
 void ErrorReport (void);
 /* Print a message about an internal compiler error and die. */
 
 void ErrorReport (void);
index a971ee322614115a4b18cdadebfa06acd8d027d6..b7bd14ac2d16867df42a6f947376f98ec0226c9a 100644 (file)
@@ -213,9 +213,9 @@ unsigned assignadjust (type* lhst, struct expent* rhs)
     } else if (IsClassInt (lhst)) {
                if (IsClassPtr (rhst)) {
            /* Pointer -> int conversion */
     } else if (IsClassInt (lhst)) {
                if (IsClassPtr (rhst)) {
            /* Pointer -> int conversion */
-           Warning (WARN_PTR_TO_INT_CONV);
+           Warning ("Converting pointer to integer without a cast");
                } else if (!IsClassInt (rhst)) {
                } else if (!IsClassInt (rhst)) {
-           Error (ERR_INCOMPATIBLE_TYPES);
+           Error (ERR_INCOMPATIBLE_TYPES);                        
        } else {
            /* Adjust the int types. To avoid manipulation of TOS mark lhs
             * as const.
        } else {
            /* Adjust the int types. To avoid manipulation of TOS mark lhs
             * as const.
@@ -253,7 +253,7 @@ unsigned assignadjust (type* lhst, struct expent* rhs)
        } else if (IsClassInt (rhst)) {
            /* Int to pointer assignment is valid only for constant zero */
            if ((rhs->e_flags & E_MCONST) == 0 || rhs->e_const != 0) {
        } else if (IsClassInt (rhst)) {
            /* Int to pointer assignment is valid only for constant zero */
            if ((rhs->e_flags & E_MCONST) == 0 || rhs->e_const != 0) {
-               Warning (WARN_INT_TO_PTR_CONV);
+               Warning ("Converting integer to pointer without a cast");
            }
        } else if (IsTypeFuncPtr (lhst) && IsTypeFunc(rhst)) {
            /* Assignment of function to function pointer is allowed, provided
            }
        } else if (IsTypeFuncPtr (lhst) && IsTypeFunc(rhst)) {
            /* Assignment of function to function pointer is allowed, provided
@@ -815,7 +815,7 @@ static int primary (struct expent* lval)
             * function signature for a function having an empty param list
             * and returning int.
             */
             * function signature for a function having an empty param list
             * and returning int.
             */
-           Warning (WARN_FUNC_WITHOUT_PROTO);
+           Warning ("Function call without a prototype");
            Sym = AddGlobalSym (Ident, GetImplicitFuncType(), SC_EXTERN | SC_REF | SC_FUNC);
            lval->e_tptr  = Sym->Type;
            lval->e_flags = E_MGLOBAL | E_MCONST | E_TGLAB;
            Sym = AddGlobalSym (Ident, GetImplicitFuncType(), SC_EXTERN | SC_REF | SC_FUNC);
            lval->e_tptr  = Sym->Type;
            lval->e_flags = E_MGLOBAL | E_MCONST | E_TGLAB;
@@ -3008,7 +3008,7 @@ void test (unsigned label, int cond)
        /* Constant rvalue */
                if (cond == 0 && lval.e_const == 0) {
            g_jump (label);
        /* Constant rvalue */
                if (cond == 0 && lval.e_const == 0) {
            g_jump (label);
-           Warning (WARN_UNREACHABLE_CODE);
+           Warning ("Unreachable code");
        } else if (cond && lval.e_const) {
            g_jump (label);
        }
        } else if (cond && lval.e_const) {
            g_jump (label);
        }
index d4b278f1d00778df25565b7c43d0e9b36c90b012..cefeed6a96cd9b726efcf6e3c6302beb9e353af8 100644 (file)
@@ -198,7 +198,7 @@ void OpenMainFile (const char* Name)
     FILE* F = fopen (Name, "r");
     if (F == 0) {
                /* Cannot open */
     FILE* F = fopen (Name, "r");
     if (F == 0) {
                /* Cannot open */
-               Fatal (FAT_CANNOT_OPEN_INPUT, strerror (errno));
+               Fatal ("Cannot open input file `%s': %s", Name, strerror (errno));
     }
 
     /* Allocate a new AFile structure for the file */
     }
 
     /* Allocate a new AFile structure for the file */
@@ -216,14 +216,14 @@ void OpenIncludeFile (const char* Name, unsigned DirSpec)
 
     /* Check for the maximum include nesting */
     if (CollCount (&AFiles) > MAX_INC_NESTING) {
 
     /* Check for the maximum include nesting */
     if (CollCount (&AFiles) > MAX_INC_NESTING) {
-       PPError (ERR_INCLUDE_NESTING);
+       PPError ("Include nesting too deep");
        return;
     }
 
     /* Search for the file */
     N = FindInclude (Name, DirSpec);
     if (N == 0) {
        return;
     }
 
     /* Search for the file */
     N = FindInclude (Name, DirSpec);
     if (N == 0) {
-       PPError (ERR_INCLUDE_NOT_FOUND, Name);
+       PPError ("Include file `%s' not found", Name);
        return;
     }
 
        return;
     }
 
@@ -242,7 +242,7 @@ void OpenIncludeFile (const char* Name, unsigned DirSpec)
     F = fopen (IF->Name, "r");
     if (F == 0) {
        /* Error opening the file */
     F = fopen (IF->Name, "r");
     if (F == 0) {
        /* Error opening the file */
-       PPError (ERR_INCLUDE_OPEN_FAILURE, IF->Name, strerror (errno));
+       PPError ("Cannot open include file `%s': %s", IF->Name, strerror (errno));
        return;
     }
 
        return;
     }
 
index 801a5ab43b470167f0f21c3ffe156e36083e55ae..2d4432c53a93e7cb6193f8345b714001028f919c 100644 (file)
@@ -140,7 +140,7 @@ void AddLiteralChar (char C)
 /* Add one character to the literal pool */
 {
     if (LiteralOffs >= LITPOOL_SIZE) {
 /* Add one character to the literal pool */
 {
     if (LiteralOffs >= LITPOOL_SIZE) {
-       Fatal (FAT_OUT_OF_STRSPACE);
+       Fatal ("Out of literal space");
     }
     LiteralPool[LiteralOffs++] = C;
 }
     }
     LiteralPool[LiteralOffs++] = C;
 }
index 0824884438663c03859b9425e5c93ec2b3227a02..af3d169f32dd90e47d127e3e3848fd29eb9cb118 100644 (file)
@@ -152,7 +152,7 @@ static void ParseOneDecl (const DeclSpec* Spec)
     if (IsTypeFunc (Decl.Type)) {
        /* Function prototypes are always external */
        if ((SC & SC_EXTERN) == 0) {
     if (IsTypeFunc (Decl.Type)) {
        /* Function prototypes are always external */
        if ((SC & SC_EXTERN) == 0) {
-                   Warning (WARN_FUNC_MUST_BE_EXTERN);
+                   Warning ("Function must be extern");
        }
                SC |= SC_FUNC | SC_EXTERN;
 
        }
                SC |= SC_FUNC | SC_EXTERN;
 
index 0b2e0e709288729bec65f071a79fe8a2f3455a01..7d68817f960f3f36eec05dd26514014072247dc9 100644 (file)
@@ -174,7 +174,7 @@ static void SetSys (const char* Sys)
 
        default:
                    AbEnd ("Unknown target system type");
 
        default:
                    AbEnd ("Unknown target system type");
-    }      
+    }
 
     /* Initialize the translation tables for the target system */
     TgtTranslateInit ();
 
     /* Initialize the translation tables for the target system */
     TgtTranslateInit ();
@@ -191,7 +191,7 @@ static void DoCreateDep (const char* OutputName)
     /* Open the file */
     FILE* F = fopen (DepName, "w");
     if (F == 0) {
     /* Open the file */
     FILE* F = fopen (DepName, "w");
     if (F == 0) {
-       Fatal (FAT_CANNOT_OPEN_OUTPUT, strerror (errno));
+       Fatal ("Cannot open dependency file `%s': %s", DepName, strerror (errno));
     }
 
     /* Write the dependencies to the file */
     }
 
     /* Write the dependencies to the file */
@@ -200,7 +200,7 @@ static void DoCreateDep (const char* OutputName)
     /* Close the file, check for errors */
     if (fclose (F) != 0) {
        remove (DepName);
     /* Close the file, check for errors */
     if (fclose (F) != 0) {
        remove (DepName);
-       Fatal (FAT_CANNOT_WRITE_OUTPUT);
+       Fatal ("Cannot write to dependeny file (disk full?)");
     }
 
     /* Free the name */
     }
 
     /* Free the name */
@@ -615,7 +615,7 @@ int main (int argc, char* argv[])
        /* Open the file */
        F = fopen (OutputFile, "w");
        if (F == 0) {
        /* Open the file */
        F = fopen (OutputFile, "w");
        if (F == 0) {
-           Fatal (FAT_CANNOT_OPEN_OUTPUT, strerror (errno));
+           Fatal ("Cannot open output file `%s': %s", OutputFile, strerror (errno));
        }
 
        /* Write the output to the file */
        }
 
        /* Write the output to the file */
@@ -624,7 +624,7 @@ int main (int argc, char* argv[])
        /* Close the file, check for errors */
        if (fclose (F) != 0) {
            remove (OutputFile);
        /* Close the file, check for errors */
        if (fclose (F) != 0) {
            remove (OutputFile);
-           Fatal (FAT_CANNOT_WRITE_OUTPUT);
+           Fatal ("Cannot write to output file (disk full?)");
        }
 
        /* Create dependencies if requested */
        }
 
        /* Create dependencies if requested */
index 27ed3a53d86c22730313517ba8b4b0863e4cfdd2..ebd429379b329b22d3675ba85161774859e4763e 100644 (file)
@@ -151,7 +151,7 @@ static void SegNamePragma (void (*Func) (const char*))
            Func (Name);
 
        } else {
            Func (Name);
 
        } else {
-                          
+
            /* Segment name is invalid */
            Error (ERR_ILLEGAL_SEG_NAME, Name);
 
            /* Segment name is invalid */
            Error (ERR_ILLEGAL_SEG_NAME, Name);
 
@@ -201,7 +201,7 @@ void DoPragma (void)
         * for unknown pragmas, however, we're allowed to warn - and we will
         * do so. Otherwise one typo may give you hours of bug hunting...
         */
         * for unknown pragmas, however, we're allowed to warn - and we will
         * do so. Otherwise one typo may give you hours of bug hunting...
         */
-       Warning (WARN_UNKNOWN_PRAGMA);
+       Warning ("Unknown #pragma `%s'", CurTok.Ident);
        return;
     }
 
        return;
     }
 
index e884f49acc2d760e03b9aa85d58973e52ba72ba2..4877dad3b6a6b3c5a9a6e0f6cdbc2edfe61f8860 100644 (file)
@@ -98,12 +98,13 @@ static void Comment (void)
     while (CurC != '*' || NextC != '/') {
        if (CurC == '\0') {
            if (NextLine () == 0) {
     while (CurC != '*' || NextC != '/') {
        if (CurC == '\0') {
            if (NextLine () == 0) {
-               PPError (ERR_EOF_IN_COMMENT, StartingLine);
+               PPError ("End-of-file reached in comment starting at line %u",
+                        StartingLine);
                return;
            }
        } else {
            if (CurC == '/' && NextC == '*') {
                return;
            }
        } else {
            if (CurC == '/' && NextC == '*') {
-               PPWarning (WARN_NESTED_COMMENT);
+               PPWarning ("`/*' found inside a comment");
            }
            NextChar ();
        }
            }
            NextChar ();
        }
@@ -170,7 +171,7 @@ static int MacName (char* Ident)
 /* Get macro symbol name.  If error, print message and clear line. */
 {
     if (IsSym (Ident) == 0) {
 /* Get macro symbol name.  If error, print message and clear line. */
 {
     if (IsSym (Ident) == 0) {
-       PPError (ERR_IDENT_EXPECTED);
+       PPError ("Identifier expected");
        ClearLine ();
        return 0;
     } else {
        ClearLine ();
        return 0;
     } else {
@@ -242,7 +243,7 @@ static int MacroCall (Macro* M)
     /* Expect an argument list */
     SkipBlank ();
     if (CurC != '(') {
     /* Expect an argument list */
     SkipBlank ();
     if (CurC != '(') {
-       PPError (ERR_ILLEGAL_MACRO_CALL);
+       PPError ("Illegal macro call");
        return 0;
     }
 
        return 0;
     }
 
@@ -315,7 +316,7 @@ static int MacroCall (Macro* M)
 
     /* Compare formal argument count with actual */
     if (M->ArgCount != ArgCount) {
 
     /* Compare formal argument count with actual */
     if (M->ArgCount != ArgCount) {
-       PPError (ERR_MACRO_ARGCOUNT);
+       PPError ("Macro argument count mismatch");
        /* Be sure to make enough empty arguments available */
        while (ArgCount < M->ArgCount) {
            M->ActualArgs [ArgCount++] = "";
        /* Be sure to make enough empty arguments available */
        while (ArgCount < M->ArgCount) {
            M->ActualArgs [ArgCount++] = "";
@@ -395,7 +396,7 @@ static void addmac (void)
 
        /* Check for a right paren and eat it if we find one */
        if (CurC != ')') {
 
        /* Check for a right paren and eat it if we find one */
        if (CurC != ')') {
-                   PPError (ERR_RPAREN_EXPECTED);
+                   PPError ("`)' expected");
            ClearLine ();
            return;
        }
            ClearLine ();
            return;
        }
@@ -421,7 +422,7 @@ static void addmac (void)
      */
     if (Existing) {
        if (MacroCmp (M, Existing) != 0) {
      */
     if (Existing) {
        if (MacroCmp (M, Existing) != 0) {
-           PPError (ERR_MACRO_REDEF);
+           PPError ("Macro redefinition is not identical");
        }
     }
 }
        }
     }
 }
@@ -465,7 +466,7 @@ static int Pass1 (const char* From, char* To)
                    SkipBlank();
                }
                if (!IsIdent (CurC)) {
                    SkipBlank();
                }
                if (!IsIdent (CurC)) {
-                   PPError (ERR_IDENT_EXPECTED);
+                   PPError ("Identifier expected");
                    *mptr++ = '0';
                } else {
                    SymName (Ident);
                    *mptr++ = '0';
                } else {
                    SymName (Ident);
@@ -473,7 +474,7 @@ static int Pass1 (const char* From, char* To)
                    if (HaveParen) {
                        SkipBlank();
                        if (CurC != ')') {
                    if (HaveParen) {
                        SkipBlank();
                        if (CurC != ')') {
-                           PPError (ERR_RPAREN_EXPECTED);
+                           PPError ("`)' expected");
                        } else {
                            NextChar ();
                        }
                        } else {
                            NextChar ();
                        }
@@ -701,7 +702,7 @@ static void doinclude (void)
                    break;
 
                default:
                    break;
 
                default:
-                   PPError (ERR_INCLUDE_LTERM_EXPECTED);
+                   PPError ("`\"' or `<' expected");
                    goto Done;
     }
     NextChar ();
                    goto Done;
     }
     NextChar ();
@@ -719,7 +720,7 @@ static void doinclude (void)
     /* Check if we got a terminator */
     if (CurC != RTerm) {
                /* No terminator found */
     /* Check if we got a terminator */
     if (CurC != RTerm) {
                /* No terminator found */
-               PPError (ERR_INCLUDE_RTERM_EXPECTED);
+               PPError ("Missing terminator or file name too long");
                goto Done;
     }
 
                goto Done;
     }
 
@@ -740,9 +741,9 @@ static void doerror (void)
 {
     SkipBlank ();
     if (CurC == '\0') {
 {
     SkipBlank ();
     if (CurC == '\0') {
-       PPError (ERR_INVALID_USER_ERROR);
+       PPError ("Invalid #error directive");
     } else {
     } else {
-        PPError (ERR_USER_ERROR, lptr);
+        PPError ("#error: %s", lptr);
     }
 
     /* clear rest of line */
     }
 
     /* clear rest of line */
@@ -818,7 +819,7 @@ void Preprocess (void)
                        continue;
                    }
                    if (!IsSym (Directive)) {
                        continue;
                    }
                    if (!IsSym (Directive)) {
-                       PPError (ERR_CPP_DIRECTIVE_EXPECTED);
+                       PPError ("Preprocessor directive expected");
                        ClearLine ();
                    } else {
                        switch (searchtok (Directive, pre_toks)) {
                        ClearLine ();
                    } else {
                        switch (searchtok (Directive, pre_toks)) {
@@ -836,7 +837,7 @@ void Preprocess (void)
                                    }
                                    s_ifdef[i_ifdef] ^= 2;
                                } else {
                                    }
                                    s_ifdef[i_ifdef] ^= 2;
                                } else {
-                                   PPError (ERR_UNEXPECTED_CPP_ELSE);
+                                   PPError ("Unexpected `#else'");
                                }
                                break;
 
                                }
                                break;
 
@@ -844,7 +845,7 @@ void Preprocess (void)
                                if (i_ifdef >= 0) {
                                    Skip = s_ifdef[i_ifdef--] & 1;
                                } else {
                                if (i_ifdef >= 0) {
                                    Skip = s_ifdef[i_ifdef--] & 1;
                                } else {
-                                   PPError (ERR_UNEXPECTED_CPP_ENDIF);
+                                   PPError ("Unexpected `#endif'");
                                }
                                break;
 
                                }
                                break;
 
@@ -875,7 +876,7 @@ void Preprocess (void)
                            case PP_LINE:
                        /* Not allowed in strict ANSI mode */
                        if (ANSI) {
                            case PP_LINE:
                        /* Not allowed in strict ANSI mode */
                        if (ANSI) {
-                           PPError (ERR_CPP_DIRECTIVE_EXPECTED);
+                           PPError ("Preprocessor directive expected");
                            ClearLine ();
                        }
                        break;
                            ClearLine ();
                        }
                        break;
@@ -896,7 +897,7 @@ void Preprocess (void)
                        break;
 
                    default:
                        break;
 
                    default:
-                       PPError (ERR_CPP_DIRECTIVE_EXPECTED);
+                       PPError ("Preprocessor directive expected");
                        ClearLine ();
                }
            }
                        ClearLine ();
                }
            }
@@ -904,7 +905,7 @@ void Preprocess (void)
        }
        if (NextLine () == 0) {
            if (i_ifdef >= 0) {
        }
        if (NextLine () == 0) {
            if (i_ifdef >= 0) {
-               PPError (ERR_CPP_ENDIF_EXPECTED);
+               PPError ("`#endif' expected");
            }
            return;
        }
            }
            return;
        }
index 5249b71342122a72a73f98d6a423002e5e347cb8..ae339ed9dd1b0536694572de152f999583248adc 100644 (file)
@@ -192,7 +192,7 @@ int IsSym (char *s)
 static void unknown (char C)
 /* Error message for unknown character */
 {
 static void unknown (char C)
 /* Error message for unknown character */
 {
-    Error (ERR_INVALID_CHAR, C);
+    MError ("Invalid input character with code %02X", C & 0xFF);
     NextChar ();                       /* Skip */
 }
 
     NextChar ();                       /* Skip */
 }
 
@@ -350,7 +350,7 @@ static void StringConst (void)
 
        while (CurC != '\"') {
            if (CurC == '\0') {
 
        while (CurC != '\"') {
            if (CurC == '\0') {
-               Error (ERR_UNEXPECTED_NEWLINE);
+               MError ("Unexpected newline");
                break;
            }
            AddLiteralChar (ParseChar ());
                break;
            }
            AddLiteralChar (ParseChar ());
@@ -458,7 +458,7 @@ void NextToken (void)
             * warning.
             */
                    if (k <= 0xFFFF && (types & IT_UINT) == 0 && !HaveSuffix) {
             * warning.
             */
                    if (k <= 0xFFFF && (types & IT_UINT) == 0 && !HaveSuffix) {
-               Warning (WARN_CONSTANT_IS_LONG);
+               Warning ("Constant is long");
            }
        }
        if (k > 0xFFFF) {
            }
        }
        if (k > 0xFFFF) {
@@ -754,7 +754,7 @@ void NextToken (void)
            } while (CurC == ' ');
            if (!IsSym (token) || strcmp (token, "pragma") != 0) {
                /* OOPS - should not happen */
            } while (CurC == ' ');
            if (!IsSym (token) || strcmp (token, "pragma") != 0) {
                /* OOPS - should not happen */
-               Error (ERR_CPP_DIRECTIVE_EXPECTED);
+               MError ("Preprocessor directive expected");
            }
            nxttok = TOK_PRAGMA;
            break;
            }
            nxttok = TOK_PRAGMA;
            break;
index 496843c2fc1b8dcdd35d075f10cf26fd0aaf947e..2d1d0ea8c58b223e57a22f3759db65545993d013 100644 (file)
@@ -13,7 +13,7 @@
 
 /* common */
 #include "xmalloc.h"
 
 /* common */
 #include "xmalloc.h"
-         
+
 /* cc65 */
 #include "asmcode.h"
 #include "asmlabel.h"
 /* cc65 */
 #include "asmcode.h"
 #include "asmlabel.h"
@@ -395,7 +395,7 @@ static void cascadeswitch (struct expent* eval)
 
     /* Check if we have any labels */
     if (lcount == 0) {
 
     /* Check if we have any labels */
     if (lcount == 0) {
-       Warning (WARN_NO_CASE_LABELS);
+       Warning ("No case labels");
     }
 
     /* Eat the closing curly brace */
     }
 
     /* Eat the closing curly brace */
@@ -451,7 +451,7 @@ static void tableswitch (struct expent* eval)
     while (curtok != TOK_RCURLY) {
        if (curtok == TOK_CASE || curtok == TOK_DEFAULT) {
            if (lcount >= CASE_MAX) {
     while (curtok != TOK_RCURLY) {
        if (curtok == TOK_CASE || curtok == TOK_DEFAULT) {
            if (lcount >= CASE_MAX) {
-                       Fatal (FAT_TOO_MANY_CASE_LABELS);
+                       Fatal ("Too many case labels");
            }
            label = GetLabel ();
            do {
            }
            label = GetLabel ();
            do {
@@ -481,7 +481,7 @@ static void tableswitch (struct expent* eval)
 
     /* Check if we have any labels */
     if (lcount == 0) {
 
     /* Check if we have any labels */
     if (lcount == 0) {
-       Warning (WARN_NO_CASE_LABELS);
+       Warning ("No case labels");
     }
 
     /* Eat the closing curly brace */
     }
 
     /* Eat the closing curly brace */
index 11a4252f49a43a3fa7ecbe57f203dd00e7817ee4..45af446abaf708f5e765da1d529dad7ab30e0df6 100644 (file)
@@ -165,9 +165,9 @@ static void CheckSymTable (SymTable* Tab)
            if (((Flags & SC_AUTO) || (Flags & SC_STATIC)) && (Flags & SC_EXTERN) == 0) {
                if ((Flags & SC_DEF) && !(Flags & SC_REF)) {
                    if (Flags & SC_PARAM) {
            if (((Flags & SC_AUTO) || (Flags & SC_STATIC)) && (Flags & SC_EXTERN) == 0) {
                if ((Flags & SC_DEF) && !(Flags & SC_REF)) {
                    if (Flags & SC_PARAM) {
-                       Warning (WARN_UNUSED_PARM, Entry->Name);
+                       Warning ("Parameter `%s' is never used", Entry->Name);
                    } else {
                    } else {
-                       Warning (WARN_UNUSED_ITEM, Entry->Name);
+                       Warning ("`%s' is defined but never used", Entry->Name);
                    }
                }
            }
                    }
                }
            }
@@ -179,7 +179,7 @@ static void CheckSymTable (SymTable* Tab)
                    Error (ERR_UNDEFINED_LABEL, Entry->Name);
                } else if ((Flags & SC_REF) == 0) {
                    /* Defined but not used */
                    Error (ERR_UNDEFINED_LABEL, Entry->Name);
                } else if ((Flags & SC_REF) == 0) {
                    /* Defined but not used */
-                   Warning (WARN_UNUSED_ITEM, Entry->Name);
+                   Warning ("`%s' is defined but never used", Entry->Name);
                }
            }
 
                }
            }