Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 //
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
7 #ifndef COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
8 #define COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
10 #include <string>
12 // Windows.h #defines ERROR.
13 #ifdef ERROR
14 #undef ERROR
15 #endif
17 namespace pp
18 {
20 struct SourceLocation;
22 // Base class for reporting diagnostic messages.
23 // Derived classes are responsible for formatting and printing the messages.
24 class Diagnostics
25 {
26 public:
27 enum Severity
28 {
29 ERROR,
30 WARNING
31 };
32 enum ID
33 {
34 ERROR_BEGIN,
35 INTERNAL_ERROR,
36 OUT_OF_MEMORY,
37 INVALID_CHARACTER,
38 INVALID_NUMBER,
39 INTEGER_OVERFLOW,
40 FLOAT_OVERFLOW,
41 TOKEN_TOO_LONG,
42 INVALID_EXPRESSION,
43 DIVISION_BY_ZERO,
44 EOF_IN_COMMENT,
45 UNEXPECTED_TOKEN,
46 DIRECTIVE_INVALID_NAME,
47 MACRO_NAME_RESERVED,
48 MACRO_REDEFINED,
49 MACRO_PREDEFINED_REDEFINED,
50 MACRO_PREDEFINED_UNDEFINED,
51 MACRO_UNTERMINATED_INVOCATION,
52 MACRO_TOO_FEW_ARGS,
53 MACRO_TOO_MANY_ARGS,
54 CONDITIONAL_ENDIF_WITHOUT_IF,
55 CONDITIONAL_ELSE_WITHOUT_IF,
56 CONDITIONAL_ELSE_AFTER_ELSE,
57 CONDITIONAL_ELIF_WITHOUT_IF,
58 CONDITIONAL_ELIF_AFTER_ELSE,
59 CONDITIONAL_UNTERMINATED,
60 INVALID_EXTENSION_NAME,
61 INVALID_EXTENSION_BEHAVIOR,
62 INVALID_EXTENSION_DIRECTIVE,
63 INVALID_VERSION_NUMBER,
64 INVALID_VERSION_DIRECTIVE,
65 VERSION_NOT_FIRST_STATEMENT,
66 INVALID_LINE_NUMBER,
67 INVALID_FILE_NUMBER,
68 INVALID_LINE_DIRECTIVE,
69 ERROR_END,
71 WARNING_BEGIN,
72 EOF_IN_DIRECTIVE,
73 CONDITIONAL_UNEXPECTED_TOKEN,
74 UNRECOGNIZED_PRAGMA,
75 WARNING_END
76 };
78 virtual ~Diagnostics();
80 void report(ID id, const SourceLocation& loc, const std::string& text);
82 protected:
83 Severity severity(ID id);
84 std::string message(ID id);
86 virtual void print(ID id,
87 const SourceLocation& loc,
88 const std::string& text) = 0;
89 };
91 } // namespace pp
92 #endif // COMPILER_PREPROCESSOR_DIAGNOSTICS_H_