Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright (c) 2021-2025 ChilliBits. All rights reserved. | ||
2 | |||
3 | #include "LexerError.h" | ||
4 | |||
5 | #include <util/CodeLoc.h> | ||
6 | |||
7 | namespace spice::compiler { | ||
8 | |||
9 | /** | ||
10 | * Constructor: Used in case that the exact code position where the error occurred is known | ||
11 | * | ||
12 | * @param codeLoc Code location where the error occurred | ||
13 | * @param type Type of the error | ||
14 | * @param message Error message suffix | ||
15 | */ | ||
16 | 1 | LexerError::LexerError(const CodeLoc &codeLoc, const LexerErrorType &type, const std::string &message) { | |
17 |
7/14✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→35) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→30) not taken.
✓ Branch 4 (6→7) taken 1 times.
✗ Branch 5 (6→28) not taken.
✓ Branch 6 (7→8) taken 1 times.
✗ Branch 7 (7→26) not taken.
✓ Branch 8 (8→9) taken 1 times.
✗ Branch 9 (8→24) not taken.
✓ Branch 10 (9→10) taken 1 times.
✗ Branch 11 (9→22) not taken.
✓ Branch 12 (10→11) taken 1 times.
✗ Branch 13 (10→20) not taken.
|
1 | errorMessage = "[Error|Lexer] " + codeLoc.toPrettyString() + ": " + getMessagePrefix(type) + ": " + message; |
18 | 1 | } | |
19 | |||
20 | /** | ||
21 | * Get the message for this particular error instance | ||
22 | * | ||
23 | * @return Error message in form of a char array | ||
24 | */ | ||
25 | 1 | const char *LexerError::what() const noexcept { return errorMessage.c_str(); } | |
26 | |||
27 | /** | ||
28 | * Get the prefix of the error message for a particular error | ||
29 | * | ||
30 | * @param errorType Type of the error | ||
31 | * @return Prefix string for the error type | ||
32 | */ | ||
33 | 1 | std::string LexerError::getMessagePrefix(LexerErrorType errorType) { | |
34 |
1/2✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→8) not taken.
|
1 | switch (errorType) { |
35 | 1 | case TOKENIZING_FAILED: | |
36 |
1/2✓ Branch 0 (5→6) taken 1 times.
✗ Branch 1 (5→14) not taken.
|
2 | return "Tokenizing failed"; |
37 | } | ||
38 | − | return "Unknown error"; // GCOV_EXCL_LINE | |
39 | } | ||
40 | |||
41 | } // namespace spice::compiler | ||
42 |