2828 * prettied up interface to print_objects_when_running
2929 */
3030
31- #include <sc_export.h>
32- #include "basic.h" /* get basic definitions */
3331#include <setjmp.h>
3432
35- /*************/
36- /* constants */
37- /*************/
38-
39- #define ERROR_none (Error)NULL
40- #define ERROR_MAX 100
33+ #include "sc_export.h"
34+ #include "basic.h" /* get basic definitions */
4135
4236/*****************/
4337/* packages used */
4640#include "alloc.h"
4741#include "symbol.h"
4842
43+ enum ErrorCode {
44+ /* dict.c */
45+ DUPLICATE_DECL = 1 ,
46+ DUPLICATE_DECL_DIFF_FILE ,
47+ /* error.c */
48+ SUBORDINATE_FAILED ,
49+ SYNTAX_EXPECTING ,
50+ /* expr.c */
51+ INTEGER_EXPRESSION_EXPECTED ,
52+ INTERNAL_UNRECOGNISED_OP_IN_EXPRESOLVE ,
53+ ATTRIBUTE_REF_ON_AGGREGATE ,
54+ ATTRIBUTE_REF_FROM_NON_ENTITY ,
55+ INDEXING_ILLEGAL ,
56+ WARN_INDEXING_MIXED ,
57+ ENUM_NO_SUCH_ITEM ,
58+ GROUP_REF_NO_SUCH_ENTITY ,
59+ GROUP_REF_UNEXPECTED_TYPE ,
60+ IMPLICIT_DOWNCAST ,
61+ AMBIG_IMPLICIT_DOWNCAST ,
62+ /* express.c */
63+ BAIL_OUT ,
64+ SYNTAX ,
65+ REF_NONEXISTENT ,
66+ TILDE_EXPANSION_FAILED ,
67+ SCHEMA_NOT_IN_OWN_SCHEMA_FILE ,
68+ UNLABELLED_PARAM_TYPE ,
69+ FILE_UNREADABLE ,
70+ FILE_UNWRITABLE ,
71+ WARN_UNSUPPORTED_LANG_FEAT ,
72+ WARN_SMALL_REAL ,
73+ /* lexact.c */
74+ INCLUDE_FILE ,
75+ UNMATCHED_CLOSE_COMMENT ,
76+ UNMATCHED_OPEN_COMMENT ,
77+ UNTERMINATED_STRING ,
78+ ENCODED_STRING_BAD_DIGIT ,
79+ ENCODED_STRING_BAD_COUNT ,
80+ BAD_IDENTIFIER ,
81+ UNEXPECTED_CHARACTER ,
82+ NONASCII_CHAR ,
83+ /* linklist.c */
84+ EMPTY_LIST ,
85+ /* resolve.c */
86+ UNDEFINED ,
87+ UNDEFINED_ATTR ,
88+ UNDEFINED_TYPE ,
89+ UNDEFINED_SCHEMA ,
90+ UNKNOWN_ATTR_IN_ENTITY ,
91+ UNKNOWN_SUBTYPE ,
92+ UNKNOWN_SUPERTYPE ,
93+ CIRCULAR_REFERENCE ,
94+ SUBSUPER_LOOP ,
95+ SUBSUPER_CONTINUATION ,
96+ SELECT_LOOP ,
97+ SELECT_CONTINUATION ,
98+ SUPERTYPE_RESOLVE ,
99+ SUBTYPE_RESOLVE ,
100+ NOT_A_TYPE ,
101+ FUNCALL_NOT_A_FUNCTION ,
102+ UNDEFINED_FUNC ,
103+ EXPECTED_PROC ,
104+ NO_SUCH_PROCEDURE ,
105+ WRONG_ARG_COUNT ,
106+ QUERY_REQUIRES_AGGREGATE ,
107+ SELF_IS_UNKNOWN ,
108+ INVERSE_BAD_ENTITY ,
109+ INVERSE_BAD_ATTR ,
110+ MISSING_SUPERTYPE ,
111+ TYPE_IS_ENTITY ,
112+ AMBIGUOUS_ATTR ,
113+ AMBIGUOUS_GROUP ,
114+ OVERLOADED_ATTR ,
115+ REDECL_NO_SUCH_ATTR ,
116+ REDECL_NO_SUCH_SUPERTYPE ,
117+ MISSING_SELF ,
118+ FN_SKIP_BRANCH ,
119+ CASE_SKIP_LABEL ,
120+ UNIQUE_QUAL_REDECL ,
121+ /* type.c */
122+ CORRUPTED_TYPE ,
123+ UNDEFINED_TAG ,
124+ /* exppp.c */
125+ SELECT_EMPTY ,
126+ };
127+
128+ /*************/
129+ /* constants */
130+ /*************/
131+
132+ #define ERROR_none (Error)NULL
133+ #define ERROR_MAX 100
134+
49135/************/
50136/* typedefs */
51137/************/
52138
53- typedef enum {
54- SEVERITY_WARNING = 0 ,
55- SEVERITY_ERROR = 1 ,
56- SEVERITY_EXIT = 2 ,
57- SEVERITY_DUMP = 3 ,
58- SEVERITY_MAX = 4
59- } Severity ;
139+ enum Severity {
140+ SEVERITY_WARNING = 0 ,
141+ SEVERITY_ERROR ,
142+ SEVERITY_EXIT ,
143+ SEVERITY_DUMP ,
144+ SEVERITY_MAX
145+ };
60146
61147/***************************/
62148/* hidden type definitions */
63149/***************************/
64150
65- typedef struct Error_ {
66- bool enabled ;
67- Severity severity ;
68- char * message ;
69- int serial ; /* used to give each type of error a unique identifier */
70- } * Error ;
151+ struct Error_ {
152+ enum Severity severity ;
153+ const char * message ;
154+ const char * name ;
155+ bool override ;
156+ };
71157
72- typedef struct Error_Warning_ {
73- char * name ;
74- struct Linked_List_ * errors ;
75- } * Error_Warning ;
158+ typedef struct Error_ * Error ;
76159
77160/****************/
78161/* modules used */
@@ -89,10 +172,6 @@ extern SC_EXPRESS_EXPORT const char * current_filename;
89172extern SC_EXPRESS_EXPORT bool ERRORoccurred ;
90173
91174
92- extern SC_EXPRESS_EXPORT Error experrc ;
93- extern SC_EXPRESS_EXPORT Error ERROR_subordinate_failed ;
94- extern SC_EXPRESS_EXPORT Error ERROR_syntax_expecting ;
95-
96175/* all of these are 1 if true, 0 if false switches */
97176/* for debugging fedex */
98177extern SC_EXPRESS_EXPORT int ERRORdebugging ;
@@ -101,45 +180,15 @@ extern SC_EXPRESS_EXPORT int malloc_debug_resolve;
101180/* for debugging yacc/lex */
102181extern SC_EXPRESS_EXPORT int debug ;
103182
104- extern SC_EXPRESS_EXPORT struct Linked_List_ * ERRORwarnings ;
105- extern SC_EXPRESS_EXPORT struct freelist_head ERROR_OPT_fl ;
106-
107183extern SC_EXPRESS_EXPORT void ( * ERRORusage_function )( void );
108184
109- /******************************/
110- /* macro function definitions */
111- /******************************/
112-
113- #define ERROR_OPT_new () (struct Error_Warning_ *)ALLOC_new(&ERROR_OPT_fl)
114- #define ERROR_OPT_destroy (x ) ALLOC_destroy(&ERROR_OPT_fl,(Freelist *)x)
115-
116185/***********************/
117186/* function prototypes */
118187/***********************/
119188
120189extern SC_EXPRESS_EXPORT void ERROR_start_message_buffer ( void );
121190extern SC_EXPRESS_EXPORT void ERROR_flush_message_buffer ( void );
122191
123- /********************/
124- /* Inline functions */
125- /********************/
126-
127- static inline void ERRORdisable ( Error error ) {
128- if ( error != ERROR_none ) {
129- error -> enabled = false;
130- }
131- }
132-
133- static inline void ERRORenable ( Error error ) {
134- if ( error != ERROR_none ) {
135- error -> enabled = true;
136- }
137- }
138-
139- static inline bool ERRORis_enabled ( Error error ) {
140- return error -> enabled ;
141- }
142-
143192static inline void ERRORbuffer_messages ( bool flag ) {
144193 __ERROR_buffer_errors = flag ;
145194 if ( __ERROR_buffer_errors ) {
@@ -162,22 +211,21 @@ static inline void ERRORflush_messages( void ) {
162211/***********************/
163212
164213extern SC_EXPRESS_EXPORT void ERRORinitialize ( void );
165- extern SC_EXPRESS_EXPORT void ERRORinitialize_after_LIST ( void );
166214extern SC_EXPRESS_EXPORT void ERRORcleanup ( void );
167215extern SC_EXPRESS_EXPORT void ERRORnospace ( void );
168216extern SC_EXPRESS_EXPORT void ERRORabort ( int );
169- extern SC_EXPRESS_EXPORT Error ERRORcreate ( char * , Severity );
170- extern SC_EXPRESS_EXPORT void ERRORreport ( Error , ... );
171- extern SC_EXPRESS_EXPORT void ERRORdestroy ( Error );
217+ extern SC_EXPRESS_EXPORT void ERRORreport ( enum ErrorCode , ... );
172218
173219struct Symbol_ ; /* mention Symbol to avoid warning on following line */
174- extern SC_EXPRESS_EXPORT void ERRORreport_with_symbol ( Error , struct Symbol_ * , ... );
175- extern SC_EXPRESS_EXPORT void ERRORreport_with_line ( Error , int , ... );
220+ extern SC_EXPRESS_EXPORT void ERRORreport_with_symbol ( enum ErrorCode , struct Symbol_ * , ... );
221+ extern SC_EXPRESS_EXPORT void ERRORreport_with_line ( enum ErrorCode , int , ... );
176222
177- extern SC_EXPRESS_EXPORT void ERRORcreate_warning ( char * , Error );
178- extern SC_EXPRESS_EXPORT void ERRORset_warning ( char * , int );
179- extern SC_EXPRESS_EXPORT void ERRORset_all_warnings ( int );
223+ extern SC_EXPRESS_EXPORT void ERRORset_warning ( char * , bool );
224+ extern SC_EXPRESS_EXPORT void ERRORset_all_warnings ( bool );
180225extern SC_EXPRESS_EXPORT void ERRORsafe ( jmp_buf env );
181226extern SC_EXPRESS_EXPORT void ERRORunsafe ( void );
182227
228+ extern char * ERRORget_warnings_help (const char * prefix , const char * eol );
229+ extern bool ERRORis_enabled (enum ErrorCode errnum );
230+
183231#endif /* ERROR_H */
0 commit comments