Coverage Report

Created: 2026-09-13 06:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/jsonnet/core/ast.h
Line
Count
Source
1
/*
2
Copyright 2015 Google Inc. All rights reserved.
3
4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
7
8
    http://www.apache.org/licenses/LICENSE-2.0
9
10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
15
*/
16
17
#ifndef JSONNET_AST_H
18
#define JSONNET_AST_H
19
20
#include <cassert>
21
#include <cstdlib>
22
23
#include <iostream>
24
#include <list>
25
#include <map>
26
#include <string>
27
#include <vector>
28
29
#include "lexer.h"
30
#include "unicode.h"
31
32
namespace jsonnet::internal {
33
34
enum ASTType {
35
    AST_APPLY,
36
    AST_APPLY_BRACE,
37
    AST_ARRAY,
38
    AST_ARRAY_COMPREHENSION,
39
    AST_ARRAY_COMPREHENSION_SIMPLE,
40
    AST_ASSERT,
41
    AST_BINARY,
42
    AST_BUILTIN_FUNCTION,
43
    AST_BUILTIN_FUNCTION_BODY,
44
    AST_CONDITIONAL,
45
    AST_DESUGARED_OBJECT,
46
    AST_DOLLAR,
47
    AST_ERROR,
48
    AST_FUNCTION,
49
    AST_IMPORT,
50
    AST_IMPORTSTR,
51
    AST_IMPORTBIN,
52
    AST_INDEX,
53
    AST_IN_SUPER,
54
    AST_LITERAL_BOOLEAN,
55
    AST_LITERAL_NULL,
56
    AST_LITERAL_NUMBER,
57
    AST_LITERAL_STRING,
58
    AST_LOCAL,
59
    AST_OBJECT,
60
    AST_OBJECT_COMPREHENSION,
61
    AST_OBJECT_COMPREHENSION_SIMPLE,
62
    AST_PARENS,
63
    AST_SELF,
64
    AST_SUPER_INDEX,
65
    AST_UNARY,
66
    AST_VAR
67
};
68
69
static inline std::string ASTTypeToString(ASTType type)
70
0
{
71
0
    switch (type) {
72
0
        case AST_APPLY: return "AST_APPLY";
73
0
        case AST_APPLY_BRACE: return "AST_APPLY_BRACE";
74
0
        case AST_ARRAY: return "AST_ARRAY";
75
0
        case AST_ARRAY_COMPREHENSION: return "AST_ARRAY_COMPREHENSION";
76
0
        case AST_ARRAY_COMPREHENSION_SIMPLE: return "AST_ARRAY_COMPREHENSION_SIMPLE";
77
0
        case AST_ASSERT: return "AST_ASSERT";
78
0
        case AST_BINARY: return "AST_BINARY";
79
0
        case AST_BUILTIN_FUNCTION: return "AST_BUILTIN_FUNCTION";
80
0
        case AST_BUILTIN_FUNCTION_BODY: return "AST_BUILTIN_FUNCTION_BODY";
81
0
        case AST_CONDITIONAL: return "AST_CONDITIONAL";
82
0
        case AST_DESUGARED_OBJECT: return "AST_DESUGARED_OBJECT";
83
0
        case AST_DOLLAR: return "AST_DOLLAR";
84
0
        case AST_ERROR: return "AST_ERROR";
85
0
        case AST_FUNCTION: return "AST_FUNCTION";
86
0
        case AST_IMPORT: return "AST_IMPORT";
87
0
        case AST_IMPORTSTR: return "AST_IMPORTSTR";
88
0
        case AST_IMPORTBIN: return "AST_IMPORTBIN";
89
0
        case AST_INDEX: return "AST_INDEX";
90
0
        case AST_IN_SUPER: return "AST_IN_SUPER";
91
0
        case AST_LITERAL_BOOLEAN: return "AST_LITERAL_BOOLEAN";
92
0
        case AST_LITERAL_NULL: return "AST_LITERAL_NULL";
93
0
        case AST_LITERAL_NUMBER: return "AST_LITERAL_NUMBER";
94
0
        case AST_LITERAL_STRING: return "AST_LITERAL_STRING";
95
0
        case AST_LOCAL: return "AST_LOCAL";
96
0
        case AST_OBJECT: return "AST_OBJECT";
97
0
        case AST_OBJECT_COMPREHENSION: return "AST_OBJECT_COMPREHENSION";
98
0
        case AST_OBJECT_COMPREHENSION_SIMPLE: return "AST_OBJECT_COMPREHENSION_SIMPLE";
99
0
        case AST_PARENS: return "AST_PARENS";
100
0
        case AST_SELF: return "AST_SELF";
101
0
        case AST_SUPER_INDEX: return "AST_SUPER_INDEX";
102
0
        case AST_UNARY: return "AST_UNARY";
103
0
        case AST_VAR: return "AST_VAR";
104
0
    }
105
0
    std::cerr << "Invalid AST type"
106
0
              << "\n";
107
0
    abort();
108
0
}
Unexecuted instantiation: libjsonnet.cpp:jsonnet::internal::ASTTypeToString(jsonnet::internal::ASTType)
Unexecuted instantiation: parser.cpp:jsonnet::internal::ASTTypeToString(jsonnet::internal::ASTType)
Unexecuted instantiation: pass.cpp:jsonnet::internal::ASTTypeToString(jsonnet::internal::ASTType)
Unexecuted instantiation: static_analysis.cpp:jsonnet::internal::ASTTypeToString(jsonnet::internal::ASTType)
Unexecuted instantiation: vm.cpp:jsonnet::internal::ASTTypeToString(jsonnet::internal::ASTType)
Unexecuted instantiation: desugarer.cpp:jsonnet::internal::ASTTypeToString(jsonnet::internal::ASTType)
Unexecuted instantiation: formatter.cpp:jsonnet::internal::ASTTypeToString(jsonnet::internal::ASTType)
109
110
/** Represents a variable / parameter / field name. */
111
struct Identifier {
112
    UString name;
113
4.61M
    Identifier(const UString &name) : name(name) {}
114
};
115
116
static inline std::ostream &operator<<(std::ostream &o, const Identifier *id)
117
0
{
118
0
    o << encode_utf8(id->name);
119
0
    return o;
120
0
}
Unexecuted instantiation: libjsonnet.cpp:jsonnet::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, jsonnet::internal::Identifier const*)
Unexecuted instantiation: parser.cpp:jsonnet::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, jsonnet::internal::Identifier const*)
Unexecuted instantiation: pass.cpp:jsonnet::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, jsonnet::internal::Identifier const*)
Unexecuted instantiation: static_analysis.cpp:jsonnet::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, jsonnet::internal::Identifier const*)
Unexecuted instantiation: vm.cpp:jsonnet::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, jsonnet::internal::Identifier const*)
Unexecuted instantiation: desugarer.cpp:jsonnet::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, jsonnet::internal::Identifier const*)
Unexecuted instantiation: formatter.cpp:jsonnet::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, jsonnet::internal::Identifier const*)
121
122
typedef std::vector<const Identifier *> Identifiers;
123
124
/** All AST nodes are subtypes of this class.
125
 */
126
struct AST {
127
    LocationRange location;
128
    ASTType type;
129
    Fodder openFodder;
130
    Identifiers freeVariables;
131
    AST(const LocationRange &location, ASTType type, const Fodder &open_fodder)
132
157M
        : location(location), type(type), openFodder(open_fodder)
133
157M
    {
134
157M
    }
135
187M
    virtual ~AST(void) {}
136
};
137
138
typedef std::list<AST *> ASTs;
139
140
/** Either an arg in a function apply, or a param in a closure / other function definition.
141
 *
142
 * They happen to have exactly the same structure.
143
 *
144
 * In the case of an arg, the id is optional and the expr is required.  Presence of the id indicates
145
 * that this is a named rather than positional argument.
146
 *
147
 * In the case of a param, the id is required and if expr is given, it is a default argument to be
148
 * used when no argument is bound to the param.
149
 */
150
struct ArgParam {
151
    Fodder idFodder;       // Empty if no id.
152
    const Identifier *id;  // nullptr if there isn't one
153
    Fodder eqFodder;       // Empty if no id or no expr.
154
    AST *expr;             // nullptr if there wasn't one.
155
    Fodder commaFodder;    // Before the comma (if there is a comma).
156
    // Only has id
157
    ArgParam(const Fodder &id_fodder, const Identifier *id, const Fodder &comma_fodder)
158
1.02M
        : idFodder(id_fodder), id(id), expr(nullptr), commaFodder(comma_fodder)
159
1.02M
    {
160
1.02M
    }
161
    // Only has expr
162
    ArgParam(AST *expr, const Fodder &comma_fodder)
163
11.0M
        : id(nullptr), expr(expr), commaFodder(comma_fodder)
164
11.0M
    {
165
11.0M
    }
166
    // Has both id and expr
167
    ArgParam(const Fodder &id_fodder, const Identifier *id, const Fodder &eq_fodder, AST *expr,
168
             const Fodder &comma_fodder)
169
23.2M
        : idFodder(id_fodder), id(id), eqFodder(eq_fodder), expr(expr), commaFodder(comma_fodder)
170
23.2M
    {
171
23.2M
    }
172
};
173
174
typedef std::vector<ArgParam> ArgParams;
175
176
/** Used in Object & Array Comprehensions. */
177
struct ComprehensionSpec {
178
    enum Kind { FOR, IF };
179
    Kind kind;
180
    Fodder openFodder;
181
    Fodder varFodder;       // {} when kind != SPEC_FOR.
182
    const Identifier *var;  // Null when kind != SPEC_FOR.
183
    Fodder inFodder;        // {} when kind != SPEC_FOR.
184
    AST *expr;
185
    ComprehensionSpec(Kind kind, const Fodder &open_fodder, const Fodder &var_fodder,
186
                      const Identifier *var, const Fodder &in_fodder, AST *expr)
187
750k
        : kind(kind),
188
750k
          openFodder(open_fodder),
189
750k
          varFodder(var_fodder),
190
750k
          var(var),
191
750k
          inFodder(in_fodder),
192
750k
          expr(expr)
193
750k
    {
194
750k
    }
195
};
196
197
/** Represents function calls. */
198
struct Apply : public AST {
199
    AST *target;
200
    Fodder fodderL;
201
    ArgParams args;
202
    bool trailingComma;
203
    Fodder fodderR;
204
    Fodder tailstrictFodder;
205
    bool tailstrict;
206
    Apply(const LocationRange &lr, const Fodder &open_fodder, AST *target, const Fodder &fodder_l,
207
          const ArgParams &args, bool trailing_comma, const Fodder &fodder_r,
208
          const Fodder &tailstrict_fodder, bool tailstrict)
209
16.2M
        : AST(lr, AST_APPLY, open_fodder),
210
16.2M
          target(target),
211
16.2M
          fodderL(fodder_l),
212
16.2M
          args(args),
213
16.2M
          trailingComma(trailing_comma),
214
16.2M
          fodderR(fodder_r),
215
16.2M
          tailstrictFodder(tailstrict_fodder),
216
16.2M
          tailstrict(tailstrict)
217
16.2M
    {
218
16.2M
    }
219
};
220
221
/** Represents e { }.  Desugared to e + { }. */
222
struct ApplyBrace : public AST {
223
    AST *left;
224
    AST *right;  // This is always an object or object comprehension.
225
    ApplyBrace(const LocationRange &lr, const Fodder &open_fodder, AST *left, AST *right)
226
130k
        : AST(lr, AST_APPLY_BRACE, open_fodder), left(left), right(right)
227
130k
    {
228
130k
    }
229
};
230
231
/** Represents array constructors [1, 2, 3]. */
232
struct Array : public AST {
233
    struct Element {
234
        AST *expr;
235
        Fodder commaFodder;
236
4.72M
        Element(AST *expr, const Fodder &comma_fodder) : expr(expr), commaFodder(comma_fodder) {}
237
    };
238
    typedef std::vector<Element> Elements;
239
    Elements elements;
240
    bool trailingComma;
241
    Fodder closeFodder;
242
    Array(const LocationRange &lr, const Fodder &open_fodder, const Elements &elements,
243
          bool trailing_comma, const Fodder &close_fodder)
244
2.37M
        : AST(lr, AST_ARRAY, open_fodder),
245
2.37M
          elements(elements),
246
2.37M
          trailingComma(trailing_comma),
247
2.37M
          closeFodder(close_fodder)
248
2.37M
    {
249
2.37M
    }
250
};
251
252
/** Represents array comprehensions (which are like Python list comprehensions). */
253
struct ArrayComprehension : public AST {
254
    AST *body;
255
    Fodder commaFodder;
256
    bool trailingComma;
257
    std::vector<ComprehensionSpec> specs;
258
    Fodder closeFodder;
259
    ArrayComprehension(const LocationRange &lr, const Fodder &open_fodder, AST *body,
260
                       const Fodder &comma_fodder, bool trailing_comma,
261
                       const std::vector<ComprehensionSpec> &specs, const Fodder &close_fodder)
262
468k
        : AST(lr, AST_ARRAY_COMPREHENSION, open_fodder),
263
468k
          body(body),
264
468k
          commaFodder(comma_fodder),
265
468k
          trailingComma(trailing_comma),
266
468k
          specs(specs),
267
468k
          closeFodder(close_fodder)
268
468k
    {
269
468k
        assert(specs.size() > 0);
270
468k
    }
271
};
272
273
/** Represents an assert expression (not an object-level assert).
274
 *
275
 * After parsing, message can be nullptr indicating that no message was specified. This AST is
276
 * elimiated by desugaring.
277
 */
278
struct Assert : public AST {
279
    AST *cond;
280
    Fodder colonFodder;
281
    AST *message;
282
    Fodder semicolonFodder;
283
    AST *rest;
284
    Assert(const LocationRange &lr, const Fodder &open_fodder, AST *cond,
285
           const Fodder &colon_fodder, AST *message, const Fodder &semicolon_fodder, AST *rest)
286
528k
        : AST(lr, AST_ASSERT, open_fodder),
287
528k
          cond(cond),
288
528k
          colonFodder(colon_fodder),
289
528k
          message(message),
290
528k
          semicolonFodder(semicolon_fodder),
291
528k
          rest(rest)
292
528k
    {
293
528k
    }
294
};
295
296
enum BinaryOp {
297
    BOP_MULT,
298
    BOP_DIV,
299
    BOP_PERCENT,
300
301
    BOP_PLUS,
302
    BOP_MINUS,
303
304
    BOP_SHIFT_L,
305
    BOP_SHIFT_R,
306
307
    BOP_GREATER,
308
    BOP_GREATER_EQ,
309
    BOP_LESS,
310
    BOP_LESS_EQ,
311
    BOP_IN,
312
313
    BOP_MANIFEST_EQUAL,
314
    BOP_MANIFEST_UNEQUAL,
315
316
    BOP_BITWISE_AND,
317
    BOP_BITWISE_XOR,
318
    BOP_BITWISE_OR,
319
320
    BOP_AND,
321
    BOP_OR
322
};
323
324
static inline std::string bop_string(BinaryOp bop)
325
317
{
326
317
    switch (bop) {
327
12
        case BOP_MULT: return "*";
328
12
        case BOP_DIV: return "/";
329
0
        case BOP_PERCENT: return "%";
330
331
83
        case BOP_PLUS: return "+";
332
31
        case BOP_MINUS: return "-";
333
334
8
        case BOP_SHIFT_L: return "<<";
335
3
        case BOP_SHIFT_R: return ">>";
336
337
26
        case BOP_GREATER: return ">";
338
32
        case BOP_GREATER_EQ: return ">=";
339
38
        case BOP_LESS: return "<";
340
13
        case BOP_LESS_EQ: return "<=";
341
0
        case BOP_IN: return "in";
342
343
0
        case BOP_MANIFEST_EQUAL: return "==";
344
0
        case BOP_MANIFEST_UNEQUAL: return "!=";
345
346
22
        case BOP_BITWISE_AND: return "&";
347
19
        case BOP_BITWISE_XOR: return "^";
348
10
        case BOP_BITWISE_OR: return "|";
349
350
3
        case BOP_AND: return "&&";
351
5
        case BOP_OR: return "||";
352
353
0
        default:
354
0
            std::cerr << "INTERNAL ERROR: Unrecognised binary operator: " << bop << std::endl;
355
0
            std::abort();
356
317
    }
357
317
}
Unexecuted instantiation: libjsonnet.cpp:jsonnet::internal::bop_string(jsonnet::internal::BinaryOp)
Unexecuted instantiation: parser.cpp:jsonnet::internal::bop_string(jsonnet::internal::BinaryOp)
Unexecuted instantiation: pass.cpp:jsonnet::internal::bop_string(jsonnet::internal::BinaryOp)
Unexecuted instantiation: static_analysis.cpp:jsonnet::internal::bop_string(jsonnet::internal::BinaryOp)
vm.cpp:jsonnet::internal::bop_string(jsonnet::internal::BinaryOp)
Line
Count
Source
325
317
{
326
317
    switch (bop) {
327
12
        case BOP_MULT: return "*";
328
12
        case BOP_DIV: return "/";
329
0
        case BOP_PERCENT: return "%";
330
331
83
        case BOP_PLUS: return "+";
332
31
        case BOP_MINUS: return "-";
333
334
8
        case BOP_SHIFT_L: return "<<";
335
3
        case BOP_SHIFT_R: return ">>";
336
337
26
        case BOP_GREATER: return ">";
338
32
        case BOP_GREATER_EQ: return ">=";
339
38
        case BOP_LESS: return "<";
340
13
        case BOP_LESS_EQ: return "<=";
341
0
        case BOP_IN: return "in";
342
343
0
        case BOP_MANIFEST_EQUAL: return "==";
344
0
        case BOP_MANIFEST_UNEQUAL: return "!=";
345
346
22
        case BOP_BITWISE_AND: return "&";
347
19
        case BOP_BITWISE_XOR: return "^";
348
10
        case BOP_BITWISE_OR: return "|";
349
350
3
        case BOP_AND: return "&&";
351
5
        case BOP_OR: return "||";
352
353
0
        default:
354
0
            std::cerr << "INTERNAL ERROR: Unrecognised binary operator: " << bop << std::endl;
355
0
            std::abort();
356
317
    }
357
317
}
Unexecuted instantiation: desugarer.cpp:jsonnet::internal::bop_string(jsonnet::internal::BinaryOp)
Unexecuted instantiation: formatter.cpp:jsonnet::internal::bop_string(jsonnet::internal::BinaryOp)
358
359
/** Represents binary operators. */
360
struct Binary : public AST {
361
    AST *left;
362
    Fodder opFodder;
363
    BinaryOp op;
364
    AST *right;
365
    Binary(const LocationRange &lr, const Fodder &open_fodder, AST *left, const Fodder &op_fodder,
366
           BinaryOp op, AST *right)
367
13.0M
        : AST(lr, AST_BINARY, open_fodder), left(left), opFodder(op_fodder), op(op), right(right)
368
13.0M
    {
369
13.0M
    }
370
};
371
372
/** Represents the body of a built-in function.
373
 *
374
 * There is no parse rule to build this AST; it is generated during desugaring to represent
375
 * the body of a built-in function.
376
 */
377
struct BuiltinFunctionBody : public AST {
378
    std::string name;
379
    // TODO: It would probably be cleaner if this a HeapClosure::Params value.
380
    Identifiers params;
381
    BuiltinFunctionBody(const LocationRange &lr, const std::string &name, const Identifiers &params)
382
292k
        : AST(lr, AST_BUILTIN_FUNCTION_BODY, Fodder{}), name(name), params(params)
383
292k
    {
384
292k
    }
385
};
386
387
/** Represents built-in functions.
388
 *
389
 * There is no parse rule to build this AST.  Instead, it is used to build the std object in the
390
 * interpreter.
391
 */
392
struct BuiltinFunction : public AST {
393
    const BuiltinFunctionBody *body;
394
    BuiltinFunction(const LocationRange &lr, const BuiltinFunctionBody *body)
395
540k
        : AST(lr, AST_BUILTIN_FUNCTION, Fodder{}), body(body)
396
540k
    {
397
540k
    }
398
};
399
400
/** Represents if then else.
401
 *
402
 * After parsing, branchFalse can be nullptr indicating that no else branch was specified.  The
403
 * desugarer fills this in with a LiteralNull.
404
 */
405
struct Conditional : public AST {
406
    AST *cond;
407
    Fodder thenFodder;
408
    AST *branchTrue;
409
    Fodder elseFodder;
410
    AST *branchFalse;
411
    Conditional(const LocationRange &lr, const Fodder &open_fodder, AST *cond,
412
                const Fodder &then_fodder, AST *branch_true, const Fodder &else_fodder,
413
                AST *branch_false)
414
6.10M
        : AST(lr, AST_CONDITIONAL, open_fodder),
415
6.10M
          cond(cond),
416
6.10M
          thenFodder(then_fodder),
417
6.10M
          branchTrue(branch_true),
418
6.10M
          elseFodder(else_fodder),
419
6.10M
          branchFalse(branch_false)
420
6.10M
    {
421
6.10M
    }
422
};
423
424
/** Represents the $ keyword. */
425
struct Dollar : public AST {
426
53.7k
    Dollar(const LocationRange &lr, const Fodder &open_fodder) : AST(lr, AST_DOLLAR, open_fodder) {}
427
};
428
429
/** Represents error e. */
430
struct Error : public AST {
431
    AST *expr;
432
    Error(const LocationRange &lr, const Fodder &open_fodder, AST *expr)
433
1.97M
        : AST(lr, AST_ERROR, open_fodder), expr(expr)
434
1.97M
    {
435
1.97M
    }
436
};
437
438
/** Represents closures. */
439
struct Function : public AST {
440
    Fodder parenLeftFodder;
441
    ArgParams params;
442
    bool trailingComma;
443
    Fodder parenRightFodder;
444
    AST *body;
445
    Function(const LocationRange &lr, const Fodder &open_fodder, const Fodder &paren_left_fodder,
446
             const ArgParams &params, bool trailing_comma, const Fodder &paren_right_fodder,
447
             AST *body)
448
3.34M
        : AST(lr, AST_FUNCTION, open_fodder),
449
3.34M
          parenLeftFodder(paren_left_fodder),
450
3.34M
          params(params),
451
3.34M
          trailingComma(trailing_comma),
452
3.34M
          parenRightFodder(paren_right_fodder),
453
3.34M
          body(body)
454
3.34M
    {
455
3.34M
    }
456
};
457
458
struct LiteralString;
459
460
/** Represents import "file". */
461
struct Import : public AST {
462
    LiteralString *file;
463
    Import(const LocationRange &lr, const Fodder &open_fodder, LiteralString *file)
464
915
        : AST(lr, AST_IMPORT, open_fodder), file(file)
465
915
    {
466
915
    }
467
};
468
469
/** Represents importstr "file". */
470
struct Importstr : public AST {
471
    LiteralString *file;
472
    Importstr(const LocationRange &lr, const Fodder &open_fodder, LiteralString *file)
473
2.17k
        : AST(lr, AST_IMPORTSTR, open_fodder), file(file)
474
2.17k
    {
475
2.17k
    }
476
};
477
478
/** Represents importbin "file". */
479
struct Importbin : public AST {
480
    LiteralString *file;
481
    Importbin(const LocationRange &lr, const Fodder &open_fodder, LiteralString *file)
482
1.78k
        : AST(lr, AST_IMPORTBIN, open_fodder), file(file)
483
1.78k
    {
484
1.78k
    }
485
};
486
487
/** Represents both e[e] and the syntax sugar e.f.
488
 *
489
 * One of index and id will be nullptr before desugaring.  After desugaring id will be nullptr.
490
 */
491
struct Index : public AST {
492
    AST *target;
493
    Fodder dotFodder;  // When index is being used, this is the fodder before the [.
494
    bool isSlice;
495
    AST *index;
496
    Fodder endColonFodder;  // When end is being used, this is the fodder before the :.
497
    AST *end;
498
    Fodder stepColonFodder;  // When step is being used, this is the fodder before the :.
499
    AST *step;
500
    Fodder idFodder;  // When index is being used, this is the fodder before the ].
501
    const Identifier *id;
502
    // Use this constructor for e.f
503
    Index(const LocationRange &lr, const Fodder &open_fodder, AST *target, const Fodder &dot_fodder,
504
          const Fodder &id_fodder, const Identifier *id)
505
9.24M
        : AST(lr, AST_INDEX, open_fodder),
506
9.24M
          target(target),
507
9.24M
          dotFodder(dot_fodder),
508
9.24M
          isSlice(false),
509
9.24M
          index(nullptr),
510
9.24M
          end(nullptr),
511
9.24M
          step(nullptr),
512
9.24M
          idFodder(id_fodder),
513
9.24M
          id(id)
514
9.24M
    {
515
9.24M
    }
516
    // Use this constructor for e[x:y:z] with nullptr for index, end or step if not present.
517
    Index(const LocationRange &lr, const Fodder &open_fodder, AST *target, const Fodder &dot_fodder,
518
          bool is_slice, AST *index, const Fodder &end_colon_fodder, AST *end,
519
          const Fodder &step_colon_fodder, AST *step, const Fodder &id_fodder)
520
7.42M
        : AST(lr, AST_INDEX, open_fodder),
521
7.42M
          target(target),
522
7.42M
          dotFodder(dot_fodder),
523
7.42M
          isSlice(is_slice),
524
7.42M
          index(index),
525
7.42M
          endColonFodder(end_colon_fodder),
526
7.42M
          end(end),
527
7.42M
          stepColonFodder(step_colon_fodder),
528
7.42M
          step(step),
529
7.42M
          idFodder(id_fodder),
530
7.42M
          id(nullptr)
531
7.42M
    {
532
7.42M
    }
533
};
534
535
/** Represents local x = e; e.  After desugaring, functionSugar is false. */
536
struct Local : public AST {
537
    struct Bind {
538
        Fodder varFodder;
539
        const Identifier *var;
540
        Fodder opFodder;
541
        AST *body;
542
        bool functionSugar;
543
        Fodder parenLeftFodder;
544
        ArgParams params;  // If functionSugar == true
545
        bool trailingComma;
546
        Fodder parenRightFodder;
547
        Fodder closeFodder;
548
        Bind(const Fodder &var_fodder, const Identifier *var, const Fodder &op_fodder, AST *body,
549
             bool function_sugar, const Fodder &paren_left_fodder, const ArgParams &params,
550
             bool trailing_comma, const Fodder &paren_right_fodder, const Fodder &close_fodder)
551
5.45M
            : varFodder(var_fodder),
552
5.45M
              var(var),
553
5.45M
              opFodder(op_fodder),
554
5.45M
              body(body),
555
5.45M
              functionSugar(function_sugar),
556
5.45M
              parenLeftFodder(paren_left_fodder),
557
5.45M
              params(params),
558
5.45M
              trailingComma(trailing_comma),
559
5.45M
              parenRightFodder(paren_right_fodder),
560
5.45M
              closeFodder(close_fodder)
561
5.45M
        {
562
5.45M
        }
563
    };
564
    typedef std::vector<Bind> Binds;
565
    Binds binds;
566
    AST *body;
567
    Local(const LocationRange &lr, const Fodder &open_fodder, const Binds &binds, AST *body)
568
5.96M
        : AST(lr, AST_LOCAL, open_fodder), binds(binds), body(body)
569
5.96M
    {
570
5.96M
    }
571
};
572
573
/** Represents true and false. */
574
struct LiteralBoolean : public AST {
575
    bool value;
576
    LiteralBoolean(const LocationRange &lr, const Fodder &open_fodder, bool value)
577
1.19M
        : AST(lr, AST_LITERAL_BOOLEAN, open_fodder), value(value)
578
1.19M
    {
579
1.19M
    }
580
};
581
582
/** Represents the null keyword. */
583
struct LiteralNull : public AST {
584
    LiteralNull(const LocationRange &lr, const Fodder &open_fodder)
585
673k
        : AST(lr, AST_LITERAL_NULL, open_fodder)
586
673k
    {
587
673k
    }
588
};
589
590
/** Represents JSON numbers. */
591
struct LiteralNumber : public AST {
592
    double value;
593
    std::string originalString;
594
    LiteralNumber(const LocationRange &lr, const Fodder &open_fodder, const std::string &str)
595
9.09M
        : AST(lr, AST_LITERAL_NUMBER, open_fodder),
596
9.09M
          value(strtod(str.c_str(), nullptr)),
597
9.09M
          originalString(str)
598
9.09M
    {
599
9.09M
    }
600
};
601
602
/** Represents JSON strings. */
603
struct LiteralString : public AST {
604
    UString value;
605
    enum TokenKind { SINGLE, DOUBLE, BLOCK, VERBATIM_SINGLE, VERBATIM_DOUBLE, RAW_DESUGARED };
606
    TokenKind tokenKind;
607
    std::string blockIndent;      // Only contains ' ' and '\t'.
608
    std::string blockTermIndent;  // Only contains ' ' and '\t'.
609
    LiteralString(const LocationRange &lr, const Fodder &open_fodder, const UString &value,
610
                  TokenKind token_kind, const std::string &block_indent,
611
                  const std::string &block_term_indent)
612
24.6M
        : AST(lr, AST_LITERAL_STRING, open_fodder),
613
24.6M
          value(value),
614
24.6M
          tokenKind(token_kind),
615
24.6M
          blockIndent(block_indent),
616
24.6M
          blockTermIndent(block_term_indent)
617
24.6M
    {
618
24.6M
    }
619
};
620
621
struct ObjectField {
622
    // Depending on the kind of Jsonnet field, the fields of this C++ class are used for storing
623
    // different parts of the AST.
624
    enum Kind {
625
626
        // <fodder1> 'assert' <expr2>
627
        // [ <opFodder> : <expr3> ]
628
        // <commaFodder>
629
        ASSERT,
630
631
        // <fodder1> id
632
        // [ <fodderL> '(' <params> <fodderR> ')' ]
633
        // <opFodder> [+]:[:[:]] <expr2>
634
        // <commaFodder>
635
        FIELD_ID,
636
637
        // <fodder1> '[' <expr1> <fodder2> ']'
638
        // [ <fodderL> '(' <params> <fodderR> ')' ]
639
        // <opFodder> [+]:[:[:]] <expr2>
640
        // <commaFodder>
641
        FIELD_EXPR,
642
643
        // <expr1>
644
        // <fodderL> '(' <params> <fodderR> ')'
645
        // <opFodder> [+]:[:[:]] <expr2>
646
        // <commaFodder>
647
        FIELD_STR,
648
649
        // <fodder1> 'local' <fodder2> id
650
        // [ <fodderL> '(' <params> <fodderR> ')' ]
651
        // [ <opFodder> = <expr2> ]
652
        // <commaFodder>
653
        LOCAL,
654
    };
655
656
    // NOTE TO SELF: sort out fodder1-4, then modify desugarer (maybe) parser and unparser.
657
658
    enum Hide {
659
        HIDDEN,   // f:: e
660
        INHERIT,  // f: e
661
        VISIBLE,  // f::: e
662
    };
663
    enum Kind kind;
664
    Fodder fodder1, fodder2, fodderL, fodderR;
665
    enum Hide hide;    // (ignore if kind != FIELD_something
666
    bool superSugar;   // +:  (ignore if kind != FIELD_something)
667
    bool methodSugar;  // f(x, y, z): ...  (ignore if kind  == ASSERT)
668
    AST *expr1;        // Not in scope of the object
669
    const Identifier *id;
670
    LocationRange idLocation;
671
    ArgParams params;    // If methodSugar == true then holds the params.
672
    bool trailingComma;  // If methodSugar == true then remembers the trailing comma.
673
    Fodder opFodder;     // Before the : or =
674
    AST *expr2, *expr3;  // In scope of the object (can see self).
675
    Fodder commaFodder;  // If this field is followed by a comma, this is its fodder.
676
677
    ObjectField(enum Kind kind, const Fodder &fodder1, const Fodder &fodder2,
678
                const Fodder &fodder_l, const Fodder &fodder_r, enum Hide hide, bool super_sugar,
679
                bool method_sugar, AST *expr1, const Identifier *id, const LocationRange &id_lr,
680
                const ArgParams &params, bool trailing_comma, const Fodder &op_fodder, AST *expr2,
681
                AST *expr3, const Fodder &comma_fodder)
682
3.36M
        : kind(kind),
683
3.36M
          fodder1(fodder1),
684
3.36M
          fodder2(fodder2),
685
3.36M
          fodderL(fodder_l),
686
3.36M
          fodderR(fodder_r),
687
3.36M
          hide(hide),
688
3.36M
          superSugar(super_sugar),
689
3.36M
          methodSugar(method_sugar),
690
3.36M
          expr1(expr1),
691
3.36M
          id(id),
692
3.36M
          idLocation(id_lr),
693
3.36M
          params(params),
694
3.36M
          trailingComma(trailing_comma),
695
3.36M
          opFodder(op_fodder),
696
3.36M
          expr2(expr2),
697
3.36M
          expr3(expr3),
698
3.36M
          commaFodder(comma_fodder)
699
3.36M
    {
700
        // Enforce what is written in comments above.
701
3.36M
        assert(kind != ASSERT || (hide == VISIBLE && !superSugar && !methodSugar));
702
3.36M
        assert(kind != LOCAL || (hide == VISIBLE && !superSugar));
703
3.36M
        assert(kind != FIELD_ID || (id != nullptr && expr1 == nullptr));
704
3.36M
        assert(kind == FIELD_ID || kind == LOCAL || id == nullptr);
705
3.36M
        assert(methodSugar || (params.size() == 0 && !trailingComma));
706
3.36M
        assert(kind == ASSERT || expr3 == nullptr);
707
3.36M
    }
708
    // For when we don't know if it's a function or not.
709
    static ObjectField Local(const Fodder &fodder1, const Fodder &fodder2, const Fodder &fodder_l,
710
                             const Fodder &fodder_r, bool method_sugar, const Identifier *id,
711
                             const ArgParams &params, bool trailing_comma, const Fodder &op_fodder,
712
                             AST *body, const Fodder &comma_fodder)
713
90.9k
    {
714
90.9k
        return ObjectField(LOCAL,
715
90.9k
                           fodder1,
716
90.9k
                           fodder2,
717
90.9k
                           fodder_l,
718
90.9k
                           fodder_r,
719
90.9k
                           VISIBLE,
720
90.9k
                           false,
721
90.9k
                           method_sugar,
722
90.9k
                           nullptr,
723
90.9k
                           id,
724
90.9k
                           LocationRange(),
725
90.9k
                           params,
726
90.9k
                           trailing_comma,
727
90.9k
                           op_fodder,
728
90.9k
                           body,
729
90.9k
                           nullptr,
730
90.9k
                           comma_fodder);
731
90.9k
    }
732
    static ObjectField Local(const Fodder &fodder1, const Fodder &fodder2, const Identifier *id,
733
                             const Fodder &op_fodder, AST *body, const Fodder &comma_fodder)
734
48.1k
    {
735
48.1k
        return ObjectField(LOCAL,
736
48.1k
                           fodder1,
737
48.1k
                           fodder2,
738
48.1k
                           Fodder{},
739
48.1k
                           Fodder{},
740
48.1k
                           VISIBLE,
741
48.1k
                           false,
742
48.1k
                           false,
743
48.1k
                           nullptr,
744
48.1k
                           id,
745
48.1k
                           LocationRange(),
746
48.1k
                           ArgParams{},
747
48.1k
                           false,
748
48.1k
                           op_fodder,
749
48.1k
                           body,
750
48.1k
                           nullptr,
751
48.1k
                           comma_fodder);
752
48.1k
    }
753
    static ObjectField LocalMethod(const Fodder &fodder1, const Fodder &fodder2,
754
                                   const Fodder &fodder_l, const Fodder &fodder_r,
755
                                   const Identifier *id, const ArgParams &params,
756
                                   bool trailing_comma, const Fodder &op_fodder, AST *body,
757
                                   const Fodder &comma_fodder)
758
0
    {
759
0
        return ObjectField(LOCAL,
760
0
                           fodder1,
761
0
                           fodder2,
762
0
                           fodder_l,
763
0
                           fodder_r,
764
0
                           VISIBLE,
765
0
                           false,
766
0
                           true,
767
0
                           nullptr,
768
0
                           id,
769
0
                           LocationRange(),
770
0
                           params,
771
0
                           trailing_comma,
772
0
                           op_fodder,
773
0
                           body,
774
0
                           nullptr,
775
0
                           comma_fodder);
776
0
    }
777
    static ObjectField Assert(const Fodder &fodder1, AST *body, const Fodder &op_fodder, AST *msg,
778
                              const Fodder &comma_fodder)
779
100k
    {
780
100k
        return ObjectField(ASSERT,
781
100k
                           fodder1,
782
100k
                           Fodder{},
783
100k
                           Fodder{},
784
100k
                           Fodder{},
785
100k
                           VISIBLE,
786
100k
                           false,
787
100k
                           false,
788
100k
                           nullptr,
789
100k
                           nullptr,
790
100k
                           LocationRange(),
791
100k
                           ArgParams{},
792
100k
                           false,
793
100k
                           op_fodder,
794
100k
                           body,
795
100k
                           msg,
796
100k
                           comma_fodder);
797
100k
    }
798
};
799
typedef std::vector<ObjectField> ObjectFields;
800
801
/** Represents object constructors { f: e ... }.
802
 *
803
 * The trailing comma is only allowed if fields.size() > 0.  Converted to DesugaredObject during
804
 * desugaring.
805
 */
806
struct Object : public AST {
807
    ObjectFields fields;
808
    bool trailingComma;
809
    Fodder closeFodder;
810
    Object(const LocationRange &lr, const Fodder &open_fodder, const ObjectFields &fields,
811
           bool trailing_comma, const Fodder &close_fodder)
812
695k
        : AST(lr, AST_OBJECT, open_fodder),
813
695k
          fields(fields),
814
695k
          trailingComma(trailing_comma),
815
695k
          closeFodder(close_fodder)
816
695k
    {
817
695k
        assert(fields.size() > 0 || !trailing_comma);
818
695k
        if (fields.size() > 0)
819
695k
            assert(trailing_comma || fields[fields.size() - 1].commaFodder.size() == 0);
820
695k
    }
821
};
822
823
/** Represents object constructors { f: e ... } after desugaring.
824
 *
825
 * The assertions either return true or raise an error.
826
 */
827
struct DesugaredObject : public AST {
828
    struct Field {
829
        enum ObjectField::Hide hide;
830
        AST *name;
831
        AST *body;
832
        Field(enum ObjectField::Hide hide, AST *name, AST *body)
833
3.51M
            : hide(hide), name(name), body(body)
834
3.51M
        {
835
3.51M
        }
836
    };
837
    typedef std::vector<Field> Fields;
838
    ASTs asserts;
839
    Fields fields;
840
    DesugaredObject(const LocationRange &lr, const ASTs &asserts, const Fields &fields)
841
688k
        : AST(lr, AST_DESUGARED_OBJECT, Fodder{}), asserts(asserts), fields(fields)
842
688k
    {
843
688k
    }
844
};
845
846
/** Represents object comprehension { [e]: e for x in e for.. if... }. */
847
struct ObjectComprehension : public AST {
848
    ObjectFields fields;
849
    bool trailingComma;
850
    std::vector<ComprehensionSpec> specs;
851
    Fodder closeFodder;
852
    ObjectComprehension(const LocationRange &lr, const Fodder &open_fodder,
853
                        const ObjectFields &fields, bool trailing_comma,
854
                        const std::vector<ComprehensionSpec> &specs, const Fodder &close_fodder)
855
856
59.1k
        : AST(lr, AST_OBJECT_COMPREHENSION, open_fodder),
857
59.1k
          fields(fields),
858
59.1k
          trailingComma(trailing_comma),
859
59.1k
          specs(specs),
860
59.1k
          closeFodder(close_fodder)
861
59.1k
    {
862
59.1k
    }
863
};
864
865
/** Represents post-desugaring object comprehension { [e]: e for x in e }. */
866
struct ObjectComprehensionSimple : public AST {
867
    AST *field;
868
    AST *value;
869
    const Identifier *id;
870
    AST *array;
871
    ObjectComprehensionSimple(const LocationRange &lr, AST *field, AST *value, const Identifier *id,
872
                              AST *array)
873
56.5k
        : AST(lr, AST_OBJECT_COMPREHENSION_SIMPLE, Fodder{}),
874
56.5k
          field(field),
875
56.5k
          value(value),
876
56.5k
          id(id),
877
56.5k
          array(array)
878
56.5k
    {
879
56.5k
    }
880
};
881
882
/** Represents (e), which is desugared. */
883
struct Parens : public AST {
884
    AST *expr;
885
    Fodder closeFodder;
886
    Parens(const LocationRange &lr, const Fodder &open_fodder, AST *expr,
887
           const Fodder &close_fodder)
888
643k
        : AST(lr, AST_PARENS, open_fodder), expr(expr), closeFodder(close_fodder)
889
643k
    {
890
643k
    }
891
};
892
893
/** Represents the self keyword. */
894
struct Self : public AST {
895
141k
    Self(const LocationRange &lr, const Fodder &open_fodder) : AST(lr, AST_SELF, open_fodder) {}
896
};
897
898
/** Represents the super[e] and super.f constructs.
899
 *
900
 * Either index or identifier will be set before desugaring.  After desugaring, id will be
901
 * nullptr.
902
 */
903
struct SuperIndex : public AST {
904
    Fodder dotFodder;
905
    AST *index;
906
    Fodder idFodder;
907
    const Identifier *id;
908
    SuperIndex(const LocationRange &lr, const Fodder &open_fodder, const Fodder &dot_fodder,
909
               AST *index, const Fodder &id_fodder, const Identifier *id)
910
30.8k
        : AST(lr, AST_SUPER_INDEX, open_fodder),
911
30.8k
          dotFodder(dot_fodder),
912
30.8k
          index(index),
913
30.8k
          idFodder(id_fodder),
914
30.8k
          id(id)
915
30.8k
    {
916
30.8k
    }
917
};
918
919
/** Represents the e in super construct.
920
 */
921
struct InSuper : public AST {
922
    AST *element;
923
    Fodder inFodder;
924
    Fodder superFodder;
925
    InSuper(const LocationRange &lr, const Fodder &open_fodder, AST *element,
926
            const Fodder &in_fodder, const Fodder &super_fodder)
927
26.7k
        : AST(lr, AST_IN_SUPER, open_fodder),
928
26.7k
          element(element),
929
26.7k
          inFodder(in_fodder),
930
26.7k
          superFodder(super_fodder)
931
26.7k
    {
932
26.7k
    }
933
};
934
935
enum UnaryOp { UOP_NOT, UOP_BITWISE_NOT, UOP_PLUS, UOP_MINUS };
936
937
static inline std::string uop_string(UnaryOp uop)
938
206
{
939
206
    switch (uop) {
940
146
        case UOP_PLUS: return "+";
941
16
        case UOP_MINUS: return "-";
942
4
        case UOP_BITWISE_NOT: return "~";
943
40
        case UOP_NOT: return "!";
944
945
0
        default:
946
0
            std::cerr << "INTERNAL ERROR: Unrecognised unary operator: " << uop << std::endl;
947
0
            std::abort();
948
206
    }
949
206
}
Unexecuted instantiation: libjsonnet.cpp:jsonnet::internal::uop_string(jsonnet::internal::UnaryOp)
Unexecuted instantiation: parser.cpp:jsonnet::internal::uop_string(jsonnet::internal::UnaryOp)
Unexecuted instantiation: pass.cpp:jsonnet::internal::uop_string(jsonnet::internal::UnaryOp)
Unexecuted instantiation: static_analysis.cpp:jsonnet::internal::uop_string(jsonnet::internal::UnaryOp)
vm.cpp:jsonnet::internal::uop_string(jsonnet::internal::UnaryOp)
Line
Count
Source
938
206
{
939
206
    switch (uop) {
940
146
        case UOP_PLUS: return "+";
941
16
        case UOP_MINUS: return "-";
942
4
        case UOP_BITWISE_NOT: return "~";
943
40
        case UOP_NOT: return "!";
944
945
0
        default:
946
0
            std::cerr << "INTERNAL ERROR: Unrecognised unary operator: " << uop << std::endl;
947
0
            std::abort();
948
206
    }
949
206
}
Unexecuted instantiation: desugarer.cpp:jsonnet::internal::uop_string(jsonnet::internal::UnaryOp)
Unexecuted instantiation: formatter.cpp:jsonnet::internal::uop_string(jsonnet::internal::UnaryOp)
950
951
/** Represents unary operators. */
952
struct Unary : public AST {
953
    UnaryOp op;
954
    AST *expr;
955
    Unary(const LocationRange &lr, const Fodder &open_fodder, UnaryOp op, AST *expr)
956
1.15M
        : AST(lr, AST_UNARY, open_fodder), op(op), expr(expr)
957
1.15M
    {
958
1.15M
    }
959
};
960
961
/** Represents variables. */
962
struct Var : public AST {
963
    const Identifier *id;
964
    Var(const LocationRange &lr, const Fodder &open_fodder, const Identifier *id)
965
51.1M
        : AST(lr, AST_VAR, open_fodder), id(id)
966
51.1M
    {
967
51.1M
    }
968
};
969
970
/** Allocates ASTs on demand, frees them in its destructor.
971
 */
972
class Allocator {
973
    std::map<UString, const Identifier *> internedIdentifiers;
974
    std::map<std::string, const BuiltinFunctionBody *> internedBuiltins;
975
    ASTs allocated;
976
977
   public:
978
    template <class T, class... Args>
979
    T *make(Args &&... args)
980
157M
    {
981
157M
        auto r = new T(std::forward<Args>(args)...);
982
157M
        allocated.push_back(r);
983
157M
        return r;
984
157M
    }
jsonnet::internal::Assert* jsonnet::internal::Allocator::make<jsonnet::internal::Assert, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
528k
    {
981
528k
        auto r = new T(std::forward<Args>(args)...);
982
528k
        allocated.push_back(r);
983
528k
        return r;
984
528k
    }
jsonnet::internal::Error* jsonnet::internal::Allocator::make<jsonnet::internal::Error, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&)
Line
Count
Source
980
840k
    {
981
840k
        auto r = new T(std::forward<Args>(args)...);
982
840k
        allocated.push_back(r);
983
840k
        return r;
984
840k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
4.14M
    {
981
4.14M
        auto r = new T(std::forward<Args>(args)...);
982
4.14M
        allocated.push_back(r);
983
4.14M
        return r;
984
4.14M
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >, decltype(nullptr)>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&&, decltype(nullptr)&&)
Line
Count
Source
980
51.9k
    {
981
51.9k
        auto r = new T(std::forward<Args>(args)...);
982
51.9k
        allocated.push_back(r);
983
51.9k
        return r;
984
51.9k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::make<jsonnet::internal::Function, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
258k
    {
981
258k
        auto r = new T(std::forward<Args>(args)...);
982
258k
        allocated.push_back(r);
983
258k
        return r;
984
258k
    }
jsonnet::internal::Import* jsonnet::internal::Allocator::make<jsonnet::internal::Import, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralString*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralString*&)
Line
Count
Source
980
915
    {
981
915
        auto r = new T(std::forward<Args>(args)...);
982
915
        allocated.push_back(r);
983
915
        return r;
984
915
    }
jsonnet::internal::Importstr* jsonnet::internal::Allocator::make<jsonnet::internal::Importstr, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralString*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralString*&)
Line
Count
Source
980
2.17k
    {
981
2.17k
        auto r = new T(std::forward<Args>(args)...);
982
2.17k
        allocated.push_back(r);
983
2.17k
        return r;
984
2.17k
    }
jsonnet::internal::Importbin* jsonnet::internal::Allocator::make<jsonnet::internal::Importbin, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralString*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralString*&)
Line
Count
Source
980
1.78k
    {
981
1.78k
        auto r = new T(std::forward<Args>(args)...);
982
1.78k
        allocated.push_back(r);
983
1.78k
        return r;
984
1.78k
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
3.11M
    {
981
3.11M
        auto r = new T(std::forward<Args>(args)...);
982
3.11M
        allocated.push_back(r);
983
3.11M
        return r;
984
3.11M
    }
jsonnet::internal::Unary* jsonnet::internal::Allocator::make<jsonnet::internal::Unary, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::UnaryOp&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::UnaryOp&, jsonnet::internal::AST*&)
Line
Count
Source
980
840k
    {
981
840k
        auto r = new T(std::forward<Args>(args)...);
982
840k
        allocated.push_back(r);
983
840k
        return r;
984
840k
    }
jsonnet::internal::Object* jsonnet::internal::Allocator::make<jsonnet::internal::Object, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ObjectField, std::__1::allocator<jsonnet::internal::ObjectField> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ObjectField, std::__1::allocator<jsonnet::internal::ObjectField> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
695k
    {
981
695k
        auto r = new T(std::forward<Args>(args)...);
982
695k
        allocated.push_back(r);
983
695k
        return r;
984
695k
    }
jsonnet::internal::ObjectComprehension* jsonnet::internal::Allocator::make<jsonnet::internal::ObjectComprehension, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ObjectField, std::__1::allocator<jsonnet::internal::ObjectField> >&, bool&, std::__1::vector<jsonnet::internal::ComprehensionSpec, std::__1::allocator<jsonnet::internal::ComprehensionSpec> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ObjectField, std::__1::allocator<jsonnet::internal::ObjectField> >&, bool&, std::__1::vector<jsonnet::internal::ComprehensionSpec, std::__1::allocator<jsonnet::internal::ComprehensionSpec> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
59.1k
    {
981
59.1k
        auto r = new T(std::forward<Args>(args)...);
982
59.1k
        allocated.push_back(r);
983
59.1k
        return r;
984
59.1k
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >, jsonnet::internal::LiteralString::TokenKind, char const (&) [1], char const (&) [1]>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >&&, jsonnet::internal::LiteralString::TokenKind&&, char const (&) [1], char const (&) [1])
Line
Count
Source
980
149k
    {
981
149k
        auto r = new T(std::forward<Args>(args)...);
982
149k
        allocated.push_back(r);
983
149k
        return r;
984
149k
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >, jsonnet::internal::LiteralString::TokenKind, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >&&, jsonnet::internal::LiteralString::TokenKind&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
Line
Count
Source
980
2.81k
    {
981
2.81k
        auto r = new T(std::forward<Args>(args)...);
982
2.81k
        allocated.push_back(r);
983
2.81k
        return r;
984
2.81k
    }
jsonnet::internal::Array* jsonnet::internal::Allocator::make<jsonnet::internal::Array, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
296k
    {
981
296k
        auto r = new T(std::forward<Args>(args)...);
982
296k
        allocated.push_back(r);
983
296k
        return r;
984
296k
    }
jsonnet::internal::ArrayComprehension* jsonnet::internal::Allocator::make<jsonnet::internal::ArrayComprehension, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&, std::__1::vector<jsonnet::internal::ComprehensionSpec, std::__1::allocator<jsonnet::internal::ComprehensionSpec> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&, std::__1::vector<jsonnet::internal::ComprehensionSpec, std::__1::allocator<jsonnet::internal::ComprehensionSpec> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
412k
    {
981
412k
        auto r = new T(std::forward<Args>(args)...);
982
412k
        allocated.push_back(r);
983
412k
        return r;
984
412k
    }
jsonnet::internal::Array* jsonnet::internal::Allocator::make<jsonnet::internal::Array, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
1.08M
    {
981
1.08M
        auto r = new T(std::forward<Args>(args)...);
982
1.08M
        allocated.push_back(r);
983
1.08M
        return r;
984
1.08M
    }
jsonnet::internal::Parens* jsonnet::internal::Allocator::make<jsonnet::internal::Parens, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
643k
    {
981
643k
        auto r = new T(std::forward<Args>(args)...);
982
643k
        allocated.push_back(r);
983
643k
        return r;
984
643k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNumber, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
Line
Count
Source
980
8.04M
    {
981
8.04M
        auto r = new T(std::forward<Args>(args)...);
982
8.04M
        allocated.push_back(r);
983
8.04M
        return r;
984
8.04M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >, jsonnet::internal::LiteralString::TokenKind, char const (&) [1], char const (&) [1]>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >&&, jsonnet::internal::LiteralString::TokenKind&&, char const (&) [1], char const (&) [1])
Line
Count
Source
980
6.18M
    {
981
6.18M
        auto r = new T(std::forward<Args>(args)...);
982
6.18M
        allocated.push_back(r);
983
6.18M
        return r;
984
6.18M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >, jsonnet::internal::LiteralString::TokenKind, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >&&, jsonnet::internal::LiteralString::TokenKind&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
Line
Count
Source
980
5.07k
    {
981
5.07k
        auto r = new T(std::forward<Args>(args)...);
982
5.07k
        allocated.push_back(r);
983
5.07k
        return r;
984
5.07k
    }
jsonnet::internal::LiteralBoolean* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralBoolean, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&&)
Line
Count
Source
980
1.09M
    {
981
1.09M
        auto r = new T(std::forward<Args>(args)...);
982
1.09M
        allocated.push_back(r);
983
1.09M
        return r;
984
1.09M
    }
jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNull, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
235k
    {
981
235k
        auto r = new T(std::forward<Args>(args)...);
982
235k
        allocated.push_back(r);
983
235k
        return r;
984
235k
    }
jsonnet::internal::Dollar* jsonnet::internal::Allocator::make<jsonnet::internal::Dollar, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
53.7k
    {
981
53.7k
        auto r = new T(std::forward<Args>(args)...);
982
53.7k
        allocated.push_back(r);
983
53.7k
        return r;
984
53.7k
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::make<jsonnet::internal::Var, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&&)
Line
Count
Source
980
40.0M
    {
981
40.0M
        auto r = new T(std::forward<Args>(args)...);
982
40.0M
        allocated.push_back(r);
983
40.0M
        return r;
984
40.0M
    }
jsonnet::internal::Self* jsonnet::internal::Allocator::make<jsonnet::internal::Self, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
91.0k
    {
981
91.0k
        auto r = new T(std::forward<Args>(args)...);
982
91.0k
        allocated.push_back(r);
983
91.0k
        return r;
984
91.0k
    }
jsonnet::internal::SuperIndex* jsonnet::internal::Allocator::make<jsonnet::internal::SuperIndex, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&)
Line
Count
Source
980
4.53k
    {
981
4.53k
        auto r = new T(std::forward<Args>(args)...);
982
4.53k
        allocated.push_back(r);
983
4.53k
        return r;
984
4.53k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
2.26M
    {
981
2.26M
        auto r = new T(std::forward<Args>(args)...);
982
2.26M
        allocated.push_back(r);
983
2.26M
        return r;
984
2.26M
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&)
Line
Count
Source
980
9.24M
    {
981
9.24M
        auto r = new T(std::forward<Args>(args)...);
982
9.24M
        allocated.push_back(r);
983
9.24M
        return r;
984
9.24M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&)
Line
Count
Source
980
10.4M
    {
981
10.4M
        auto r = new T(std::forward<Args>(args)...);
982
10.4M
        allocated.push_back(r);
983
10.4M
        return r;
984
10.4M
    }
jsonnet::internal::ApplyBrace* jsonnet::internal::Allocator::make<jsonnet::internal::ApplyBrace, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, jsonnet::internal::AST*&)
Line
Count
Source
980
130k
    {
981
130k
        auto r = new T(std::forward<Args>(args)...);
982
130k
        allocated.push_back(r);
983
130k
        return r;
984
130k
    }
jsonnet::internal::InSuper* jsonnet::internal::Allocator::make<jsonnet::internal::InSuper, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
425
    {
981
425
        auto r = new T(std::forward<Args>(args)...);
982
425
        allocated.push_back(r);
983
425
        return r;
984
425
    }
jsonnet::internal::Binary* jsonnet::internal::Allocator::make<jsonnet::internal::Binary, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::BinaryOp&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::BinaryOp&, jsonnet::internal::AST*&)
Line
Count
Source
980
11.1M
    {
981
11.1M
        auto r = new T(std::forward<Args>(args)...);
982
11.1M
        allocated.push_back(r);
983
11.1M
        return r;
984
11.1M
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::make<jsonnet::internal::Var, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&&, jsonnet::internal::Identifier const*&)
Line
Count
Source
980
5.89k
    {
981
5.89k
        auto r = new T(std::forward<Args>(args)...);
982
5.89k
        allocated.push_back(r);
983
5.89k
        return r;
984
5.89k
    }
jsonnet::internal::Binary* jsonnet::internal::Allocator::make<jsonnet::internal::Binary, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp&&, jsonnet::internal::AST*&)
Line
Count
Source
980
127k
    {
981
127k
        auto r = new T(std::forward<Args>(args)...);
982
127k
        allocated.push_back(r);
983
127k
        return r;
984
127k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNumber, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, char const (&) [4]>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, char const (&) [4])
Line
Count
Source
980
993k
    {
981
993k
        auto r = new T(std::forward<Args>(args)...);
982
993k
        allocated.push_back(r);
983
993k
        return r;
984
993k
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
468k
    {
981
468k
        auto r = new T(std::forward<Args>(args)...);
982
468k
        allocated.push_back(r);
983
468k
        return r;
984
468k
    }
jsonnet::internal::Binary* jsonnet::internal::Allocator::make<jsonnet::internal::Binary, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp&&, jsonnet::internal::AST*&)
Line
Count
Source
980
739k
    {
981
739k
        auto r = new T(std::forward<Args>(args)...);
982
739k
        allocated.push_back(r);
983
739k
        return r;
984
739k
    }
jsonnet::internal::Binary* jsonnet::internal::Allocator::make<jsonnet::internal::Binary, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp, jsonnet::internal::Array*>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp&&, jsonnet::internal::Array*&&)
Line
Count
Source
980
468k
    {
981
468k
        auto r = new T(std::forward<Args>(args)...);
982
468k
        allocated.push_back(r);
983
468k
        return r;
984
468k
    }
jsonnet::internal::Array* jsonnet::internal::Allocator::make<jsonnet::internal::Array, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
468k
    {
981
468k
        auto r = new T(std::forward<Args>(args)...);
982
468k
        allocated.push_back(r);
983
468k
        return r;
984
468k
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
782k
    {
981
782k
        auto r = new T(std::forward<Args>(args)...);
982
782k
        allocated.push_back(r);
983
782k
        return r;
984
782k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST* const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST* const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&)
Line
Count
Source
980
228k
    {
981
228k
        auto r = new T(std::forward<Args>(args)...);
982
228k
        allocated.push_back(r);
983
228k
        return r;
984
228k
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >, jsonnet::internal::Conditional*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&&, jsonnet::internal::Conditional*&&)
Line
Count
Source
980
511k
    {
981
511k
        auto r = new T(std::forward<Args>(args)...);
982
511k
        allocated.push_back(r);
983
511k
        return r;
984
511k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::make<jsonnet::internal::Function, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Conditional*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Conditional*&&)
Line
Count
Source
980
511k
    {
981
511k
        auto r = new T(std::forward<Args>(args)...);
982
511k
        allocated.push_back(r);
983
511k
        return r;
984
511k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Binary*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Local*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Binary*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Local*&&)
Line
Count
Source
980
511k
    {
981
511k
        auto r = new T(std::forward<Args>(args)...);
982
511k
        allocated.push_back(r);
983
511k
        return r;
984
511k
    }
jsonnet::internal::Binary* jsonnet::internal::Allocator::make<jsonnet::internal::Binary, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp, jsonnet::internal::Apply*>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp&&, jsonnet::internal::Apply*&&)
Line
Count
Source
980
511k
    {
981
511k
        auto r = new T(std::forward<Args>(args)...);
982
511k
        allocated.push_back(r);
983
511k
        return r;
984
511k
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&&, jsonnet::internal::AST*&)
Line
Count
Source
980
525k
    {
981
525k
        auto r = new T(std::forward<Args>(args)...);
982
525k
        allocated.push_back(r);
983
525k
        return r;
984
525k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
511k
    {
981
511k
        auto r = new T(std::forward<Args>(args)...);
982
511k
        allocated.push_back(r);
983
511k
        return r;
984
511k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Error*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Error*&&)
Line
Count
Source
980
511k
    {
981
511k
        auto r = new T(std::forward<Args>(args)...);
982
511k
        allocated.push_back(r);
983
511k
        return r;
984
511k
    }
jsonnet::internal::Array* jsonnet::internal::Allocator::make<jsonnet::internal::Array, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
468k
    {
981
468k
        auto r = new T(std::forward<Args>(args)...);
982
468k
        allocated.push_back(r);
983
468k
        return r;
984
468k
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> > const&, jsonnet::internal::LiteralString::TokenKind, char const (&) [1], char const (&) [1]>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> > const&, jsonnet::internal::LiteralString::TokenKind&&, char const (&) [1], char const (&) [1])
Line
Count
Source
980
18.3M
    {
981
18.3M
        auto r = new T(std::forward<Args>(args)...);
982
18.3M
        allocated.push_back(r);
983
18.3M
        return r;
984
18.3M
    }
jsonnet::internal::Error* jsonnet::internal::Allocator::make<jsonnet::internal::Error, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&)
Line
Count
Source
980
1.13M
    {
981
1.13M
        auto r = new T(std::forward<Args>(args)...);
982
1.13M
        allocated.push_back(r);
983
1.13M
        return r;
984
1.13M
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&)
Line
Count
Source
980
528k
    {
981
528k
        auto r = new T(std::forward<Args>(args)...);
982
528k
        allocated.push_back(r);
983
528k
        return r;
984
528k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool, jsonnet::internal::LiteralString*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&, jsonnet::internal::LiteralString*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
4.53M
    {
981
4.53M
        auto r = new T(std::forward<Args>(args)...);
982
4.53M
        allocated.push_back(r);
983
4.53M
        return r;
984
4.53M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
405k
    {
981
405k
        auto r = new T(std::forward<Args>(args)...);
982
405k
        allocated.push_back(r);
983
405k
        return r;
984
405k
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Index*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Index*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
2.85M
    {
981
2.85M
        auto r = new T(std::forward<Args>(args)...);
982
2.85M
        allocated.push_back(r);
983
2.85M
        return r;
984
2.85M
    }
jsonnet::internal::Unary* jsonnet::internal::Allocator::make<jsonnet::internal::Unary, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::UnaryOp, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::UnaryOp&&, jsonnet::internal::AST*&)
Line
Count
Source
980
313k
    {
981
313k
        auto r = new T(std::forward<Args>(args)...);
982
313k
        allocated.push_back(r);
983
313k
        return r;
984
313k
    }
jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNull, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
437k
    {
981
437k
        auto r = new T(std::forward<Args>(args)...);
982
437k
        allocated.push_back(r);
983
437k
        return r;
984
437k
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::make<jsonnet::internal::Var, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Identifier const*&)
Line
Count
Source
980
10.5M
    {
981
10.5M
        auto r = new T(std::forward<Args>(args)...);
982
10.5M
        allocated.push_back(r);
983
10.5M
        return r;
984
10.5M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Index*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Index*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
1.26M
    {
981
1.26M
        auto r = new T(std::forward<Args>(args)...);
982
1.26M
        allocated.push_back(r);
983
1.26M
        return r;
984
1.26M
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::make<jsonnet::internal::Function, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
952k
    {
981
952k
        auto r = new T(std::forward<Args>(args)...);
982
952k
        allocated.push_back(r);
983
952k
        return r;
984
952k
    }
jsonnet::internal::Self* jsonnet::internal::Allocator::make<jsonnet::internal::Self, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
50.6k
    {
981
50.6k
        auto r = new T(std::forward<Args>(args)...);
982
50.6k
        allocated.push_back(r);
983
50.6k
        return r;
984
50.6k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralBoolean*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Error*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralBoolean*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Error*&&)
Line
Count
Source
980
98.8k
    {
981
98.8k
        auto r = new T(std::forward<Args>(args)...);
982
98.8k
        allocated.push_back(r);
983
98.8k
        return r;
984
98.8k
    }
jsonnet::internal::LiteralBoolean* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralBoolean, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
98.8k
    {
981
98.8k
        auto r = new T(std::forward<Args>(args)...);
982
98.8k
        allocated.push_back(r);
983
98.8k
        return r;
984
98.8k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::make<jsonnet::internal::Function, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
1.61M
    {
981
1.61M
        auto r = new T(std::forward<Args>(args)...);
982
1.61M
        allocated.push_back(r);
983
1.61M
        return r;
984
1.61M
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::make<jsonnet::internal::Var, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&)
Line
Count
Source
980
457k
    {
981
457k
        auto r = new T(std::forward<Args>(args)...);
982
457k
        allocated.push_back(r);
983
457k
        return r;
984
457k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::InSuper*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Binary*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::InSuper*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Binary*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&&)
Line
Count
Source
980
26.2k
    {
981
26.2k
        auto r = new T(std::forward<Args>(args)...);
982
26.2k
        allocated.push_back(r);
983
26.2k
        return r;
984
26.2k
    }
jsonnet::internal::InSuper* jsonnet::internal::Allocator::make<jsonnet::internal::InSuper, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
26.2k
    {
981
26.2k
        auto r = new T(std::forward<Args>(args)...);
982
26.2k
        allocated.push_back(r);
983
26.2k
        return r;
984
26.2k
    }
jsonnet::internal::Binary* jsonnet::internal::Allocator::make<jsonnet::internal::Binary, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::SuperIndex*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::SuperIndex*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::BinaryOp&&, jsonnet::internal::AST*&)
Line
Count
Source
980
26.2k
    {
981
26.2k
        auto r = new T(std::forward<Args>(args)...);
982
26.2k
        allocated.push_back(r);
983
26.2k
        return r;
984
26.2k
    }
jsonnet::internal::SuperIndex* jsonnet::internal::Allocator::make<jsonnet::internal::SuperIndex, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&)
Line
Count
Source
980
26.2k
    {
981
26.2k
        auto r = new T(std::forward<Args>(args)...);
982
26.2k
        allocated.push_back(r);
983
26.2k
        return r;
984
26.2k
    }
jsonnet::internal::DesugaredObject* jsonnet::internal::Allocator::make<jsonnet::internal::DesugaredObject, jsonnet::internal::LocationRange&, std::__1::list<jsonnet::internal::AST*, std::__1::allocator<jsonnet::internal::AST*> >&, std::__1::vector<jsonnet::internal::DesugaredObject::Field, std::__1::allocator<jsonnet::internal::DesugaredObject::Field> >&>(jsonnet::internal::LocationRange&, std::__1::list<jsonnet::internal::AST*, std::__1::allocator<jsonnet::internal::AST*> >&, std::__1::vector<jsonnet::internal::DesugaredObject::Field, std::__1::allocator<jsonnet::internal::DesugaredObject::Field> >&)
Line
Count
Source
980
688k
    {
981
688k
        auto r = new T(std::forward<Args>(args)...);
982
688k
        allocated.push_back(r);
983
688k
        return r;
984
688k
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
1.81M
    {
981
1.81M
        auto r = new T(std::forward<Args>(args)...);
982
1.81M
        allocated.push_back(r);
983
1.81M
        return r;
984
1.81M
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool, jsonnet::internal::LiteralNumber*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&, jsonnet::internal::LiteralNumber*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
60.1k
    {
981
60.1k
        auto r = new T(std::forward<Args>(args)...);
982
60.1k
        allocated.push_back(r);
983
60.1k
        return r;
984
60.1k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNumber, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&)
Line
Count
Source
980
60.1k
    {
981
60.1k
        auto r = new T(std::forward<Args>(args)...);
982
60.1k
        allocated.push_back(r);
983
60.1k
        return r;
984
60.1k
    }
jsonnet::internal::ArrayComprehension* jsonnet::internal::Allocator::make<jsonnet::internal::ArrayComprehension, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Array*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool, std::__1::vector<jsonnet::internal::ComprehensionSpec, std::__1::allocator<jsonnet::internal::ComprehensionSpec> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Array*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&, std::__1::vector<jsonnet::internal::ComprehensionSpec, std::__1::allocator<jsonnet::internal::ComprehensionSpec> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
56.5k
    {
981
56.5k
        auto r = new T(std::forward<Args>(args)...);
982
56.5k
        allocated.push_back(r);
983
56.5k
        return r;
984
56.5k
    }
jsonnet::internal::Array* jsonnet::internal::Allocator::make<jsonnet::internal::Array, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >&, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Array::Element, std::__1::allocator<jsonnet::internal::Array::Element> >&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
56.5k
    {
981
56.5k
        auto r = new T(std::forward<Args>(args)...);
982
56.5k
        allocated.push_back(r);
983
56.5k
        return r;
984
56.5k
    }
jsonnet::internal::ObjectComprehensionSimple* jsonnet::internal::Allocator::make<jsonnet::internal::ObjectComprehensionSimple, jsonnet::internal::LocationRange&, jsonnet::internal::Index*, jsonnet::internal::Local*, jsonnet::internal::Identifier const*&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, jsonnet::internal::Index*&&, jsonnet::internal::Local*&&, jsonnet::internal::Identifier const*&, jsonnet::internal::AST*&)
Line
Count
Source
980
56.5k
    {
981
56.5k
        auto r = new T(std::forward<Args>(args)...);
982
56.5k
        allocated.push_back(r);
983
56.5k
        return r;
984
56.5k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr), std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, decltype(nullptr)&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&)
Line
Count
Source
980
56.5k
    {
981
56.5k
        auto r = new T(std::forward<Args>(args)...);
982
56.5k
        allocated.push_back(r);
983
56.5k
        return r;
984
56.5k
    }
jsonnet::internal::BuiltinFunction* jsonnet::internal::Allocator::make<jsonnet::internal::BuiltinFunction, jsonnet::internal::LocationRange const&, jsonnet::internal::BuiltinFunctionBody const*&>(jsonnet::internal::LocationRange const&, jsonnet::internal::BuiltinFunctionBody const*&)
Line
Count
Source
980
540k
    {
981
540k
        auto r = new T(std::forward<Args>(args)...);
982
540k
        allocated.push_back(r);
983
540k
        return r;
984
540k
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >, jsonnet::internal::Conditional*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&&, jsonnet::internal::Conditional*&&)
Line
Count
Source
980
6.97k
    {
981
6.97k
        auto r = new T(std::forward<Args>(args)...);
982
6.97k
        allocated.push_back(r);
983
6.97k
        return r;
984
6.97k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Apply*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Var*>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Apply*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Var*&&)
Line
Count
Source
980
6.97k
    {
981
6.97k
        auto r = new T(std::forward<Args>(args)...);
982
6.97k
        allocated.push_back(r);
983
6.97k
        return r;
984
6.97k
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
6.97k
    {
981
6.97k
        auto r = new T(std::forward<Args>(args)...);
982
6.97k
        allocated.push_back(r);
983
6.97k
        return r;
984
6.97k
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::make<jsonnet::internal::Var, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&)
Line
Count
Source
980
13.9k
    {
981
13.9k
        auto r = new T(std::forward<Args>(args)...);
982
13.9k
        allocated.push_back(r);
983
13.9k
        return r;
984
13.9k
    }
Unexecuted instantiation: jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&&, jsonnet::internal::AST*&)
Unexecuted instantiation: jsonnet::internal::ApplyBrace* jsonnet::internal::Allocator::make<jsonnet::internal::ApplyBrace, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, jsonnet::internal::AST*&)
Unexecuted instantiation: jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNull, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
985
986
    template <class T>
987
    T *clone(T *ast)
988
29.5M
    {
989
29.5M
        auto r = new T(*ast);
990
29.5M
        allocated.push_back(r);
991
29.5M
        return r;
992
29.5M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::clone<jsonnet::internal::Apply>(jsonnet::internal::Apply*)
Line
Count
Source
988
1.34M
    {
989
1.34M
        auto r = new T(*ast);
990
1.34M
        allocated.push_back(r);
991
1.34M
        return r;
992
1.34M
    }
Unexecuted instantiation: jsonnet::internal::ApplyBrace* jsonnet::internal::Allocator::clone<jsonnet::internal::ApplyBrace>(jsonnet::internal::ApplyBrace*)
jsonnet::internal::Array* jsonnet::internal::Allocator::clone<jsonnet::internal::Array>(jsonnet::internal::Array*)
Line
Count
Source
988
860k
    {
989
860k
        auto r = new T(*ast);
990
860k
        allocated.push_back(r);
991
860k
        return r;
992
860k
    }
Unexecuted instantiation: jsonnet::internal::ArrayComprehension* jsonnet::internal::Allocator::clone<jsonnet::internal::ArrayComprehension>(jsonnet::internal::ArrayComprehension*)
Unexecuted instantiation: jsonnet::internal::Assert* jsonnet::internal::Allocator::clone<jsonnet::internal::Assert>(jsonnet::internal::Assert*)
jsonnet::internal::Binary* jsonnet::internal::Allocator::clone<jsonnet::internal::Binary>(jsonnet::internal::Binary*)
Line
Count
Source
988
2.22M
    {
989
2.22M
        auto r = new T(*ast);
990
2.22M
        allocated.push_back(r);
991
2.22M
        return r;
992
2.22M
    }
Unexecuted instantiation: jsonnet::internal::BuiltinFunction* jsonnet::internal::Allocator::clone<jsonnet::internal::BuiltinFunction>(jsonnet::internal::BuiltinFunction*)
jsonnet::internal::Conditional* jsonnet::internal::Allocator::clone<jsonnet::internal::Conditional>(jsonnet::internal::Conditional*)
Line
Count
Source
988
1.08M
    {
989
1.08M
        auto r = new T(*ast);
990
1.08M
        allocated.push_back(r);
991
1.08M
        return r;
992
1.08M
    }
jsonnet::internal::DesugaredObject* jsonnet::internal::Allocator::clone<jsonnet::internal::DesugaredObject>(jsonnet::internal::DesugaredObject*)
Line
Count
Source
988
1.41M
    {
989
1.41M
        auto r = new T(*ast);
990
1.41M
        allocated.push_back(r);
991
1.41M
        return r;
992
1.41M
    }
Unexecuted instantiation: jsonnet::internal::Dollar* jsonnet::internal::Allocator::clone<jsonnet::internal::Dollar>(jsonnet::internal::Dollar*)
jsonnet::internal::Error* jsonnet::internal::Allocator::clone<jsonnet::internal::Error>(jsonnet::internal::Error*)
Line
Count
Source
988
309k
    {
989
309k
        auto r = new T(*ast);
990
309k
        allocated.push_back(r);
991
309k
        return r;
992
309k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::clone<jsonnet::internal::Function>(jsonnet::internal::Function*)
Line
Count
Source
988
196k
    {
989
196k
        auto r = new T(*ast);
990
196k
        allocated.push_back(r);
991
196k
        return r;
992
196k
    }
jsonnet::internal::Import* jsonnet::internal::Allocator::clone<jsonnet::internal::Import>(jsonnet::internal::Import*)
Line
Count
Source
988
3.99k
    {
989
3.99k
        auto r = new T(*ast);
990
3.99k
        allocated.push_back(r);
991
3.99k
        return r;
992
3.99k
    }
jsonnet::internal::Importstr* jsonnet::internal::Allocator::clone<jsonnet::internal::Importstr>(jsonnet::internal::Importstr*)
Line
Count
Source
988
8.93k
    {
989
8.93k
        auto r = new T(*ast);
990
8.93k
        allocated.push_back(r);
991
8.93k
        return r;
992
8.93k
    }
jsonnet::internal::Importbin* jsonnet::internal::Allocator::clone<jsonnet::internal::Importbin>(jsonnet::internal::Importbin*)
Line
Count
Source
988
90.2k
    {
989
90.2k
        auto r = new T(*ast);
990
90.2k
        allocated.push_back(r);
991
90.2k
        return r;
992
90.2k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::clone<jsonnet::internal::Index>(jsonnet::internal::Index*)
Line
Count
Source
988
1.55M
    {
989
1.55M
        auto r = new T(*ast);
990
1.55M
        allocated.push_back(r);
991
1.55M
        return r;
992
1.55M
    }
jsonnet::internal::InSuper* jsonnet::internal::Allocator::clone<jsonnet::internal::InSuper>(jsonnet::internal::InSuper*)
Line
Count
Source
988
318k
    {
989
318k
        auto r = new T(*ast);
990
318k
        allocated.push_back(r);
991
318k
        return r;
992
318k
    }
jsonnet::internal::LiteralBoolean* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralBoolean>(jsonnet::internal::LiteralBoolean*)
Line
Count
Source
988
159k
    {
989
159k
        auto r = new T(*ast);
990
159k
        allocated.push_back(r);
991
159k
        return r;
992
159k
    }
jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNull>(jsonnet::internal::LiteralNull*)
Line
Count
Source
988
108k
    {
989
108k
        auto r = new T(*ast);
990
108k
        allocated.push_back(r);
991
108k
        return r;
992
108k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNumber>(jsonnet::internal::LiteralNumber*)
Line
Count
Source
988
2.24M
    {
989
2.24M
        auto r = new T(*ast);
990
2.24M
        allocated.push_back(r);
991
2.24M
        return r;
992
2.24M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralString>(jsonnet::internal::LiteralString*)
Line
Count
Source
988
3.96M
    {
989
3.96M
        auto r = new T(*ast);
990
3.96M
        allocated.push_back(r);
991
3.96M
        return r;
992
3.96M
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::clone<jsonnet::internal::Local>(jsonnet::internal::Local*)
Line
Count
Source
988
631k
    {
989
631k
        auto r = new T(*ast);
990
631k
        allocated.push_back(r);
991
631k
        return r;
992
631k
    }
Unexecuted instantiation: jsonnet::internal::Object* jsonnet::internal::Allocator::clone<jsonnet::internal::Object>(jsonnet::internal::Object*)
Unexecuted instantiation: jsonnet::internal::ObjectComprehension* jsonnet::internal::Allocator::clone<jsonnet::internal::ObjectComprehension>(jsonnet::internal::ObjectComprehension*)
jsonnet::internal::ObjectComprehensionSimple* jsonnet::internal::Allocator::clone<jsonnet::internal::ObjectComprehensionSimple>(jsonnet::internal::ObjectComprehensionSimple*)
Line
Count
Source
988
102k
    {
989
102k
        auto r = new T(*ast);
990
102k
        allocated.push_back(r);
991
102k
        return r;
992
102k
    }
Unexecuted instantiation: jsonnet::internal::Parens* jsonnet::internal::Allocator::clone<jsonnet::internal::Parens>(jsonnet::internal::Parens*)
jsonnet::internal::Self* jsonnet::internal::Allocator::clone<jsonnet::internal::Self>(jsonnet::internal::Self*)
Line
Count
Source
988
26.5k
    {
989
26.5k
        auto r = new T(*ast);
990
26.5k
        allocated.push_back(r);
991
26.5k
        return r;
992
26.5k
    }
jsonnet::internal::SuperIndex* jsonnet::internal::Allocator::clone<jsonnet::internal::SuperIndex>(jsonnet::internal::SuperIndex*)
Line
Count
Source
988
333k
    {
989
333k
        auto r = new T(*ast);
990
333k
        allocated.push_back(r);
991
333k
        return r;
992
333k
    }
jsonnet::internal::Unary* jsonnet::internal::Allocator::clone<jsonnet::internal::Unary>(jsonnet::internal::Unary*)
Line
Count
Source
988
6.06M
    {
989
6.06M
        auto r = new T(*ast);
990
6.06M
        allocated.push_back(r);
991
6.06M
        return r;
992
6.06M
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::clone<jsonnet::internal::Var>(jsonnet::internal::Var*)
Line
Count
Source
988
6.46M
    {
989
6.46M
        auto r = new T(*ast);
990
6.46M
        allocated.push_back(r);
991
6.46M
        return r;
992
6.46M
    }
993
    /** Returns interned identifiers.
994
     *
995
     * The location used in the Identifier AST is that of the first one parsed.
996
     */
997
    const Identifier *makeIdentifier(const UString &name)
998
90.8M
    {
999
90.8M
        auto it = internedIdentifiers.find(name);
1000
90.8M
        if (it != internedIdentifiers.end()) {
1001
87.1M
            return it->second;
1002
87.1M
        }
1003
3.66M
        auto r = new Identifier(name);
1004
3.66M
        internedIdentifiers[name] = r;
1005
3.66M
        return r;
1006
90.8M
    }
1007
    template <typename F>
1008
    const BuiltinFunctionBody *makeBuiltinBody(const LocationRange &loc, const std::string &name, F&& make_params)
1009
540k
    {
1010
540k
        auto it = internedBuiltins.find(name);
1011
540k
        if (it != internedBuiltins.end()) {
1012
247k
            return it->second;
1013
247k
        }
1014
292k
        const Identifiers params = make_params();
1015
292k
        auto r = new BuiltinFunctionBody(loc, name, params);
1016
292k
        internedBuiltins[name] = r;
1017
292k
        return r;
1018
540k
    }
Unexecuted instantiation: vm.cpp:jsonnet::internal::BuiltinFunctionBody const* jsonnet::internal::Allocator::makeBuiltinBody<jsonnet::internal::(anonymous namespace)::Interpreter::builtinNative(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::(anonymous namespace)::Value, std::__1::allocator<jsonnet::internal::(anonymous namespace)::Value> > const&)::{lambda()#1}>(jsonnet::internal::LocationRange const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, jsonnet::internal::(anonymous namespace)::Interpreter::builtinNative(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::(anonymous namespace)::Value, std::__1::allocator<jsonnet::internal::(anonymous namespace)::Value> > const&)::{lambda()#1}&&)
jsonnet::internal::BuiltinFunctionBody const* jsonnet::internal::Allocator::makeBuiltinBody<jsonnet::internal::Desugarer::stdlibAST(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)::{lambda()#1}>(jsonnet::internal::LocationRange const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, jsonnet::internal::Desugarer::stdlibAST(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)::{lambda()#1}&&)
Line
Count
Source
1009
540k
    {
1010
540k
        auto it = internedBuiltins.find(name);
1011
540k
        if (it != internedBuiltins.end()) {
1012
247k
            return it->second;
1013
247k
        }
1014
292k
        const Identifiers params = make_params();
1015
292k
        auto r = new BuiltinFunctionBody(loc, name, params);
1016
292k
        internedBuiltins[name] = r;
1017
292k
        return r;
1018
540k
    }
1019
    ~Allocator()
1020
12.8k
    {
1021
187M
        for (auto x : allocated) {
1022
187M
            delete x;
1023
187M
        }
1024
12.8k
        allocated.clear();
1025
3.66M
        for (const auto &x : internedIdentifiers) {
1026
3.66M
            delete x.second;
1027
3.66M
        }
1028
12.8k
        internedIdentifiers.clear();
1029
292k
        for (const auto &x : internedBuiltins) {
1030
292k
            delete x.second;
1031
292k
        }
1032
12.8k
        internedBuiltins.clear();
1033
12.8k
    }
1034
};
1035
1036
namespace {
1037
1038
// Precedences used by various compilation units are defined here.
1039
const int APPLY_PRECEDENCE = 2;         // Function calls and indexing.
1040
const int UNARY_PRECEDENCE = 4;         // Logical and bitwise negation, unary + -
1041
const int MAX_PRECEDENCE = 15;          // higher than any other precedence
1042
1043
/** These are the binary operator precedences, unary precedence is given by
1044
 * UNARY_PRECEDENCE.
1045
 */
1046
std::map<BinaryOp, int> build_precedence_map(void)
1047
35
{
1048
35
    std::map<BinaryOp, int> r;
1049
1050
35
    r[BOP_MULT] = 5;
1051
35
    r[BOP_DIV] = 5;
1052
35
    r[BOP_PERCENT] = 5;
1053
1054
35
    r[BOP_PLUS] = 6;
1055
35
    r[BOP_MINUS] = 6;
1056
1057
35
    r[BOP_SHIFT_L] = 7;
1058
35
    r[BOP_SHIFT_R] = 7;
1059
1060
35
    r[BOP_GREATER] = 8;
1061
35
    r[BOP_GREATER_EQ] = 8;
1062
35
    r[BOP_LESS] = 8;
1063
35
    r[BOP_LESS_EQ] = 8;
1064
35
    r[BOP_IN] = 8;
1065
1066
35
    r[BOP_MANIFEST_EQUAL] = 9;
1067
35
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
35
    r[BOP_BITWISE_AND] = 10;
1070
1071
35
    r[BOP_BITWISE_XOR] = 11;
1072
1073
35
    r[BOP_BITWISE_OR] = 12;
1074
1075
35
    r[BOP_AND] = 13;
1076
1077
35
    r[BOP_OR] = 14;
1078
1079
35
    return r;
1080
35
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
1081
1082
std::map<std::string, UnaryOp> build_unary_map(void)
1083
35
{
1084
35
    std::map<std::string, UnaryOp> r;
1085
35
    r["!"] = UOP_NOT;
1086
35
    r["~"] = UOP_BITWISE_NOT;
1087
35
    r["+"] = UOP_PLUS;
1088
35
    r["-"] = UOP_MINUS;
1089
35
    return r;
1090
35
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
1091
1092
std::map<std::string, BinaryOp> build_binary_map(void)
1093
35
{
1094
35
    std::map<std::string, BinaryOp> r;
1095
1096
35
    r["*"] = BOP_MULT;
1097
35
    r["/"] = BOP_DIV;
1098
35
    r["%"] = BOP_PERCENT;
1099
1100
35
    r["+"] = BOP_PLUS;
1101
35
    r["-"] = BOP_MINUS;
1102
1103
35
    r["<<"] = BOP_SHIFT_L;
1104
35
    r[">>"] = BOP_SHIFT_R;
1105
1106
35
    r[">"] = BOP_GREATER;
1107
35
    r[">="] = BOP_GREATER_EQ;
1108
35
    r["<"] = BOP_LESS;
1109
35
    r["<="] = BOP_LESS_EQ;
1110
35
    r["in"] = BOP_IN;
1111
1112
35
    r["=="] = BOP_MANIFEST_EQUAL;
1113
35
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
35
    r["&"] = BOP_BITWISE_AND;
1116
35
    r["^"] = BOP_BITWISE_XOR;
1117
35
    r["|"] = BOP_BITWISE_OR;
1118
1119
35
    r["&&"] = BOP_AND;
1120
35
    r["||"] = BOP_OR;
1121
35
    return r;
1122
35
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
1123
1124
auto precedence_map = build_precedence_map();
1125
auto unary_map = build_unary_map();
1126
auto binary_map = build_binary_map();
1127
1128
}  // namespace
1129
1130
}  // namespace jsonnet::internal
1131
1132
#endif  // JSONNET_AST_H