Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/compiler/preprocessor/DiagnosticsBase.h
1693 views
1
//
2
// Copyright 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
//
6
7
#ifndef COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
8
#define COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
9
10
#include <string>
11
12
namespace angle
13
{
14
15
namespace pp
16
{
17
18
struct SourceLocation;
19
20
// Base class for reporting diagnostic messages.
21
// Derived classes are responsible for formatting and printing the messages.
22
class Diagnostics
23
{
24
public:
25
enum ID
26
{
27
PP_ERROR_BEGIN,
28
PP_INTERNAL_ERROR,
29
PP_OUT_OF_MEMORY,
30
PP_INVALID_CHARACTER,
31
PP_INVALID_NUMBER,
32
PP_INTEGER_OVERFLOW,
33
PP_FLOAT_OVERFLOW,
34
PP_TOKEN_TOO_LONG,
35
PP_INVALID_EXPRESSION,
36
PP_DIVISION_BY_ZERO,
37
PP_EOF_IN_COMMENT,
38
PP_UNEXPECTED_TOKEN,
39
PP_DIRECTIVE_INVALID_NAME,
40
PP_MACRO_NAME_RESERVED,
41
PP_MACRO_REDEFINED,
42
PP_MACRO_PREDEFINED_REDEFINED,
43
PP_MACRO_PREDEFINED_UNDEFINED,
44
PP_MACRO_UNTERMINATED_INVOCATION,
45
PP_MACRO_UNDEFINED_WHILE_INVOKED,
46
PP_MACRO_TOO_FEW_ARGS,
47
PP_MACRO_TOO_MANY_ARGS,
48
PP_MACRO_DUPLICATE_PARAMETER_NAMES,
49
PP_MACRO_INVOCATION_CHAIN_TOO_DEEP,
50
PP_CONDITIONAL_ENDIF_WITHOUT_IF,
51
PP_CONDITIONAL_ELSE_WITHOUT_IF,
52
PP_CONDITIONAL_ELSE_AFTER_ELSE,
53
PP_CONDITIONAL_ELIF_WITHOUT_IF,
54
PP_CONDITIONAL_ELIF_AFTER_ELSE,
55
PP_CONDITIONAL_UNTERMINATED,
56
PP_CONDITIONAL_UNEXPECTED_TOKEN,
57
PP_INVALID_EXTENSION_NAME,
58
PP_INVALID_EXTENSION_BEHAVIOR,
59
PP_INVALID_EXTENSION_DIRECTIVE,
60
PP_INVALID_VERSION_NUMBER,
61
PP_INVALID_VERSION_DIRECTIVE,
62
PP_VERSION_NOT_FIRST_STATEMENT,
63
PP_VERSION_NOT_FIRST_LINE_ESSL3,
64
PP_INVALID_LINE_NUMBER,
65
PP_INVALID_FILE_NUMBER,
66
PP_INVALID_LINE_DIRECTIVE,
67
// This is just a warning on CHROME OS http://anglebug.com/4023
68
#if !defined(ANGLE_PLATFORM_CHROMEOS)
69
PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1,
70
#endif
71
PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL3,
72
PP_UNDEFINED_SHIFT,
73
PP_TOKENIZER_ERROR,
74
PP_ERROR_END,
75
76
PP_WARNING_BEGIN,
77
PP_EOF_IN_DIRECTIVE,
78
PP_UNRECOGNIZED_PRAGMA,
79
#if defined(ANGLE_PLATFORM_CHROMEOS)
80
PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1,
81
#endif
82
PP_NON_PP_TOKEN_BEFORE_EXTENSION_WEBGL,
83
PP_WARNING_MACRO_NAME_RESERVED,
84
PP_WARNING_END
85
};
86
87
virtual ~Diagnostics();
88
89
void report(ID id, const SourceLocation &loc, const std::string &text);
90
91
protected:
92
bool isError(ID id);
93
const char *message(ID id);
94
95
virtual void print(ID id, const SourceLocation &loc, const std::string &text) = 0;
96
};
97
98
} // namespace pp
99
100
} // namespace angle
101
102
#endif // COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
103
104