OSDN Git Service

Increment the version number.
[android-x86/external-swiftshader.git] / src / Radiance / compiler / preprocessor / Diagnostics.cpp
1 //\r
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.\r
3 // Use of this source code is governed by a BSD-style license that can be\r
4 // found in the LICENSE file.\r
5 //\r
6 \r
7 #include "Diagnostics.h"\r
8 \r
9 #include <cassert>\r
10 \r
11 namespace pp\r
12 {\r
13 \r
14 Diagnostics::~Diagnostics()\r
15 {\r
16 }\r
17 \r
18 void Diagnostics::report(ID id,\r
19                          const SourceLocation& loc,\r
20                          const std::string& text)\r
21 {\r
22     // TODO(alokp): Keep a count of errors and warnings.\r
23     print(id, loc, text);\r
24 }\r
25 \r
26 Diagnostics::Severity Diagnostics::severity(ID id)\r
27 {\r
28     if ((id > ERROR_BEGIN) && (id < ERROR_END))\r
29         return PP_ERROR;\r
30 \r
31     if ((id > WARNING_BEGIN) && (id < WARNING_END))\r
32         return PP_WARNING;\r
33 \r
34     assert(false);\r
35     return PP_ERROR;\r
36 }\r
37 \r
38 std::string Diagnostics::message(ID id)\r
39 {\r
40     switch (id)\r
41     {\r
42       // Errors begin.\r
43       case INTERNAL_ERROR:\r
44           return "internal error";\r
45       case OUT_OF_MEMORY:\r
46           return "out of memory";\r
47       case INVALID_CHARACTER:\r
48           return "invalid character";\r
49       case INVALID_NUMBER:\r
50           return "invalid number";\r
51       case INTEGER_OVERFLOW:\r
52           return "integer overflow";\r
53       case FLOAT_OVERFLOW:\r
54           return "float overflow";\r
55       case TOKEN_TOO_LONG:\r
56           return "token too long";\r
57       case INVALID_EXPRESSION:\r
58           return "invalid expression";\r
59       case DIVISION_BY_ZERO:\r
60           return "division by zero";\r
61       case EOF_IN_COMMENT:\r
62           return "unexpected end of file found in comment";\r
63       case UNEXPECTED_TOKEN:\r
64           return "unexpected token";\r
65       case DIRECTIVE_INVALID_NAME:\r
66           return "invalid directive name";\r
67       case MACRO_NAME_RESERVED:\r
68           return "macro name is reserved";\r
69       case MACRO_REDEFINED:\r
70           return "macro redefined";\r
71       case MACRO_PREDEFINED_REDEFINED:\r
72           return "predefined macro redefined";\r
73       case MACRO_PREDEFINED_UNDEFINED:\r
74           return "predefined macro undefined";\r
75       case MACRO_UNTERMINATED_INVOCATION:\r
76           return "unterminated macro invocation";\r
77       case MACRO_TOO_FEW_ARGS:\r
78           return "Not enough arguments for macro";\r
79       case MACRO_TOO_MANY_ARGS:\r
80           return "Too many arguments for macro";\r
81       case CONDITIONAL_ENDIF_WITHOUT_IF:\r
82           return "unexpected #endif found without a matching #if";\r
83       case CONDITIONAL_ELSE_WITHOUT_IF:\r
84           return "unexpected #else found without a matching #if";\r
85       case CONDITIONAL_ELSE_AFTER_ELSE:\r
86           return "unexpected #else found after another #else";\r
87       case CONDITIONAL_ELIF_WITHOUT_IF:\r
88           return "unexpected #elif found without a matching #if";\r
89       case CONDITIONAL_ELIF_AFTER_ELSE:\r
90           return "unexpected #elif found after #else";\r
91       case CONDITIONAL_UNTERMINATED:\r
92           return "unexpected end of file found in conditional block";\r
93       case INVALID_EXTENSION_NAME:\r
94           return "invalid extension name";\r
95       case INVALID_EXTENSION_BEHAVIOR:\r
96           return "invalid extension behavior";\r
97       case INVALID_EXTENSION_DIRECTIVE:\r
98           return "invalid extension directive";\r
99       case INVALID_VERSION_NUMBER:\r
100           return "invalid version number";\r
101       case INVALID_VERSION_DIRECTIVE:\r
102           return "invalid version directive";\r
103       case VERSION_NOT_FIRST_STATEMENT:\r
104         return "#version directive must occur before anything else, "\r
105                "except for comments and white space";\r
106       case INVALID_LINE_NUMBER:\r
107           return "invalid line number";\r
108       case INVALID_FILE_NUMBER:\r
109           return "invalid file number";\r
110       case INVALID_LINE_DIRECTIVE:\r
111           return "invalid line directive";\r
112       // Errors end.\r
113       // Warnings begin.\r
114       case EOF_IN_DIRECTIVE:\r
115           return "unexpected end of file found in directive";\r
116       case CONDITIONAL_UNEXPECTED_TOKEN:\r
117           return "unexpected token after conditional expression";\r
118       case UNRECOGNIZED_PRAGMA:\r
119           return "unrecognized pragma";\r
120       // Warnings end.\r
121       default:\r
122           assert(false);\r
123           return "";\r
124     }\r
125 }\r
126 \r
127 }  // namespace pp\r