GCC Code Coverage Report


Directory: ../
File: src/exception/CompilerError.h
Date: 2025-02-05 01:09:36
Exec Total Coverage
Lines: 0 0 -%
Functions: 0 0 -%
Branches: 0 0 -%

Line Branch Exec Source
1 // Copyright (c) 2021-2025 ChilliBits. All rights reserved.
2
3 #pragma once
4
5 #include <exception>
6 #include <string>
7
8 #include <Token.h>
9
10 namespace spice::compiler {
11
12 // Forward declarations
13 struct CodeLoc;
14
15 enum CompilerErrorType : uint8_t {
16 UNRESOLVED_SOFT_ERRORS,
17 SOURCE_FILE_NOT_FOUND,
18 CANT_OPEN_OUTPUT_FILE,
19 WRONG_OUTPUT_TYPE,
20 INTERNAL_ERROR,
21 IO_ERROR,
22 STD_NOT_FOUND,
23 BOOTSTRAP_NOT_FOUND,
24 UNHANDLED_BRANCH,
25 TYPE_CHECKER_RUNS_EXCEEDED,
26 TARGET_NOT_AVAILABLE,
27 OOM,
28 INVALID_FUNCTION,
29 INVALID_MODULE
30 };
31
32 /**
33 * Custom exception for errors, occurring in the general context of the compiler
34 */
35 class CompilerError final : public std::exception {
36 public:
37 // Constructors
38 CompilerError(const CompilerErrorType &type, const std::string &message);
39 CompilerError(const CodeLoc &codeLoc, const CompilerErrorType &type, const std::string &message);
40
41 // Public methods
42 [[nodiscard]] const char *what() const noexcept override;
43 [[nodiscard]] static std::string getMessagePrefix(CompilerErrorType errorType);
44
45 // Public members
46 std::string errorMessage;
47 };
48
49 } // namespace spice::compiler
50