12c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org// 22c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 32c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org// Use of this source code is governed by a BSD-style license that can be 42c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org// found in the LICENSE file. 52c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org// 62c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 72c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org#ifndef COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ 82c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org#define COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ 92c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 102c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org#include <string> 112c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 122c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.orgnamespace pp 132c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org{ 142c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 152c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.orgstruct SourceLocation; 162c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 172c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org// Base class for reporting diagnostic messages. 182c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org// Derived classes are responsible for formatting and printing the messages. 192c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.orgclass Diagnostics 202c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org{ 212c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org public: 2246aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org enum Severity 2346aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org { 2446aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org ERROR, 2546aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org WARNING 2646aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org }; 272c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org enum ID 282c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org { 292c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org ERROR_BEGIN, 302c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org INTERNAL_ERROR, 312c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org OUT_OF_MEMORY, 322c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org INVALID_CHARACTER, 332c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org INVALID_NUMBER, 342e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org INTEGER_OVERFLOW, 352e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org FLOAT_OVERFLOW, 36c022c3affcb88e1dd5b746c5db1d171feac0f081alokp@chromium.org TOKEN_TOO_LONG, 372c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org INVALID_EXPRESSION, 382c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org DIVISION_BY_ZERO, 392c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org EOF_IN_COMMENT, 40e5dfefad46f2391500ee9168ee83bf98b258f240alokp@chromium.org UNEXPECTED_TOKEN, 41d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org DIRECTIVE_INVALID_NAME, 4298d04ec8e2db023e04818c4af97b5e613af3f55calokp@chromium.org MACRO_NAME_RESERVED, 4398d04ec8e2db023e04818c4af97b5e613af3f55calokp@chromium.org MACRO_REDEFINED, 44f3cdb460d1dde723815eecd006274a3da5d81099alokp@chromium.org MACRO_PREDEFINED_REDEFINED, 45f3cdb460d1dde723815eecd006274a3da5d81099alokp@chromium.org MACRO_PREDEFINED_UNDEFINED, 467fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org MACRO_UNTERMINATED_INVOCATION, 477fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org MACRO_TOO_FEW_ARGS, 487fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org MACRO_TOO_MANY_ARGS, 49d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org CONDITIONAL_ENDIF_WITHOUT_IF, 50d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org CONDITIONAL_ELSE_WITHOUT_IF, 51d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org CONDITIONAL_ELSE_AFTER_ELSE, 52d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org CONDITIONAL_ELIF_WITHOUT_IF, 53d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org CONDITIONAL_ELIF_AFTER_ELSE, 54d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org CONDITIONAL_UNTERMINATED, 557c884540ad7607a772b13b2ca7bc8f6b21574946alokp@chromium.org INVALID_EXTENSION_NAME, 567c884540ad7607a772b13b2ca7bc8f6b21574946alokp@chromium.org INVALID_EXTENSION_BEHAVIOR, 577c884540ad7607a772b13b2ca7bc8f6b21574946alokp@chromium.org INVALID_EXTENSION_DIRECTIVE, 587c884540ad7607a772b13b2ca7bc8f6b21574946alokp@chromium.org INVALID_VERSION_NUMBER, 597c884540ad7607a772b13b2ca7bc8f6b21574946alokp@chromium.org INVALID_VERSION_DIRECTIVE, 60d0d9f87ac02955ae496b5cc51d5dffb693b31a87alokp@chromium.org VERSION_NOT_FIRST_STATEMENT, 6146aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org INVALID_LINE_NUMBER, 6246aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org INVALID_FILE_NUMBER, 6346aa13d87fdc2da6d36fd14f678f204f8f98ae41alokp@chromium.org INVALID_LINE_DIRECTIVE, 642c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org ERROR_END, 652c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 662c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org WARNING_BEGIN, 67390209aee7a0f027e772ec13950b7e6b8ef59dadalokp@chromium.org EOF_IN_DIRECTIVE, 68d39ec4c15d6e656e027d7ded7ffceaafa0608e89alokp@chromium.org CONDITIONAL_UNEXPECTED_TOKEN, 6936124de8ce9855c1cfdfb6529b47822e12123274alokp@chromium.org UNRECOGNIZED_PRAGMA, 702c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org WARNING_END 712c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org }; 722c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 73964b7194a38a2b04e2b483dc5a8c12426b1a202falokp@chromium.org virtual ~Diagnostics(); 74964b7194a38a2b04e2b483dc5a8c12426b1a202falokp@chromium.org 752c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org void report(ID id, const SourceLocation& loc, const std::string& text); 762c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 772c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org protected: 782c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org Severity severity(ID id); 796b495719afd7d340dadc7440ed55e21732dd92d3alokp@chromium.org std::string message(ID id); 802c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 812c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org virtual void print(ID id, 822c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org const SourceLocation& loc, 832c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org const std::string& text) = 0; 842c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org}; 852c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org 862c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org} // namespace pp 872c958eefb71f1b939dbda4477df3f0c8fa47a7b8alokp@chromium.org#endif // COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ 88