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