Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright (c) 2021-2024 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 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 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 taken 1 times.
✗ Branch 1 not taken.
|
1 | switch (errorType) { |
35 | 1 | case TOKENIZING_FAILED: | |
36 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | return "Tokenizing failed"; |
37 | } | ||
38 | − | return "Unknown error"; // GCOV_EXCL_LINE | |
39 | } | ||
40 | |||
41 | } // namespace spice::compiler | ||
42 |