xref: /aosp_15_r20/external/angle/src/compiler/preprocessor/DiagnosticsBase.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2012 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker 
7*8975f5c5SAndroid Build Coastguard Worker #ifndef COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
8*8975f5c5SAndroid Build Coastguard Worker #define COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include <string>
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker namespace angle
13*8975f5c5SAndroid Build Coastguard Worker {
14*8975f5c5SAndroid Build Coastguard Worker 
15*8975f5c5SAndroid Build Coastguard Worker namespace pp
16*8975f5c5SAndroid Build Coastguard Worker {
17*8975f5c5SAndroid Build Coastguard Worker 
18*8975f5c5SAndroid Build Coastguard Worker struct SourceLocation;
19*8975f5c5SAndroid Build Coastguard Worker 
20*8975f5c5SAndroid Build Coastguard Worker // Base class for reporting diagnostic messages.
21*8975f5c5SAndroid Build Coastguard Worker // Derived classes are responsible for formatting and printing the messages.
22*8975f5c5SAndroid Build Coastguard Worker class Diagnostics
23*8975f5c5SAndroid Build Coastguard Worker {
24*8975f5c5SAndroid Build Coastguard Worker   public:
25*8975f5c5SAndroid Build Coastguard Worker     enum ID
26*8975f5c5SAndroid Build Coastguard Worker     {
27*8975f5c5SAndroid Build Coastguard Worker         PP_ERROR_BEGIN,
28*8975f5c5SAndroid Build Coastguard Worker         PP_INTERNAL_ERROR,
29*8975f5c5SAndroid Build Coastguard Worker         PP_OUT_OF_MEMORY,
30*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_CHARACTER,
31*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_NUMBER,
32*8975f5c5SAndroid Build Coastguard Worker         PP_INTEGER_OVERFLOW,
33*8975f5c5SAndroid Build Coastguard Worker         PP_FLOAT_OVERFLOW,
34*8975f5c5SAndroid Build Coastguard Worker         PP_TOKEN_TOO_LONG,
35*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_EXPRESSION,
36*8975f5c5SAndroid Build Coastguard Worker         PP_DIVISION_BY_ZERO,
37*8975f5c5SAndroid Build Coastguard Worker         PP_EOF_IN_COMMENT,
38*8975f5c5SAndroid Build Coastguard Worker         PP_UNEXPECTED_TOKEN,
39*8975f5c5SAndroid Build Coastguard Worker         PP_DIRECTIVE_INVALID_NAME,
40*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_NAME_RESERVED,
41*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_REDEFINED,
42*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_PREDEFINED_REDEFINED,
43*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_PREDEFINED_UNDEFINED,
44*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_UNTERMINATED_INVOCATION,
45*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_UNDEFINED_WHILE_INVOKED,
46*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_TOO_FEW_ARGS,
47*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_TOO_MANY_ARGS,
48*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_DUPLICATE_PARAMETER_NAMES,
49*8975f5c5SAndroid Build Coastguard Worker         PP_MACRO_INVOCATION_CHAIN_TOO_DEEP,
50*8975f5c5SAndroid Build Coastguard Worker         PP_CONDITIONAL_ENDIF_WITHOUT_IF,
51*8975f5c5SAndroid Build Coastguard Worker         PP_CONDITIONAL_ELSE_WITHOUT_IF,
52*8975f5c5SAndroid Build Coastguard Worker         PP_CONDITIONAL_ELSE_AFTER_ELSE,
53*8975f5c5SAndroid Build Coastguard Worker         PP_CONDITIONAL_ELIF_WITHOUT_IF,
54*8975f5c5SAndroid Build Coastguard Worker         PP_CONDITIONAL_ELIF_AFTER_ELSE,
55*8975f5c5SAndroid Build Coastguard Worker         PP_CONDITIONAL_UNTERMINATED,
56*8975f5c5SAndroid Build Coastguard Worker         PP_CONDITIONAL_UNEXPECTED_TOKEN,
57*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_EXTENSION_NAME,
58*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_EXTENSION_BEHAVIOR,
59*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_EXTENSION_DIRECTIVE,
60*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_VERSION_NUMBER,
61*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_VERSION_DIRECTIVE,
62*8975f5c5SAndroid Build Coastguard Worker         PP_VERSION_NOT_FIRST_STATEMENT,
63*8975f5c5SAndroid Build Coastguard Worker         PP_VERSION_NOT_FIRST_LINE_ESSL3,
64*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_LINE_NUMBER,
65*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_FILE_NUMBER,
66*8975f5c5SAndroid Build Coastguard Worker         PP_INVALID_LINE_DIRECTIVE,
67*8975f5c5SAndroid Build Coastguard Worker     // This is just a warning on CHROME OS http://anglebug.com/42262661
68*8975f5c5SAndroid Build Coastguard Worker #if !defined(ANGLE_PLATFORM_CHROMEOS)
69*8975f5c5SAndroid Build Coastguard Worker         PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1,
70*8975f5c5SAndroid Build Coastguard Worker #endif
71*8975f5c5SAndroid Build Coastguard Worker         PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL3,
72*8975f5c5SAndroid Build Coastguard Worker         PP_UNDEFINED_SHIFT,
73*8975f5c5SAndroid Build Coastguard Worker         PP_TOKENIZER_ERROR,
74*8975f5c5SAndroid Build Coastguard Worker         PP_ERROR_END,
75*8975f5c5SAndroid Build Coastguard Worker 
76*8975f5c5SAndroid Build Coastguard Worker         PP_WARNING_BEGIN,
77*8975f5c5SAndroid Build Coastguard Worker         PP_EOF_IN_DIRECTIVE,
78*8975f5c5SAndroid Build Coastguard Worker         PP_UNRECOGNIZED_PRAGMA,
79*8975f5c5SAndroid Build Coastguard Worker #if defined(ANGLE_PLATFORM_CHROMEOS)
80*8975f5c5SAndroid Build Coastguard Worker         PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1,
81*8975f5c5SAndroid Build Coastguard Worker #endif
82*8975f5c5SAndroid Build Coastguard Worker         PP_NON_PP_TOKEN_BEFORE_EXTENSION_WEBGL,
83*8975f5c5SAndroid Build Coastguard Worker         PP_WARNING_MACRO_NAME_RESERVED,
84*8975f5c5SAndroid Build Coastguard Worker         PP_WARNING_END
85*8975f5c5SAndroid Build Coastguard Worker     };
86*8975f5c5SAndroid Build Coastguard Worker 
87*8975f5c5SAndroid Build Coastguard Worker     virtual ~Diagnostics();
88*8975f5c5SAndroid Build Coastguard Worker 
89*8975f5c5SAndroid Build Coastguard Worker     void report(ID id, const SourceLocation &loc, const std::string &text);
90*8975f5c5SAndroid Build Coastguard Worker 
91*8975f5c5SAndroid Build Coastguard Worker   protected:
92*8975f5c5SAndroid Build Coastguard Worker     bool isError(ID id);
93*8975f5c5SAndroid Build Coastguard Worker     const char *message(ID id);
94*8975f5c5SAndroid Build Coastguard Worker 
95*8975f5c5SAndroid Build Coastguard Worker     virtual void print(ID id, const SourceLocation &loc, const std::string &text) = 0;
96*8975f5c5SAndroid Build Coastguard Worker };
97*8975f5c5SAndroid Build Coastguard Worker 
98*8975f5c5SAndroid Build Coastguard Worker }  // namespace pp
99*8975f5c5SAndroid Build Coastguard Worker 
100*8975f5c5SAndroid Build Coastguard Worker }  // namespace angle
101*8975f5c5SAndroid Build Coastguard Worker 
102*8975f5c5SAndroid Build Coastguard Worker #endif  // COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
103