• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

polserver / polserver / 29808310540

21 Jul 2026 06:50AM UTC coverage: 61.522% (+0.1%) from 61.394%
29808310540

push

github

web-flow
removed printOn method these debug strings where only used at a single (#899)

place
use formatter for Token instead of ostream

33 of 169 new or added lines in 4 files covered. (19.53%)

16 existing lines in 4 files now uncovered.

45084 of 73281 relevant lines covered (61.52%)

449728.5 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

18.07
/pol-core/bscript/tkn_strm.cpp
1
/** @file
2
 *
3
 * @par History
4
 */
5

6
#include "objmembers.h"
7
#include "objmethods.h"
8
#include "token.h"
9
#include "tokens.h"
10

11
namespace Pol::Bscript
12
{
13
std::string Token::tostring() const
264✔
14
{
15
  switch ( id )
264✔
16
  {
17
  case TOK_LONG:
59✔
18
    return fmt::format( "{}L", lval );
118✔
UNCOV
19
  case TOK_DOUBLE:
×
NEW
20
    return fmt::format( "{}LF", dval );
×
21
  case TOK_BOOL:
×
NEW
22
    return fmt::format( "{} (boolean)", static_cast<bool>( lval ) );
×
23
  case TOK_IDENT:
×
NEW
24
    return token;
×
25
  case INS_ADDMEMBER2:
×
NEW
26
    return fmt::format( "addmember({})", token );
×
27
  case INS_ADDMEMBER_ASSIGN:
×
NEW
28
    return fmt::format( "addmember-assign({})", token );
×
29
  case TOK_STRING:
9✔
30
    return fmt::format( "\"{}\"", token );
18✔
31
  case TOK_LOCALVAR:
43✔
32
    return fmt::format( "local #{} {}", lval,
43✔
33
                        token.empty() ? std::string() : fmt::format( " ({})", token ) );
86✔
34
  case TOK_GLOBALVAR:
12✔
35
    return fmt::format( "global #{} {}", lval,
12✔
36
                        token.empty() ? std::string() : fmt::format( " ({})", token ) );
24✔
37
  case TOK_ERROR:
4✔
38
    return "error";
4✔
UNCOV
39
  case TOK_DICTIONARY:
×
NEW
40
    return "dictionary";
×
41
  case TOK_MULT:
×
NEW
42
    return "*";
×
43
  case TOK_DIV:
×
NEW
44
    return "/";
×
45
  case TOK_ADD:
×
NEW
46
    return "+";
×
47

48
  case TOK_INSERTINTO:
×
NEW
49
    return "init{}";
×
50
  case TOK_SUBTRACT:
×
NEW
51
    return "-";
×
52
  case TOK_PLUSEQUAL:
×
NEW
53
    return "+=";
×
54
  case TOK_MINUSEQUAL:
×
NEW
55
    return "-=";
×
56
  case TOK_TIMESEQUAL:
×
NEW
57
    return "*=";
×
58
  case TOK_DIVIDEEQUAL:
×
NEW
59
    return "/=";
×
60
  case TOK_MODULUSEQUAL:
×
NEW
61
    return "%=";
×
62

63
  case TOK_ASSIGN:
5✔
64
    return ":=";
5✔
65
  case INS_ASSIGN_LOCALVAR:
3✔
66
    return fmt::format( "local{} {} :=", lval,
3✔
67
                        token.empty() ? std::string() : fmt::format( " ({})", token ) );
6✔
68
  case INS_ASSIGN_GLOBALVAR:
×
NEW
69
    return fmt::format( "global{} {} :=", lval,
×
NEW
70
                        token.empty() ? std::string() : fmt::format( " ({})", token ) );
×
71
  case INS_ASSIGN_CONSUME:
×
NEW
72
    return ":= #";
×
73
  case INS_SUBSCRIPT_ASSIGN_CONSUME:
×
NEW
74
    return fmt::format( "[] := ({}) #", lval );
×
75
  case INS_SUBSCRIPT_ASSIGN:
×
NEW
76
    return fmt::format( "[] := ({})", lval );
×
77
  case TOK_LESSTHAN:
×
NEW
78
    return "<";
×
79
  case TOK_LESSEQ:
×
NEW
80
    return "<=";
×
81
  case TOK_GRTHAN:
8✔
82
    return ">";
8✔
UNCOV
83
  case TOK_GREQ:
×
NEW
84
    return ">=";
×
85
  case TOK_EQUAL1:
×
NEW
86
    return "=";
×
87
  case TOK_EQUAL:
4✔
88
    return "==";
4✔
89
  case TOK_NEQ:
7✔
90
    return "<>";
7✔
91
  case TOK_AND:
7✔
92
    return "&&";
7✔
UNCOV
93
  case TOK_OR:
×
NEW
94
    return "||";
×
95
  case TOK_ARRAY_SUBSCRIPT:
×
NEW
96
    return fmt::format( "[] {}", lval );
×
97
  case INS_MULTISUBSCRIPT:
9✔
98
    return fmt::format( "[{:,<{}}]", "", lval - 1 );
18✔
UNCOV
99
  case INS_MULTISUBSCRIPT_ASSIGN:
×
NEW
100
    return fmt::format( "[{:,<{}}] :=", "", lval - 1 );
×
101
  case TOK_ADDMEMBER:
×
NEW
102
    return ".+";
×
103
  case TOK_DELMEMBER:
×
NEW
104
    return ".-";
×
105
  case TOK_CHKMEMBER:
×
NEW
106
    return ".?";
×
107
  case TOK_MEMBER:
×
NEW
108
    return ".";
×
109
  case INS_GET_MEMBER:
×
NEW
110
    return fmt::format( "get member '{}'", token );
×
111
  case INS_SET_MEMBER:
×
NEW
112
    return fmt::format( "set member '{}'", token );
×
113
  case INS_SET_MEMBER_CONSUME:
×
NEW
114
    return fmt::format( "set member '{}' #", token );
×
115
  case INS_GET_MEMBER_ID:
14✔
116
    return fmt::format( "get member id '{}' ({})", getObjMember( lval )->code, lval );
28✔
117
    break;
118
  case INS_SET_MEMBER_ID:
×
NEW
119
    return fmt::format( "set member id '{}' ({})", getObjMember( lval )->code, lval );
×
120
  case INS_SET_MEMBER_ID_CONSUME:
×
NEW
121
    return fmt::format( "set member id '{}' ({}) #", getObjMember( lval )->code, lval );
×
122
  case INS_SET_MEMBER_ID_CONSUME_PLUSEQUAL:
×
NEW
123
    return fmt::format( "set member id '{}' ({})  += #", getObjMember( lval )->code, lval );
×
124
  case INS_SET_MEMBER_ID_CONSUME_MINUSEQUAL:
×
NEW
125
    return fmt::format( "set member id '{}' ({})  -= #", getObjMember( lval )->code, lval );
×
126
  case INS_SET_MEMBER_ID_CONSUME_TIMESEQUAL:
×
NEW
127
    return fmt::format( "set member id '{}' ({})  *= #", getObjMember( lval )->code, lval );
×
128
  case INS_SET_MEMBER_ID_CONSUME_DIVIDEEQUAL:
×
NEW
129
    return fmt::format( "set member id '{}' ({})  /= #", getObjMember( lval )->code, lval );
×
130
  case INS_SET_MEMBER_ID_CONSUME_MODULUSEQUAL:
×
NEW
131
    return fmt::format( "set member id '{}' ({})  %= #", getObjMember( lval )->code, lval );
×
132

133
  case INS_CALL_METHOD_ID:
14✔
134
    return fmt::format( "Call Method id {} (#{}, {} params)", getObjMethod( lval )->code, lval,
28✔
135
                        type );
28✔
136
  case TOK_IN:
×
NEW
137
    return "in";
×
138
  case INS_DICTIONARY_ADDMEMBER:
×
NEW
139
    return "add dictionary member";
×
140

141
  case TOK_UNPLUS:
×
NEW
142
    return "unary +";
×
143
  case TOK_UNMINUS:
×
NEW
144
    return "unary -";
×
145
  case TOK_LOG_NOT:
×
NEW
146
    return "!";
×
147
  case TOK_CONSUMER:
16✔
148
    return "#";
16✔
UNCOV
149
  case TOK_REFTO:
×
NEW
150
    return "refto";
×
151
  case TOK_UNUSED:
×
NEW
152
    return "unused";
×
153
  case TOK_BITAND:
×
NEW
154
    return "&";
×
155
  case TOK_BITOR:
×
NEW
156
    return "|";
×
157
  case TOK_BSRIGHT:
×
NEW
158
    return ">>";
×
159
  case TOK_BSLEFT:
×
NEW
160
    return "<<";
×
161
  case TOK_BITXOR:
×
NEW
162
    return "^";
×
163
  case TOK_BITWISE_NOT:
×
NEW
164
    return "~";
×
165
  case TOK_MODULUS:
×
NEW
166
    return "%";
×
167

168
  case INS_INITFOREACH:
6✔
169
    return fmt::format( "initforeach @{}", lval );
12✔
170
  case INS_STEPFOREACH:
3✔
171
    return fmt::format( "stepforeach @{}", lval );
6✔
UNCOV
172
  case INS_CASEJMP:
×
NEW
173
    return "casejmp";
×
174
  case INS_INITFOR:
4✔
175
    return fmt::format( "initfor @{}", lval );
8✔
176
  case INS_NEXTFOR:
2✔
177
    return fmt::format( "nextfor @{}", lval );
4✔
178

179
  case TOK_TERM:
×
NEW
180
    return "Terminator";
×
181

182
  case TOK_LPAREN:
×
NEW
183
    return "(";
×
184
  case TOK_RPAREN:
×
NEW
185
    return ")";
×
186
  case TOK_LBRACKET:
×
NEW
187
    return "[";
×
188
  case TOK_RBRACKET:
×
NEW
189
    return "]";
×
190
  case TOK_LBRACE:
×
NEW
191
    return "{";
×
192
  case TOK_RBRACE:
×
NEW
193
    return "}";
×
194

195
  case RSV_JMPIFTRUE:
×
NEW
196
    return fmt::format( "if true goto {}", lval );
×
197
  case RSV_JMPIFFALSE:
8✔
198
    return fmt::format( "if false goto {}", lval );
16✔
UNCOV
199
  case RSV_ST_IF:
×
NEW
200
    return "if";
×
201
  case RSV_GOTO:
6✔
202
    return fmt::format( "goto {}", lval );
12✔
UNCOV
203
  case RSV_GOSUB:
×
NEW
204
    return fmt::format( "gosub{}", lval );
×
205
  case RSV_EXIT:
×
NEW
206
    return "exit";
×
207
  case RSV_RETURN:
×
NEW
208
    return "return";
×
209
  case RSV_LOCAL:
5✔
210
    return fmt::format( "decl local #{}", lval );
10✔
UNCOV
211
  case RSV_GLOBAL:
×
NEW
212
    return fmt::format( "decl global #{}", lval );
×
213
  case RSV_VAR:
×
NEW
214
    return "var";
×
215
  case RSV_CONST:
×
NEW
216
    return "const";
×
217
  case RSV_FUNCTION:
×
NEW
218
    return "function";
×
219
  case RSV_ENDFUNCTION:
×
NEW
220
    return "endfunction";
×
221
  case RSV_DO:
×
NEW
222
    return "do";
×
223
  case RSV_DOWHILE:
×
NEW
224
    return "dowhile";
×
225
  case RSV_WHILE:
×
NEW
226
    return "while";
×
227
  case RSV_ENDWHILE:
×
NEW
228
    return "endwhile";
×
229
  case RSV_REPEAT:
×
NEW
230
    return "repeat";
×
231
  case RSV_UNTIL:
×
NEW
232
    return "until";
×
233
  case RSV_FOR:
×
NEW
234
    return "for";
×
235
  case RSV_ENDFOR:
×
NEW
236
    return "endfor";
×
237
  case RSV_FOREACH:
×
NEW
238
    return "foreach";
×
239
  case RSV_ENDFOREACH:
×
NEW
240
    return "endforeach";
×
241
  case INS_DECLARE_ARRAY:
×
NEW
242
    return "declare array";
×
243
  case TOK_ARRAY:
1✔
244
    return "array";
1✔
245
  case TOK_STRUCT:
×
NEW
246
    return "struct";
×
247
  case TOK_CLASSINST:
×
NEW
248
    return fmt::format( "class instance #{}", lval );
×
249
  case INS_UNINIT:
×
NEW
250
    return "uninit";
×
251
  case RSV_USE_MODULE:
×
NEW
252
    return "use module";
×
253
  case RSV_INCLUDE_FILE:
×
NEW
254
    return "include file";
×
255

256
  case CTRL_LABEL:
×
NEW
257
    return fmt::format( "{}:", token );
×
258

259
  case TOK_COMMA:
×
NEW
260
    return "','";
×
261
  case TOK_SEMICOLON:
×
NEW
262
    return "';'";
×
263

264
  case CTRL_STATEMENTBEGIN:
×
NEW
265
    return fmt::format( "[{}]", !token.empty() ? token : "--source not available--" );
×
266
  case CTRL_PROGEND:
×
NEW
267
    return "progend";
×
268
  case CTRL_MAKELOCAL:
×
NEW
269
    return "makelocal";
×
270
  case CTRL_JSR_USERFUNC:
×
NEW
271
    return fmt::format( "jmp userfunc @{}", lval );
×
272
  case INS_CHECK_MRO:
×
NEW
273
    return fmt::format( "check mro (this at offset {})", lval );
×
274
  case INS_POP_PARAM_BYREF:
×
NEW
275
    return fmt::format( "pop param byref '{}'", token );
×
276
  case INS_POP_PARAM:
×
NEW
277
    return fmt::format( "pop param '{}'", token );
×
278
  case INS_GET_ARG:
×
NEW
279
    return fmt::format( "get arg '{}'", token );
×
280
  case CTRL_LEAVE_BLOCK:
7✔
281
    return fmt::format( "leave block({})", lval );
14✔
282

283
  case INS_CALL_METHOD:
×
NEW
284
    return fmt::format( "Call Method {} ({} params) ", token, lval );
×
285
    break;
286
  case TOK_USERFUNC:
×
287
    return fmt::format( "User Function {}",
NEW
288
                        !token.empty() ? token : "--function name not available--" );
×
289
    break;
290
  case TOK_FUNCREF:
×
291
    return fmt::format( "Function Ref {}@{}",
NEW
292
                        !token.empty() ? token : "--function name not available--", lval );
×
293
  case TOK_UNPLUSPLUS:
×
NEW
294
    return "unary ++";
×
295
  case TOK_UNMINUSMINUS:
×
NEW
296
    return "unary --";
×
297
  case TOK_UNPLUSPLUS_POST:
×
NEW
298
    return "unary ++ post";
×
299
  case TOK_UNMINUSMINUS_POST:
×
NEW
300
    return "unary -- post";
×
301
  case INS_SET_MEMBER_ID_UNPLUSPLUS:
×
NEW
302
    return fmt::format( "set member id '{}' unary ++", getObjMember( lval )->code );
×
303
  case INS_SET_MEMBER_ID_UNMINUSMINUS:
×
NEW
304
    return fmt::format( "set member id '{}' unary --", getObjMember( lval )->code );
×
305
  case INS_SET_MEMBER_ID_UNPLUSPLUS_POST:
×
NEW
306
    return fmt::format( "set member id '{}' unary ++ post", getObjMember( lval )->code );
×
307
  case INS_SET_MEMBER_ID_UNMINUSMINUS_POST:
×
NEW
308
    return fmt::format( "set member id '{}' unary -- post", getObjMember( lval )->code );
×
309
  case INS_SKIPIFTRUE_ELSE_CONSUME:
×
310
    return fmt::format( "peek at top of stack; skip {} instructions if true, otherwise consume it",
NEW
311
                        lval );
×
312
  case RSV_COLON:
×
NEW
313
    return "':'";
×
314
  case RSV_PROGRAM:
×
NEW
315
    return "program";
×
316
  case RSV_ENDPROGRAM:
×
NEW
317
    return "endprogram";
×
318
  case RSV_ENUM:
×
NEW
319
    return "enum";
×
320
  case RSV_ENDENUM:
×
NEW
321
    return "endenum";
×
322
  case RSV_ELVIS:
×
NEW
323
    return "?: (elvis)";
×
324
  case TOK_INTERPOLATE_STRING:
×
NEW
325
    return fmt::format( "interpolate string ({} parts)", lval );
×
326
  case TOK_FORMAT_EXPRESSION:
×
NEW
327
    return "format expression";
×
328

329
  case INS_UNPACK_SEQUENCE:
×
330
  {
331
    int rest_index = lval > 0x7F ? ( ( lval >> 7 ) & 0x7F ) : -1;
×
NEW
332
    return fmt::format( "unpack sequence ({} elements, rest index {})", lval & 0x7F, rest_index );
×
333
  }
334
  case INS_UNPACK_INDICES:
×
335
  {
336
    int rest_index = lval > 0x7F ? ( ( lval >> 7 ) & 0x7F ) : -1;
×
NEW
337
    return fmt::format( "unpack indices ({} elements, rest index {})", lval & 0x7F, rest_index );
×
338
  }
339
  case INS_TAKE_GLOBAL:
×
NEW
340
    return fmt::format( "take global #{}", lval );
×
341
  case INS_TAKE_LOCAL:
×
NEW
342
    return fmt::format( "take local #{}", lval );
×
343

344
  case TOK_FUNC:
8✔
NEW
345
    return fmt::format( "Func({},{}): {}", (int)module, lval,
×
346
                        !token.empty() ? token : "<unknown>" );
16✔
347

348
  case TOK_SPREAD:
×
NEW
349
    return ( lval ? "spread-into" : "create-spread" );
×
350

351
  case INS_LOGICAL_JUMP:
×
NEW
352
    return fmt::format( "logical jump if {} to {}", type != TYP_LOGICAL_JUMP_FALSE, lval );
×
353
  case INS_LOGICAL_CONVERT:
×
NEW
354
    return "logical convert";
×
355

356
  case TOK_REGEXP:
×
NEW
357
    return "create-regular-expression";
×
358

359
  default:
×
NEW
360
    return fmt::format( "Unknown Token: ({},{}{})", id, type,
×
NEW
361
                        token.empty() ? std::string{} : fmt::format( ",'{}'", token ) );
×
362
  }
363
}
364
}  // namespace Pol::Bscript
365

366
fmt::format_context::iterator fmt::formatter<Pol::Bscript::Token>::format(
264✔
367
    const Pol::Bscript::Token& t, fmt::format_context& ctx ) const
368
{
369
  return fmt::formatter<std::string>::format( t.tostring(), ctx );
264✔
370
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc