GCC Code Coverage Report


src/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
11 / 11, 3 excl
100.0%
Branches:
-
-%
Functions:
4 / 4, 1 excl
100.0%

lexer/token.spice
Line Branch Exec Source
1 // Copyright (c) 2021-2026 ChilliBits. All rights reserved.
2
3 // Imports
4 import "@/reader/code-loc";
5
6 // Enums
7 public type TokenType enum {
8 INVALID = 0,
9 // Keyword tokens
10 TYPE_DOUBLE = 1,
11 TYPE_INT = 2,
12 TYPE_SHORT = 3,
13 TYPE_LONG = 4,
14 TYPE_BYTE = 5,
15 TYPE_CHAR = 6,
16 TYPE_STRING = 7,
17 TYPE_BOOL = 8,
18 TYPE_DYN = 9,
19 CONST = 10,
20 SIGNED = 11,
21 UNSIGNED = 12,
22 INLINE = 13,
23 PUBLIC = 14,
24 HEAP = 15,
25 COMPOSE = 16,
26 F = 17,
27 P = 18,
28 IF = 19,
29 ELSE = 20,
30 SWITCH = 21,
31 CASE = 22,
32 DEFAULT = 23,
33 ASSERT = 24,
34 FOR = 25,
35 FOREACH = 26,
36 DO = 27,
37 WHILE = 28,
38 IMPORT = 29,
39 BREAK = 30,
40 CONTINUE = 31,
41 FALLTHROUGH = 32,
42 RETURN = 33,
43 AS = 34,
44 STRUCT = 35,
45 INTERFACE = 36,
46 UNION = 37,
47 TYPE = 38,
48 ENUM = 39,
49 OPERATOR = 40,
50 ALIAS = 41,
51 UNSAFE = 42,
52 NIL = 43,
53 MAIN = 44,
54 EXT = 45,
55 CAST = 46,
56 TRUE = 47,
57 FALSE = 48,
58 // Operator tokens
59 LBRACE = 49,
60 RBRACE = 50,
61 LPAREN = 51,
62 RPAREN = 52,
63 LBRACKET = 53,
64 RBRACKET = 54,
65 LOGICAL_OR = 55,
66 LOGICAL_AND = 56,
67 BITWISE_OR = 57,
68 BITWISE_XOR = 58,
69 BITWISE_AND = 59,
70 PLUS_PLUS = 60,
71 MINUS_MINUS = 61,
72 PLUS_EQUAL = 62,
73 MINUS_EQUAL = 63,
74 MUL_EQUAL = 64,
75 DIV_EQUAL = 65,
76 REM_EQUAL = 66,
77 SHL_EQUAL = 67,
78 SHR_EQUAL = 68,
79 AND_EQUAL = 69,
80 OR_EQUAL = 70,
81 XOR_EQUAL = 71,
82 PLUS = 72,
83 MINUS = 73,
84 MUL = 74,
85 DIV = 75,
86 REM = 76,
87 NOT = 77,
88 BITWISE_NOT = 78,
89 GREATER = 79,
90 LESS = 80,
91 GREATER_EQUAL = 81,
92 LESS_EQUAL = 82,
93 SHL = 83,
94 SHR = 84,
95 EQUAL = 85,
96 NOT_EQUAL = 86,
97 ASSIGN = 87,
98 QUESTION_MARK = 88,
99 SEMICOLON = 89,
100 COLON = 90,
101 COMMA = 91,
102 DOT = 92,
103 ARROW = 93,
104 SCOPE_ACCESS = 94,
105 ELLIPSIS = 95,
106 FCT_ATTR_PREAMBLE = 96,
107 MOD_ATTR_PREAMBLE = 97,
108 // Regex tokens
109 DOUBLE_LIT = 98,
110 INT_LIT = 99,
111 SHORT_LIT = 100,
112 LONG_LIT = 101,
113 CHAR_LIT = 102,
114 STRING_LIT = 103,
115 IDENTIFIER = 104,
116 TYPE_IDENTIFIER = 105,
117 // Skipped tokens
118 DOC_COMMENT = 106,
119 BLOCK_COMMENT = 107,
120 LINE_COMMENT = 108,
121 EOF = 109
122 }
123
124 7991461 public type Token struct {
125 public TokenType tokenType
126 public String text
127 public CodeLoc codeLoc
128 3981853 public unsigned long startOffset = 0l // Offset of the first char of the token within the source code
129 3981853 public unsigned long endOffset = 0l // Offset after the last char of the token within the source code
130 }
131
132 − public p Token.ctor(TokenType tokenType) { // LCOV_EXCL_LINE - only used in error case
133 − this.tokenType = tokenType; // LCOV_EXCL_LINE - only used in error case
134 − } // LCOV_EXCL_LINE - only used in error case
135
136 2663887 public p Token.ctor(TokenType tokenType, const String& text, const CodeLoc& codeLoc) {
137 2663887 this.tokenType = tokenType;
138 2663887 this.text = text;
139 2663887 this.codeLoc = codeLoc;
140 2663887 }
141
142 1317966 public p Token.ctor(TokenType tokenType, string text, const CodeLoc& codeLoc) {
143 1317966 this.ctor(tokenType, String(text), codeLoc);
144 1317966 }
145