Coverage Report

Created: 2026-06-30 07:00

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
7.48M
    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
251M
        : location(location), type(type), openFodder(open_fodder)
133
251M
    {
134
251M
    }
135
289M
    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.64M
        : idFodder(id_fodder), id(id), expr(nullptr), commaFodder(comma_fodder)
159
1.64M
    {
160
1.64M
    }
161
    // Only has expr
162
    ArgParam(AST *expr, const Fodder &comma_fodder)
163
17.7M
        : id(nullptr), expr(expr), commaFodder(comma_fodder)
164
17.7M
    {
165
17.7M
    }
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
36.9M
        : idFodder(id_fodder), id(id), eqFodder(eq_fodder), expr(expr), commaFodder(comma_fodder)
170
36.9M
    {
171
36.9M
    }
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
1.25M
        : kind(kind),
188
1.25M
          openFodder(open_fodder),
189
1.25M
          varFodder(var_fodder),
190
1.25M
          var(var),
191
1.25M
          inFodder(in_fodder),
192
1.25M
          expr(expr)
193
1.25M
    {
194
1.25M
    }
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
26.0M
        : AST(lr, AST_APPLY, open_fodder),
210
26.0M
          target(target),
211
26.0M
          fodderL(fodder_l),
212
26.0M
          args(args),
213
26.0M
          trailingComma(trailing_comma),
214
26.0M
          fodderR(fodder_r),
215
26.0M
          tailstrictFodder(tailstrict_fodder),
216
26.0M
          tailstrict(tailstrict)
217
26.0M
    {
218
26.0M
    }
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
211k
        : AST(lr, AST_APPLY_BRACE, open_fodder), left(left), right(right)
227
211k
    {
228
211k
    }
229
};
230
231
/** Represents array constructors [1, 2, 3]. */
232
struct Array : public AST {
233
    struct Element {
234
        AST *expr;
235
        Fodder commaFodder;
236
6.79M
        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
3.80M
        : AST(lr, AST_ARRAY, open_fodder),
245
3.80M
          elements(elements),
246
3.80M
          trailingComma(trailing_comma),
247
3.80M
          closeFodder(close_fodder)
248
3.80M
    {
249
3.80M
    }
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
751k
        : AST(lr, AST_ARRAY_COMPREHENSION, open_fodder),
263
751k
          body(body),
264
751k
          commaFodder(comma_fodder),
265
751k
          trailingComma(trailing_comma),
266
751k
          specs(specs),
267
751k
          closeFodder(close_fodder)
268
751k
    {
269
751k
        assert(specs.size() > 0);
270
751k
    }
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
848k
        : AST(lr, AST_ASSERT, open_fodder),
287
848k
          cond(cond),
288
848k
          colonFodder(colon_fodder),
289
848k
          message(message),
290
848k
          semicolonFodder(semicolon_fodder),
291
848k
          rest(rest)
292
848k
    {
293
848k
    }
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
562
{
326
562
    switch (bop) {
327
18
        case BOP_MULT: return "*";
328
17
        case BOP_DIV: return "/";
329
0
        case BOP_PERCENT: return "%";
330
331
188
        case BOP_PLUS: return "+";
332
56
        case BOP_MINUS: return "-";
333
334
10
        case BOP_SHIFT_L: return "<<";
335
6
        case BOP_SHIFT_R: return ">>";
336
337
50
        case BOP_GREATER: return ">";
338
38
        case BOP_GREATER_EQ: return ">=";
339
58
        case BOP_LESS: return "<";
340
26
        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
32
        case BOP_BITWISE_AND: return "&";
347
24
        case BOP_BITWISE_XOR: return "^";
348
21
        case BOP_BITWISE_OR: return "|";
349
350
5
        case BOP_AND: return "&&";
351
13
        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
562
    }
357
562
}
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
562
{
326
562
    switch (bop) {
327
18
        case BOP_MULT: return "*";
328
17
        case BOP_DIV: return "/";
329
0
        case BOP_PERCENT: return "%";
330
331
188
        case BOP_PLUS: return "+";
332
56
        case BOP_MINUS: return "-";
333
334
10
        case BOP_SHIFT_L: return "<<";
335
6
        case BOP_SHIFT_R: return ">>";
336
337
50
        case BOP_GREATER: return ">";
338
38
        case BOP_GREATER_EQ: return ">=";
339
58
        case BOP_LESS: return "<";
340
26
        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
32
        case BOP_BITWISE_AND: return "&";
347
24
        case BOP_BITWISE_XOR: return "^";
348
21
        case BOP_BITWISE_OR: return "|";
349
350
5
        case BOP_AND: return "&&";
351
13
        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
562
    }
357
562
}
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
20.9M
        : AST(lr, AST_BINARY, open_fodder), left(left), opFodder(op_fodder), op(op), right(right)
368
20.9M
    {
369
20.9M
    }
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
471k
        : AST(lr, AST_BUILTIN_FUNCTION_BODY, Fodder{}), name(name), params(params)
383
471k
    {
384
471k
    }
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
867k
        : AST(lr, AST_BUILTIN_FUNCTION, Fodder{}), body(body)
396
867k
    {
397
867k
    }
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
9.74M
        : AST(lr, AST_CONDITIONAL, open_fodder),
415
9.74M
          cond(cond),
416
9.74M
          thenFodder(then_fodder),
417
9.74M
          branchTrue(branch_true),
418
9.74M
          elseFodder(else_fodder),
419
9.74M
          branchFalse(branch_false)
420
9.74M
    {
421
9.74M
    }
422
};
423
424
/** Represents the $ keyword. */
425
struct Dollar : public AST {
426
100k
    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
3.11M
        : AST(lr, AST_ERROR, open_fodder), expr(expr)
434
3.11M
    {
435
3.11M
    }
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
5.36M
        : AST(lr, AST_FUNCTION, open_fodder),
449
5.36M
          parenLeftFodder(paren_left_fodder),
450
5.36M
          params(params),
451
5.36M
          trailingComma(trailing_comma),
452
5.36M
          parenRightFodder(paren_right_fodder),
453
5.36M
          body(body)
454
5.36M
    {
455
5.36M
    }
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
1.34k
        : AST(lr, AST_IMPORT, open_fodder), file(file)
465
1.34k
    {
466
1.34k
    }
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.59k
        : AST(lr, AST_IMPORTSTR, open_fodder), file(file)
474
2.59k
    {
475
2.59k
    }
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.38k
        : AST(lr, AST_IMPORTBIN, open_fodder), file(file)
483
1.38k
    {
484
1.38k
    }
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
14.8M
        : AST(lr, AST_INDEX, open_fodder),
506
14.8M
          target(target),
507
14.8M
          dotFodder(dot_fodder),
508
14.8M
          isSlice(false),
509
14.8M
          index(nullptr),
510
14.8M
          end(nullptr),
511
14.8M
          step(nullptr),
512
14.8M
          idFodder(id_fodder),
513
14.8M
          id(id)
514
14.8M
    {
515
14.8M
    }
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
11.8M
        : AST(lr, AST_INDEX, open_fodder),
521
11.8M
          target(target),
522
11.8M
          dotFodder(dot_fodder),
523
11.8M
          isSlice(is_slice),
524
11.8M
          index(index),
525
11.8M
          endColonFodder(end_colon_fodder),
526
11.8M
          end(end),
527
11.8M
          stepColonFodder(step_colon_fodder),
528
11.8M
          step(step),
529
11.8M
          idFodder(id_fodder),
530
11.8M
          id(nullptr)
531
11.8M
    {
532
11.8M
    }
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
8.78M
            : varFodder(var_fodder),
552
8.78M
              var(var),
553
8.78M
              opFodder(op_fodder),
554
8.78M
              body(body),
555
8.78M
              functionSugar(function_sugar),
556
8.78M
              parenLeftFodder(paren_left_fodder),
557
8.78M
              params(params),
558
8.78M
              trailingComma(trailing_comma),
559
8.78M
              parenRightFodder(paren_right_fodder),
560
8.78M
              closeFodder(close_fodder)
561
8.78M
        {
562
8.78M
        }
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
9.49M
        : AST(lr, AST_LOCAL, open_fodder), binds(binds), body(body)
569
9.49M
    {
570
9.49M
    }
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.84M
        : AST(lr, AST_LITERAL_BOOLEAN, open_fodder), value(value)
578
1.84M
    {
579
1.84M
    }
580
};
581
582
/** Represents the null keyword. */
583
struct LiteralNull : public AST {
584
    LiteralNull(const LocationRange &lr, const Fodder &open_fodder)
585
1.07M
        : AST(lr, AST_LITERAL_NULL, open_fodder)
586
1.07M
    {
587
1.07M
    }
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
13.2M
        : AST(lr, AST_LITERAL_NUMBER, open_fodder),
596
13.2M
          value(strtod(str.c_str(), nullptr)),
597
13.2M
          originalString(str)
598
13.2M
    {
599
13.2M
    }
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
39.5M
        : AST(lr, AST_LITERAL_STRING, open_fodder),
613
39.5M
          value(value),
614
39.5M
          tokenKind(token_kind),
615
39.5M
          blockIndent(block_indent),
616
39.5M
          blockTermIndent(block_term_indent)
617
39.5M
    {
618
39.5M
    }
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
5.30M
        : kind(kind),
683
5.30M
          fodder1(fodder1),
684
5.30M
          fodder2(fodder2),
685
5.30M
          fodderL(fodder_l),
686
5.30M
          fodderR(fodder_r),
687
5.30M
          hide(hide),
688
5.30M
          superSugar(super_sugar),
689
5.30M
          methodSugar(method_sugar),
690
5.30M
          expr1(expr1),
691
5.30M
          id(id),
692
5.30M
          idLocation(id_lr),
693
5.30M
          params(params),
694
5.30M
          trailingComma(trailing_comma),
695
5.30M
          opFodder(op_fodder),
696
5.30M
          expr2(expr2),
697
5.30M
          expr3(expr3),
698
5.30M
          commaFodder(comma_fodder)
699
5.30M
    {
700
        // Enforce what is written in comments above.
701
5.30M
        assert(kind != ASSERT || (hide == VISIBLE && !superSugar && !methodSugar));
702
5.30M
        assert(kind != LOCAL || (hide == VISIBLE && !superSugar));
703
5.30M
        assert(kind != FIELD_ID || (id != nullptr && expr1 == nullptr));
704
5.30M
        assert(kind == FIELD_ID || kind == LOCAL || id == nullptr);
705
5.30M
        assert(methodSugar || (params.size() == 0 && !trailingComma));
706
5.30M
        assert(kind == ASSERT || expr3 == nullptr);
707
5.30M
    }
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
145k
    {
714
145k
        return ObjectField(LOCAL,
715
145k
                           fodder1,
716
145k
                           fodder2,
717
145k
                           fodder_l,
718
145k
                           fodder_r,
719
145k
                           VISIBLE,
720
145k
                           false,
721
145k
                           method_sugar,
722
145k
                           nullptr,
723
145k
                           id,
724
145k
                           LocationRange(),
725
145k
                           params,
726
145k
                           trailing_comma,
727
145k
                           op_fodder,
728
145k
                           body,
729
145k
                           nullptr,
730
145k
                           comma_fodder);
731
145k
    }
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
68.8k
    {
735
68.8k
        return ObjectField(LOCAL,
736
68.8k
                           fodder1,
737
68.8k
                           fodder2,
738
68.8k
                           Fodder{},
739
68.8k
                           Fodder{},
740
68.8k
                           VISIBLE,
741
68.8k
                           false,
742
68.8k
                           false,
743
68.8k
                           nullptr,
744
68.8k
                           id,
745
68.8k
                           LocationRange(),
746
68.8k
                           ArgParams{},
747
68.8k
                           false,
748
68.8k
                           op_fodder,
749
68.8k
                           body,
750
68.8k
                           nullptr,
751
68.8k
                           comma_fodder);
752
68.8k
    }
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
94.4k
    {
780
94.4k
        return ObjectField(ASSERT,
781
94.4k
                           fodder1,
782
94.4k
                           Fodder{},
783
94.4k
                           Fodder{},
784
94.4k
                           Fodder{},
785
94.4k
                           VISIBLE,
786
94.4k
                           false,
787
94.4k
                           false,
788
94.4k
                           nullptr,
789
94.4k
                           nullptr,
790
94.4k
                           LocationRange(),
791
94.4k
                           ArgParams{},
792
94.4k
                           false,
793
94.4k
                           op_fodder,
794
94.4k
                           body,
795
94.4k
                           msg,
796
94.4k
                           comma_fodder);
797
94.4k
    }
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
1.11M
        : AST(lr, AST_OBJECT, open_fodder),
813
1.11M
          fields(fields),
814
1.11M
          trailingComma(trailing_comma),
815
1.11M
          closeFodder(close_fodder)
816
1.11M
    {
817
1.11M
        assert(fields.size() > 0 || !trailing_comma);
818
1.11M
        if (fields.size() > 0)
819
1.11M
            assert(trailing_comma || fields[fields.size() - 1].commaFodder.size() == 0);
820
1.11M
    }
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
5.61M
            : hide(hide), name(name), body(body)
834
5.61M
        {
835
5.61M
        }
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
1.09M
        : AST(lr, AST_DESUGARED_OBJECT, Fodder{}), asserts(asserts), fields(fields)
842
1.09M
    {
843
1.09M
    }
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
93.4k
        : AST(lr, AST_OBJECT_COMPREHENSION, open_fodder),
857
93.4k
          fields(fields),
858
93.4k
          trailingComma(trailing_comma),
859
93.4k
          specs(specs),
860
93.4k
          closeFodder(close_fodder)
861
93.4k
    {
862
93.4k
    }
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
89.6k
        : AST(lr, AST_OBJECT_COMPREHENSION_SIMPLE, Fodder{}),
874
89.6k
          field(field),
875
89.6k
          value(value),
876
89.6k
          id(id),
877
89.6k
          array(array)
878
89.6k
    {
879
89.6k
    }
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
1.03M
        : AST(lr, AST_PARENS, open_fodder), expr(expr), closeFodder(close_fodder)
889
1.03M
    {
890
1.03M
    }
891
};
892
893
/** Represents the self keyword. */
894
struct Self : public AST {
895
216k
    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
42.2k
        : AST(lr, AST_SUPER_INDEX, open_fodder),
911
42.2k
          dotFodder(dot_fodder),
912
42.2k
          index(index),
913
42.2k
          idFodder(id_fodder),
914
42.2k
          id(id)
915
42.2k
    {
916
42.2k
    }
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
36.7k
        : AST(lr, AST_IN_SUPER, open_fodder),
928
36.7k
          element(element),
929
36.7k
          inFodder(in_fodder),
930
36.7k
          superFodder(super_fodder)
931
36.7k
    {
932
36.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
308
{
939
308
    switch (uop) {
940
198
        case UOP_PLUS: return "+";
941
25
        case UOP_MINUS: return "-";
942
11
        case UOP_BITWISE_NOT: return "~";
943
74
        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
308
    }
949
308
}
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
308
{
939
308
    switch (uop) {
940
198
        case UOP_PLUS: return "+";
941
25
        case UOP_MINUS: return "-";
942
11
        case UOP_BITWISE_NOT: return "~";
943
74
        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
308
    }
949
308
}
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.90M
        : AST(lr, AST_UNARY, open_fodder), op(op), expr(expr)
957
1.90M
    {
958
1.90M
    }
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
82.2M
        : AST(lr, AST_VAR, open_fodder), id(id)
966
82.2M
    {
967
82.2M
    }
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
251M
    {
981
251M
        auto r = new T(std::forward<Args>(args)...);
982
251M
        allocated.push_back(r);
983
251M
        return r;
984
251M
    }
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
848k
    {
981
848k
        auto r = new T(std::forward<Args>(args)...);
982
848k
        allocated.push_back(r);
983
848k
        return r;
984
848k
    }
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.35M
    {
981
1.35M
        auto r = new T(std::forward<Args>(args)...);
982
1.35M
        allocated.push_back(r);
983
1.35M
        return r;
984
1.35M
    }
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
6.65M
    {
981
6.65M
        auto r = new T(std::forward<Args>(args)...);
982
6.65M
        allocated.push_back(r);
983
6.65M
        return r;
984
6.65M
    }
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
83.1k
    {
981
83.1k
        auto r = new T(std::forward<Args>(args)...);
982
83.1k
        allocated.push_back(r);
983
83.1k
        return r;
984
83.1k
    }
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
415k
    {
981
415k
        auto r = new T(std::forward<Args>(args)...);
982
415k
        allocated.push_back(r);
983
415k
        return r;
984
415k
    }
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
1.34k
    {
981
1.34k
        auto r = new T(std::forward<Args>(args)...);
982
1.34k
        allocated.push_back(r);
983
1.34k
        return r;
984
1.34k
    }
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.59k
    {
981
2.59k
        auto r = new T(std::forward<Args>(args)...);
982
2.59k
        allocated.push_back(r);
983
2.59k
        return r;
984
2.59k
    }
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.38k
    {
981
1.38k
        auto r = new T(std::forward<Args>(args)...);
982
1.38k
        allocated.push_back(r);
983
1.38k
        return r;
984
1.38k
    }
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
4.99M
    {
981
4.99M
        auto r = new T(std::forward<Args>(args)...);
982
4.99M
        allocated.push_back(r);
983
4.99M
        return r;
984
4.99M
    }
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
1.39M
    {
981
1.39M
        auto r = new T(std::forward<Args>(args)...);
982
1.39M
        allocated.push_back(r);
983
1.39M
        return r;
984
1.39M
    }
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
1.11M
    {
981
1.11M
        auto r = new T(std::forward<Args>(args)...);
982
1.11M
        allocated.push_back(r);
983
1.11M
        return r;
984
1.11M
    }
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
93.4k
    {
981
93.4k
        auto r = new T(std::forward<Args>(args)...);
982
93.4k
        allocated.push_back(r);
983
93.4k
        return r;
984
93.4k
    }
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
226k
    {
981
226k
        auto r = new T(std::forward<Args>(args)...);
982
226k
        allocated.push_back(r);
983
226k
        return r;
984
226k
    }
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
3.94k
    {
981
3.94k
        auto r = new T(std::forward<Args>(args)...);
982
3.94k
        allocated.push_back(r);
983
3.94k
        return r;
984
3.94k
    }
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
475k
    {
981
475k
        auto r = new T(std::forward<Args>(args)...);
982
475k
        allocated.push_back(r);
983
475k
        return r;
984
475k
    }
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
661k
    {
981
661k
        auto r = new T(std::forward<Args>(args)...);
982
661k
        allocated.push_back(r);
983
661k
        return r;
984
661k
    }
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.74M
    {
981
1.74M
        auto r = new T(std::forward<Args>(args)...);
982
1.74M
        allocated.push_back(r);
983
1.74M
        return r;
984
1.74M
    }
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
1.03M
    {
981
1.03M
        auto r = new T(std::forward<Args>(args)...);
982
1.03M
        allocated.push_back(r);
983
1.03M
        return r;
984
1.03M
    }
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
11.5M
    {
981
11.5M
        auto r = new T(std::forward<Args>(args)...);
982
11.5M
        allocated.push_back(r);
983
11.5M
        return r;
984
11.5M
    }
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
9.85M
    {
981
9.85M
        auto r = new T(std::forward<Args>(args)...);
982
9.85M
        allocated.push_back(r);
983
9.85M
        return r;
984
9.85M
    }
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
7.76k
    {
981
7.76k
        auto r = new T(std::forward<Args>(args)...);
982
7.76k
        allocated.push_back(r);
983
7.76k
        return r;
984
7.76k
    }
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.75M
    {
981
1.75M
        auto r = new T(std::forward<Args>(args)...);
982
1.75M
        allocated.push_back(r);
983
1.75M
        return r;
984
1.75M
    }
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
375k
    {
981
375k
        auto r = new T(std::forward<Args>(args)...);
982
375k
        allocated.push_back(r);
983
375k
        return r;
984
375k
    }
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
100k
    {
981
100k
        auto r = new T(std::forward<Args>(args)...);
982
100k
        allocated.push_back(r);
983
100k
        return r;
984
100k
    }
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
64.4M
    {
981
64.4M
        auto r = new T(std::forward<Args>(args)...);
982
64.4M
        allocated.push_back(r);
983
64.4M
        return r;
984
64.4M
    }
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
145k
    {
981
145k
        auto r = new T(std::forward<Args>(args)...);
982
145k
        allocated.push_back(r);
983
145k
        return r;
984
145k
    }
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
6.59k
    {
981
6.59k
        auto r = new T(std::forward<Args>(args)...);
982
6.59k
        allocated.push_back(r);
983
6.59k
        return r;
984
6.59k
    }
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
3.54M
    {
981
3.54M
        auto r = new T(std::forward<Args>(args)...);
982
3.54M
        allocated.push_back(r);
983
3.54M
        return r;
984
3.54M
    }
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
14.8M
    {
981
14.8M
        auto r = new T(std::forward<Args>(args)...);
982
14.8M
        allocated.push_back(r);
983
14.8M
        return r;
984
14.8M
    }
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
16.7M
    {
981
16.7M
        auto r = new T(std::forward<Args>(args)...);
982
16.7M
        allocated.push_back(r);
983
16.7M
        return r;
984
16.7M
    }
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
211k
    {
981
211k
        auto r = new T(std::forward<Args>(args)...);
982
211k
        allocated.push_back(r);
983
211k
        return r;
984
211k
    }
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
1.08k
    {
981
1.08k
        auto r = new T(std::forward<Args>(args)...);
982
1.08k
        allocated.push_back(r);
983
1.08k
        return r;
984
1.08k
    }
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
17.9M
    {
981
17.9M
        auto r = new T(std::forward<Args>(args)...);
982
17.9M
        allocated.push_back(r);
983
17.9M
        return r;
984
17.9M
    }
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
9.42k
    {
981
9.42k
        auto r = new T(std::forward<Args>(args)...);
982
9.42k
        allocated.push_back(r);
983
9.42k
        return r;
984
9.42k
    }
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
199k
    {
981
199k
        auto r = new T(std::forward<Args>(args)...);
982
199k
        allocated.push_back(r);
983
199k
        return r;
984
199k
    }
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
1.59M
    {
981
1.59M
        auto r = new T(std::forward<Args>(args)...);
982
1.59M
        allocated.push_back(r);
983
1.59M
        return r;
984
1.59M
    }
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
750k
    {
981
750k
        auto r = new T(std::forward<Args>(args)...);
982
750k
        allocated.push_back(r);
983
750k
        return r;
984
750k
    }
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
1.19M
    {
981
1.19M
        auto r = new T(std::forward<Args>(args)...);
982
1.19M
        allocated.push_back(r);
983
1.19M
        return r;
984
1.19M
    }
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
750k
    {
981
750k
        auto r = new T(std::forward<Args>(args)...);
982
750k
        allocated.push_back(r);
983
750k
        return r;
984
750k
    }
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
750k
    {
981
750k
        auto r = new T(std::forward<Args>(args)...);
982
750k
        allocated.push_back(r);
983
750k
        return r;
984
750k
    }
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
1.27M
    {
981
1.27M
        auto r = new T(std::forward<Args>(args)...);
982
1.27M
        allocated.push_back(r);
983
1.27M
        return r;
984
1.27M
    }
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
378k
    {
981
378k
        auto r = new T(std::forward<Args>(args)...);
982
378k
        allocated.push_back(r);
983
378k
        return r;
984
378k
    }
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
821k
    {
981
821k
        auto r = new T(std::forward<Args>(args)...);
982
821k
        allocated.push_back(r);
983
821k
        return r;
984
821k
    }
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
821k
    {
981
821k
        auto r = new T(std::forward<Args>(args)...);
982
821k
        allocated.push_back(r);
983
821k
        return r;
984
821k
    }
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
821k
    {
981
821k
        auto r = new T(std::forward<Args>(args)...);
982
821k
        allocated.push_back(r);
983
821k
        return r;
984
821k
    }
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
821k
    {
981
821k
        auto r = new T(std::forward<Args>(args)...);
982
821k
        allocated.push_back(r);
983
821k
        return r;
984
821k
    }
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
844k
    {
981
844k
        auto r = new T(std::forward<Args>(args)...);
982
844k
        allocated.push_back(r);
983
844k
        return r;
984
844k
    }
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
821k
    {
981
821k
        auto r = new T(std::forward<Args>(args)...);
982
821k
        allocated.push_back(r);
983
821k
        return r;
984
821k
    }
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
821k
    {
981
821k
        auto r = new T(std::forward<Args>(args)...);
982
821k
        allocated.push_back(r);
983
821k
        return r;
984
821k
    }
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
750k
    {
981
750k
        auto r = new T(std::forward<Args>(args)...);
982
750k
        allocated.push_back(r);
983
750k
        return r;
984
750k
    }
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
29.4M
    {
981
29.4M
        auto r = new T(std::forward<Args>(args)...);
982
29.4M
        allocated.push_back(r);
983
29.4M
        return r;
984
29.4M
    }
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.75M
    {
981
1.75M
        auto r = new T(std::forward<Args>(args)...);
982
1.75M
        allocated.push_back(r);
983
1.75M
        return r;
984
1.75M
    }
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
847k
    {
981
847k
        auto r = new T(std::forward<Args>(args)...);
982
847k
        allocated.push_back(r);
983
847k
        return r;
984
847k
    }
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
7.27M
    {
981
7.27M
        auto r = new T(std::forward<Args>(args)...);
982
7.27M
        allocated.push_back(r);
983
7.27M
        return r;
984
7.27M
    }
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
645k
    {
981
645k
        auto r = new T(std::forward<Args>(args)...);
982
645k
        allocated.push_back(r);
983
645k
        return r;
984
645k
    }
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
4.59M
    {
981
4.59M
        auto r = new T(std::forward<Args>(args)...);
982
4.59M
        allocated.push_back(r);
983
4.59M
        return r;
984
4.59M
    }
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
505k
    {
981
505k
        auto r = new T(std::forward<Args>(args)...);
982
505k
        allocated.push_back(r);
983
505k
        return r;
984
505k
    }
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
702k
    {
981
702k
        auto r = new T(std::forward<Args>(args)...);
982
702k
        allocated.push_back(r);
983
702k
        return r;
984
702k
    }
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
17.0M
    {
981
17.0M
        auto r = new T(std::forward<Args>(args)...);
982
17.0M
        allocated.push_back(r);
983
17.0M
        return r;
984
17.0M
    }
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
2.03M
    {
981
2.03M
        auto r = new T(std::forward<Args>(args)...);
982
2.03M
        allocated.push_back(r);
983
2.03M
        return r;
984
2.03M
    }
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
1.52M
    {
981
1.52M
        auto r = new T(std::forward<Args>(args)...);
982
1.52M
        allocated.push_back(r);
983
1.52M
        return r;
984
1.52M
    }
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
70.4k
    {
981
70.4k
        auto r = new T(std::forward<Args>(args)...);
982
70.4k
        allocated.push_back(r);
983
70.4k
        return r;
984
70.4k
    }
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
90.2k
    {
981
90.2k
        auto r = new T(std::forward<Args>(args)...);
982
90.2k
        allocated.push_back(r);
983
90.2k
        return r;
984
90.2k
    }
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
90.2k
    {
981
90.2k
        auto r = new T(std::forward<Args>(args)...);
982
90.2k
        allocated.push_back(r);
983
90.2k
        return r;
984
90.2k
    }
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
2.59M
    {
981
2.59M
        auto r = new T(std::forward<Args>(args)...);
982
2.59M
        allocated.push_back(r);
983
2.59M
        return r;
984
2.59M
    }
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
757k
    {
981
757k
        auto r = new T(std::forward<Args>(args)...);
982
757k
        allocated.push_back(r);
983
757k
        return r;
984
757k
    }
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
35.6k
    {
981
35.6k
        auto r = new T(std::forward<Args>(args)...);
982
35.6k
        allocated.push_back(r);
983
35.6k
        return r;
984
35.6k
    }
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
35.6k
    {
981
35.6k
        auto r = new T(std::forward<Args>(args)...);
982
35.6k
        allocated.push_back(r);
983
35.6k
        return r;
984
35.6k
    }
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
35.6k
    {
981
35.6k
        auto r = new T(std::forward<Args>(args)...);
982
35.6k
        allocated.push_back(r);
983
35.6k
        return r;
984
35.6k
    }
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
35.6k
    {
981
35.6k
        auto r = new T(std::forward<Args>(args)...);
982
35.6k
        allocated.push_back(r);
983
35.6k
        return r;
984
35.6k
    }
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
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::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
2.81M
    {
981
2.81M
        auto r = new T(std::forward<Args>(args)...);
982
2.81M
        allocated.push_back(r);
983
2.81M
        return r;
984
2.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
96.5k
    {
981
96.5k
        auto r = new T(std::forward<Args>(args)...);
982
96.5k
        allocated.push_back(r);
983
96.5k
        return r;
984
96.5k
    }
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
96.5k
    {
981
96.5k
        auto r = new T(std::forward<Args>(args)...);
982
96.5k
        allocated.push_back(r);
983
96.5k
        return r;
984
96.5k
    }
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
89.7k
    {
981
89.7k
        auto r = new T(std::forward<Args>(args)...);
982
89.7k
        allocated.push_back(r);
983
89.7k
        return r;
984
89.7k
    }
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
89.7k
    {
981
89.7k
        auto r = new T(std::forward<Args>(args)...);
982
89.7k
        allocated.push_back(r);
983
89.7k
        return r;
984
89.7k
    }
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
89.6k
    {
981
89.6k
        auto r = new T(std::forward<Args>(args)...);
982
89.6k
        allocated.push_back(r);
983
89.6k
        return r;
984
89.6k
    }
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
89.6k
    {
981
89.6k
        auto r = new T(std::forward<Args>(args)...);
982
89.6k
        allocated.push_back(r);
983
89.6k
        return r;
984
89.6k
    }
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
867k
    {
981
867k
        auto r = new T(std::forward<Args>(args)...);
982
867k
        allocated.push_back(r);
983
867k
        return r;
984
867k
    }
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
11.2k
    {
981
11.2k
        auto r = new T(std::forward<Args>(args)...);
982
11.2k
        allocated.push_back(r);
983
11.2k
        return r;
984
11.2k
    }
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
11.2k
    {
981
11.2k
        auto r = new T(std::forward<Args>(args)...);
982
11.2k
        allocated.push_back(r);
983
11.2k
        return r;
984
11.2k
    }
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
11.2k
    {
981
11.2k
        auto r = new T(std::forward<Args>(args)...);
982
11.2k
        allocated.push_back(r);
983
11.2k
        return r;
984
11.2k
    }
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
22.4k
    {
981
22.4k
        auto r = new T(std::forward<Args>(args)...);
982
22.4k
        allocated.push_back(r);
983
22.4k
        return r;
984
22.4k
    }
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
37.0M
    {
989
37.0M
        auto r = new T(*ast);
990
37.0M
        allocated.push_back(r);
991
37.0M
        return r;
992
37.0M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::clone<jsonnet::internal::Apply>(jsonnet::internal::Apply*)
Line
Count
Source
988
1.16M
    {
989
1.16M
        auto r = new T(*ast);
990
1.16M
        allocated.push_back(r);
991
1.16M
        return r;
992
1.16M
    }
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
956k
    {
989
956k
        auto r = new T(*ast);
990
956k
        allocated.push_back(r);
991
956k
        return r;
992
956k
    }
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.97M
    {
989
2.97M
        auto r = new T(*ast);
990
2.97M
        allocated.push_back(r);
991
2.97M
        return r;
992
2.97M
    }
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.60M
    {
989
1.60M
        auto r = new T(*ast);
990
1.60M
        allocated.push_back(r);
991
1.60M
        return r;
992
1.60M
    }
jsonnet::internal::DesugaredObject* jsonnet::internal::Allocator::clone<jsonnet::internal::DesugaredObject>(jsonnet::internal::DesugaredObject*)
Line
Count
Source
988
2.33M
    {
989
2.33M
        auto r = new T(*ast);
990
2.33M
        allocated.push_back(r);
991
2.33M
        return r;
992
2.33M
    }
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
256k
    {
989
256k
        auto r = new T(*ast);
990
256k
        allocated.push_back(r);
991
256k
        return r;
992
256k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::clone<jsonnet::internal::Function>(jsonnet::internal::Function*)
Line
Count
Source
988
246k
    {
989
246k
        auto r = new T(*ast);
990
246k
        allocated.push_back(r);
991
246k
        return r;
992
246k
    }
jsonnet::internal::Import* jsonnet::internal::Allocator::clone<jsonnet::internal::Import>(jsonnet::internal::Import*)
Line
Count
Source
988
2.95k
    {
989
2.95k
        auto r = new T(*ast);
990
2.95k
        allocated.push_back(r);
991
2.95k
        return r;
992
2.95k
    }
jsonnet::internal::Importstr* jsonnet::internal::Allocator::clone<jsonnet::internal::Importstr>(jsonnet::internal::Importstr*)
Line
Count
Source
988
7.38k
    {
989
7.38k
        auto r = new T(*ast);
990
7.38k
        allocated.push_back(r);
991
7.38k
        return r;
992
7.38k
    }
jsonnet::internal::Importbin* jsonnet::internal::Allocator::clone<jsonnet::internal::Importbin>(jsonnet::internal::Importbin*)
Line
Count
Source
988
34.2k
    {
989
34.2k
        auto r = new T(*ast);
990
34.2k
        allocated.push_back(r);
991
34.2k
        return r;
992
34.2k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::clone<jsonnet::internal::Index>(jsonnet::internal::Index*)
Line
Count
Source
988
1.32M
    {
989
1.32M
        auto r = new T(*ast);
990
1.32M
        allocated.push_back(r);
991
1.32M
        return r;
992
1.32M
    }
jsonnet::internal::InSuper* jsonnet::internal::Allocator::clone<jsonnet::internal::InSuper>(jsonnet::internal::InSuper*)
Line
Count
Source
988
716k
    {
989
716k
        auto r = new T(*ast);
990
716k
        allocated.push_back(r);
991
716k
        return r;
992
716k
    }
jsonnet::internal::LiteralBoolean* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralBoolean>(jsonnet::internal::LiteralBoolean*)
Line
Count
Source
988
113k
    {
989
113k
        auto r = new T(*ast);
990
113k
        allocated.push_back(r);
991
113k
        return r;
992
113k
    }
jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNull>(jsonnet::internal::LiteralNull*)
Line
Count
Source
988
103k
    {
989
103k
        auto r = new T(*ast);
990
103k
        allocated.push_back(r);
991
103k
        return r;
992
103k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNumber>(jsonnet::internal::LiteralNumber*)
Line
Count
Source
988
2.05M
    {
989
2.05M
        auto r = new T(*ast);
990
2.05M
        allocated.push_back(r);
991
2.05M
        return r;
992
2.05M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralString>(jsonnet::internal::LiteralString*)
Line
Count
Source
988
4.86M
    {
989
4.86M
        auto r = new T(*ast);
990
4.86M
        allocated.push_back(r);
991
4.86M
        return r;
992
4.86M
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::clone<jsonnet::internal::Local>(jsonnet::internal::Local*)
Line
Count
Source
988
973k
    {
989
973k
        auto r = new T(*ast);
990
973k
        allocated.push_back(r);
991
973k
        return r;
992
973k
    }
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
104k
    {
989
104k
        auto r = new T(*ast);
990
104k
        allocated.push_back(r);
991
104k
        return r;
992
104k
    }
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
30.8k
    {
989
30.8k
        auto r = new T(*ast);
990
30.8k
        allocated.push_back(r);
991
30.8k
        return r;
992
30.8k
    }
jsonnet::internal::SuperIndex* jsonnet::internal::Allocator::clone<jsonnet::internal::SuperIndex>(jsonnet::internal::SuperIndex*)
Line
Count
Source
988
747k
    {
989
747k
        auto r = new T(*ast);
990
747k
        allocated.push_back(r);
991
747k
        return r;
992
747k
    }
jsonnet::internal::Unary* jsonnet::internal::Allocator::clone<jsonnet::internal::Unary>(jsonnet::internal::Unary*)
Line
Count
Source
988
7.01M
    {
989
7.01M
        auto r = new T(*ast);
990
7.01M
        allocated.push_back(r);
991
7.01M
        return r;
992
7.01M
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::clone<jsonnet::internal::Var>(jsonnet::internal::Var*)
Line
Count
Source
988
9.40M
    {
989
9.40M
        auto r = new T(*ast);
990
9.40M
        allocated.push_back(r);
991
9.40M
        return r;
992
9.40M
    }
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
148M
    {
999
148M
        auto it = internedIdentifiers.find(name);
1000
148M
        if (it != internedIdentifiers.end()) {
1001
142M
            return it->second;
1002
142M
        }
1003
5.96M
        auto r = new Identifier(name);
1004
5.96M
        internedIdentifiers[name] = r;
1005
5.96M
        return r;
1006
148M
    }
1007
    template <typename F>
1008
    const BuiltinFunctionBody *makeBuiltinBody(const LocationRange &loc, const std::string &name, F&& make_params)
1009
867k
    {
1010
867k
        auto it = internedBuiltins.find(name);
1011
867k
        if (it != internedBuiltins.end()) {
1012
395k
            return it->second;
1013
395k
        }
1014
471k
        const Identifiers params = make_params();
1015
471k
        auto r = new BuiltinFunctionBody(loc, name, params);
1016
471k
        internedBuiltins[name] = r;
1017
471k
        return r;
1018
867k
    }
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
867k
    {
1010
867k
        auto it = internedBuiltins.find(name);
1011
867k
        if (it != internedBuiltins.end()) {
1012
395k
            return it->second;
1013
395k
        }
1014
471k
        const Identifiers params = make_params();
1015
471k
        auto r = new BuiltinFunctionBody(loc, name, params);
1016
471k
        internedBuiltins[name] = r;
1017
471k
        return r;
1018
867k
    }
1019
    ~Allocator()
1020
20.6k
    {
1021
288M
        for (auto x : allocated) {
1022
288M
            delete x;
1023
288M
        }
1024
20.6k
        allocated.clear();
1025
5.96M
        for (const auto &x : internedIdentifiers) {
1026
5.96M
            delete x.second;
1027
5.96M
        }
1028
20.6k
        internedIdentifiers.clear();
1029
471k
        for (const auto &x : internedBuiltins) {
1030
471k
            delete x.second;
1031
471k
        }
1032
20.6k
        internedBuiltins.clear();
1033
20.6k
    }
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
42
{
1048
42
    std::map<BinaryOp, int> r;
1049
1050
42
    r[BOP_MULT] = 5;
1051
42
    r[BOP_DIV] = 5;
1052
42
    r[BOP_PERCENT] = 5;
1053
1054
42
    r[BOP_PLUS] = 6;
1055
42
    r[BOP_MINUS] = 6;
1056
1057
42
    r[BOP_SHIFT_L] = 7;
1058
42
    r[BOP_SHIFT_R] = 7;
1059
1060
42
    r[BOP_GREATER] = 8;
1061
42
    r[BOP_GREATER_EQ] = 8;
1062
42
    r[BOP_LESS] = 8;
1063
42
    r[BOP_LESS_EQ] = 8;
1064
42
    r[BOP_IN] = 8;
1065
1066
42
    r[BOP_MANIFEST_EQUAL] = 9;
1067
42
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
42
    r[BOP_BITWISE_AND] = 10;
1070
1071
42
    r[BOP_BITWISE_XOR] = 11;
1072
1073
42
    r[BOP_BITWISE_OR] = 12;
1074
1075
42
    r[BOP_AND] = 13;
1076
1077
42
    r[BOP_OR] = 14;
1078
1079
42
    return r;
1080
42
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
6
{
1048
6
    std::map<BinaryOp, int> r;
1049
1050
6
    r[BOP_MULT] = 5;
1051
6
    r[BOP_DIV] = 5;
1052
6
    r[BOP_PERCENT] = 5;
1053
1054
6
    r[BOP_PLUS] = 6;
1055
6
    r[BOP_MINUS] = 6;
1056
1057
6
    r[BOP_SHIFT_L] = 7;
1058
6
    r[BOP_SHIFT_R] = 7;
1059
1060
6
    r[BOP_GREATER] = 8;
1061
6
    r[BOP_GREATER_EQ] = 8;
1062
6
    r[BOP_LESS] = 8;
1063
6
    r[BOP_LESS_EQ] = 8;
1064
6
    r[BOP_IN] = 8;
1065
1066
6
    r[BOP_MANIFEST_EQUAL] = 9;
1067
6
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
6
    r[BOP_BITWISE_AND] = 10;
1070
1071
6
    r[BOP_BITWISE_XOR] = 11;
1072
1073
6
    r[BOP_BITWISE_OR] = 12;
1074
1075
6
    r[BOP_AND] = 13;
1076
1077
6
    r[BOP_OR] = 14;
1078
1079
6
    return r;
1080
6
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
6
{
1048
6
    std::map<BinaryOp, int> r;
1049
1050
6
    r[BOP_MULT] = 5;
1051
6
    r[BOP_DIV] = 5;
1052
6
    r[BOP_PERCENT] = 5;
1053
1054
6
    r[BOP_PLUS] = 6;
1055
6
    r[BOP_MINUS] = 6;
1056
1057
6
    r[BOP_SHIFT_L] = 7;
1058
6
    r[BOP_SHIFT_R] = 7;
1059
1060
6
    r[BOP_GREATER] = 8;
1061
6
    r[BOP_GREATER_EQ] = 8;
1062
6
    r[BOP_LESS] = 8;
1063
6
    r[BOP_LESS_EQ] = 8;
1064
6
    r[BOP_IN] = 8;
1065
1066
6
    r[BOP_MANIFEST_EQUAL] = 9;
1067
6
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
6
    r[BOP_BITWISE_AND] = 10;
1070
1071
6
    r[BOP_BITWISE_XOR] = 11;
1072
1073
6
    r[BOP_BITWISE_OR] = 12;
1074
1075
6
    r[BOP_AND] = 13;
1076
1077
6
    r[BOP_OR] = 14;
1078
1079
6
    return r;
1080
6
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
6
{
1048
6
    std::map<BinaryOp, int> r;
1049
1050
6
    r[BOP_MULT] = 5;
1051
6
    r[BOP_DIV] = 5;
1052
6
    r[BOP_PERCENT] = 5;
1053
1054
6
    r[BOP_PLUS] = 6;
1055
6
    r[BOP_MINUS] = 6;
1056
1057
6
    r[BOP_SHIFT_L] = 7;
1058
6
    r[BOP_SHIFT_R] = 7;
1059
1060
6
    r[BOP_GREATER] = 8;
1061
6
    r[BOP_GREATER_EQ] = 8;
1062
6
    r[BOP_LESS] = 8;
1063
6
    r[BOP_LESS_EQ] = 8;
1064
6
    r[BOP_IN] = 8;
1065
1066
6
    r[BOP_MANIFEST_EQUAL] = 9;
1067
6
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
6
    r[BOP_BITWISE_AND] = 10;
1070
1071
6
    r[BOP_BITWISE_XOR] = 11;
1072
1073
6
    r[BOP_BITWISE_OR] = 12;
1074
1075
6
    r[BOP_AND] = 13;
1076
1077
6
    r[BOP_OR] = 14;
1078
1079
6
    return r;
1080
6
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
6
{
1048
6
    std::map<BinaryOp, int> r;
1049
1050
6
    r[BOP_MULT] = 5;
1051
6
    r[BOP_DIV] = 5;
1052
6
    r[BOP_PERCENT] = 5;
1053
1054
6
    r[BOP_PLUS] = 6;
1055
6
    r[BOP_MINUS] = 6;
1056
1057
6
    r[BOP_SHIFT_L] = 7;
1058
6
    r[BOP_SHIFT_R] = 7;
1059
1060
6
    r[BOP_GREATER] = 8;
1061
6
    r[BOP_GREATER_EQ] = 8;
1062
6
    r[BOP_LESS] = 8;
1063
6
    r[BOP_LESS_EQ] = 8;
1064
6
    r[BOP_IN] = 8;
1065
1066
6
    r[BOP_MANIFEST_EQUAL] = 9;
1067
6
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
6
    r[BOP_BITWISE_AND] = 10;
1070
1071
6
    r[BOP_BITWISE_XOR] = 11;
1072
1073
6
    r[BOP_BITWISE_OR] = 12;
1074
1075
6
    r[BOP_AND] = 13;
1076
1077
6
    r[BOP_OR] = 14;
1078
1079
6
    return r;
1080
6
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
6
{
1048
6
    std::map<BinaryOp, int> r;
1049
1050
6
    r[BOP_MULT] = 5;
1051
6
    r[BOP_DIV] = 5;
1052
6
    r[BOP_PERCENT] = 5;
1053
1054
6
    r[BOP_PLUS] = 6;
1055
6
    r[BOP_MINUS] = 6;
1056
1057
6
    r[BOP_SHIFT_L] = 7;
1058
6
    r[BOP_SHIFT_R] = 7;
1059
1060
6
    r[BOP_GREATER] = 8;
1061
6
    r[BOP_GREATER_EQ] = 8;
1062
6
    r[BOP_LESS] = 8;
1063
6
    r[BOP_LESS_EQ] = 8;
1064
6
    r[BOP_IN] = 8;
1065
1066
6
    r[BOP_MANIFEST_EQUAL] = 9;
1067
6
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
6
    r[BOP_BITWISE_AND] = 10;
1070
1071
6
    r[BOP_BITWISE_XOR] = 11;
1072
1073
6
    r[BOP_BITWISE_OR] = 12;
1074
1075
6
    r[BOP_AND] = 13;
1076
1077
6
    r[BOP_OR] = 14;
1078
1079
6
    return r;
1080
6
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
6
{
1048
6
    std::map<BinaryOp, int> r;
1049
1050
6
    r[BOP_MULT] = 5;
1051
6
    r[BOP_DIV] = 5;
1052
6
    r[BOP_PERCENT] = 5;
1053
1054
6
    r[BOP_PLUS] = 6;
1055
6
    r[BOP_MINUS] = 6;
1056
1057
6
    r[BOP_SHIFT_L] = 7;
1058
6
    r[BOP_SHIFT_R] = 7;
1059
1060
6
    r[BOP_GREATER] = 8;
1061
6
    r[BOP_GREATER_EQ] = 8;
1062
6
    r[BOP_LESS] = 8;
1063
6
    r[BOP_LESS_EQ] = 8;
1064
6
    r[BOP_IN] = 8;
1065
1066
6
    r[BOP_MANIFEST_EQUAL] = 9;
1067
6
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
6
    r[BOP_BITWISE_AND] = 10;
1070
1071
6
    r[BOP_BITWISE_XOR] = 11;
1072
1073
6
    r[BOP_BITWISE_OR] = 12;
1074
1075
6
    r[BOP_AND] = 13;
1076
1077
6
    r[BOP_OR] = 14;
1078
1079
6
    return r;
1080
6
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
6
{
1048
6
    std::map<BinaryOp, int> r;
1049
1050
6
    r[BOP_MULT] = 5;
1051
6
    r[BOP_DIV] = 5;
1052
6
    r[BOP_PERCENT] = 5;
1053
1054
6
    r[BOP_PLUS] = 6;
1055
6
    r[BOP_MINUS] = 6;
1056
1057
6
    r[BOP_SHIFT_L] = 7;
1058
6
    r[BOP_SHIFT_R] = 7;
1059
1060
6
    r[BOP_GREATER] = 8;
1061
6
    r[BOP_GREATER_EQ] = 8;
1062
6
    r[BOP_LESS] = 8;
1063
6
    r[BOP_LESS_EQ] = 8;
1064
6
    r[BOP_IN] = 8;
1065
1066
6
    r[BOP_MANIFEST_EQUAL] = 9;
1067
6
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
6
    r[BOP_BITWISE_AND] = 10;
1070
1071
6
    r[BOP_BITWISE_XOR] = 11;
1072
1073
6
    r[BOP_BITWISE_OR] = 12;
1074
1075
6
    r[BOP_AND] = 13;
1076
1077
6
    r[BOP_OR] = 14;
1078
1079
6
    return r;
1080
6
}
1081
1082
std::map<std::string, UnaryOp> build_unary_map(void)
1083
42
{
1084
42
    std::map<std::string, UnaryOp> r;
1085
42
    r["!"] = UOP_NOT;
1086
42
    r["~"] = UOP_BITWISE_NOT;
1087
42
    r["+"] = UOP_PLUS;
1088
42
    r["-"] = UOP_MINUS;
1089
42
    return r;
1090
42
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
6
{
1084
6
    std::map<std::string, UnaryOp> r;
1085
6
    r["!"] = UOP_NOT;
1086
6
    r["~"] = UOP_BITWISE_NOT;
1087
6
    r["+"] = UOP_PLUS;
1088
6
    r["-"] = UOP_MINUS;
1089
6
    return r;
1090
6
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
6
{
1084
6
    std::map<std::string, UnaryOp> r;
1085
6
    r["!"] = UOP_NOT;
1086
6
    r["~"] = UOP_BITWISE_NOT;
1087
6
    r["+"] = UOP_PLUS;
1088
6
    r["-"] = UOP_MINUS;
1089
6
    return r;
1090
6
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
6
{
1084
6
    std::map<std::string, UnaryOp> r;
1085
6
    r["!"] = UOP_NOT;
1086
6
    r["~"] = UOP_BITWISE_NOT;
1087
6
    r["+"] = UOP_PLUS;
1088
6
    r["-"] = UOP_MINUS;
1089
6
    return r;
1090
6
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
6
{
1084
6
    std::map<std::string, UnaryOp> r;
1085
6
    r["!"] = UOP_NOT;
1086
6
    r["~"] = UOP_BITWISE_NOT;
1087
6
    r["+"] = UOP_PLUS;
1088
6
    r["-"] = UOP_MINUS;
1089
6
    return r;
1090
6
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
6
{
1084
6
    std::map<std::string, UnaryOp> r;
1085
6
    r["!"] = UOP_NOT;
1086
6
    r["~"] = UOP_BITWISE_NOT;
1087
6
    r["+"] = UOP_PLUS;
1088
6
    r["-"] = UOP_MINUS;
1089
6
    return r;
1090
6
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
6
{
1084
6
    std::map<std::string, UnaryOp> r;
1085
6
    r["!"] = UOP_NOT;
1086
6
    r["~"] = UOP_BITWISE_NOT;
1087
6
    r["+"] = UOP_PLUS;
1088
6
    r["-"] = UOP_MINUS;
1089
6
    return r;
1090
6
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
6
{
1084
6
    std::map<std::string, UnaryOp> r;
1085
6
    r["!"] = UOP_NOT;
1086
6
    r["~"] = UOP_BITWISE_NOT;
1087
6
    r["+"] = UOP_PLUS;
1088
6
    r["-"] = UOP_MINUS;
1089
6
    return r;
1090
6
}
1091
1092
std::map<std::string, BinaryOp> build_binary_map(void)
1093
42
{
1094
42
    std::map<std::string, BinaryOp> r;
1095
1096
42
    r["*"] = BOP_MULT;
1097
42
    r["/"] = BOP_DIV;
1098
42
    r["%"] = BOP_PERCENT;
1099
1100
42
    r["+"] = BOP_PLUS;
1101
42
    r["-"] = BOP_MINUS;
1102
1103
42
    r["<<"] = BOP_SHIFT_L;
1104
42
    r[">>"] = BOP_SHIFT_R;
1105
1106
42
    r[">"] = BOP_GREATER;
1107
42
    r[">="] = BOP_GREATER_EQ;
1108
42
    r["<"] = BOP_LESS;
1109
42
    r["<="] = BOP_LESS_EQ;
1110
42
    r["in"] = BOP_IN;
1111
1112
42
    r["=="] = BOP_MANIFEST_EQUAL;
1113
42
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
42
    r["&"] = BOP_BITWISE_AND;
1116
42
    r["^"] = BOP_BITWISE_XOR;
1117
42
    r["|"] = BOP_BITWISE_OR;
1118
1119
42
    r["&&"] = BOP_AND;
1120
42
    r["||"] = BOP_OR;
1121
42
    return r;
1122
42
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
6
{
1094
6
    std::map<std::string, BinaryOp> r;
1095
1096
6
    r["*"] = BOP_MULT;
1097
6
    r["/"] = BOP_DIV;
1098
6
    r["%"] = BOP_PERCENT;
1099
1100
6
    r["+"] = BOP_PLUS;
1101
6
    r["-"] = BOP_MINUS;
1102
1103
6
    r["<<"] = BOP_SHIFT_L;
1104
6
    r[">>"] = BOP_SHIFT_R;
1105
1106
6
    r[">"] = BOP_GREATER;
1107
6
    r[">="] = BOP_GREATER_EQ;
1108
6
    r["<"] = BOP_LESS;
1109
6
    r["<="] = BOP_LESS_EQ;
1110
6
    r["in"] = BOP_IN;
1111
1112
6
    r["=="] = BOP_MANIFEST_EQUAL;
1113
6
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
6
    r["&"] = BOP_BITWISE_AND;
1116
6
    r["^"] = BOP_BITWISE_XOR;
1117
6
    r["|"] = BOP_BITWISE_OR;
1118
1119
6
    r["&&"] = BOP_AND;
1120
6
    r["||"] = BOP_OR;
1121
6
    return r;
1122
6
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
6
{
1094
6
    std::map<std::string, BinaryOp> r;
1095
1096
6
    r["*"] = BOP_MULT;
1097
6
    r["/"] = BOP_DIV;
1098
6
    r["%"] = BOP_PERCENT;
1099
1100
6
    r["+"] = BOP_PLUS;
1101
6
    r["-"] = BOP_MINUS;
1102
1103
6
    r["<<"] = BOP_SHIFT_L;
1104
6
    r[">>"] = BOP_SHIFT_R;
1105
1106
6
    r[">"] = BOP_GREATER;
1107
6
    r[">="] = BOP_GREATER_EQ;
1108
6
    r["<"] = BOP_LESS;
1109
6
    r["<="] = BOP_LESS_EQ;
1110
6
    r["in"] = BOP_IN;
1111
1112
6
    r["=="] = BOP_MANIFEST_EQUAL;
1113
6
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
6
    r["&"] = BOP_BITWISE_AND;
1116
6
    r["^"] = BOP_BITWISE_XOR;
1117
6
    r["|"] = BOP_BITWISE_OR;
1118
1119
6
    r["&&"] = BOP_AND;
1120
6
    r["||"] = BOP_OR;
1121
6
    return r;
1122
6
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
6
{
1094
6
    std::map<std::string, BinaryOp> r;
1095
1096
6
    r["*"] = BOP_MULT;
1097
6
    r["/"] = BOP_DIV;
1098
6
    r["%"] = BOP_PERCENT;
1099
1100
6
    r["+"] = BOP_PLUS;
1101
6
    r["-"] = BOP_MINUS;
1102
1103
6
    r["<<"] = BOP_SHIFT_L;
1104
6
    r[">>"] = BOP_SHIFT_R;
1105
1106
6
    r[">"] = BOP_GREATER;
1107
6
    r[">="] = BOP_GREATER_EQ;
1108
6
    r["<"] = BOP_LESS;
1109
6
    r["<="] = BOP_LESS_EQ;
1110
6
    r["in"] = BOP_IN;
1111
1112
6
    r["=="] = BOP_MANIFEST_EQUAL;
1113
6
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
6
    r["&"] = BOP_BITWISE_AND;
1116
6
    r["^"] = BOP_BITWISE_XOR;
1117
6
    r["|"] = BOP_BITWISE_OR;
1118
1119
6
    r["&&"] = BOP_AND;
1120
6
    r["||"] = BOP_OR;
1121
6
    return r;
1122
6
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
6
{
1094
6
    std::map<std::string, BinaryOp> r;
1095
1096
6
    r["*"] = BOP_MULT;
1097
6
    r["/"] = BOP_DIV;
1098
6
    r["%"] = BOP_PERCENT;
1099
1100
6
    r["+"] = BOP_PLUS;
1101
6
    r["-"] = BOP_MINUS;
1102
1103
6
    r["<<"] = BOP_SHIFT_L;
1104
6
    r[">>"] = BOP_SHIFT_R;
1105
1106
6
    r[">"] = BOP_GREATER;
1107
6
    r[">="] = BOP_GREATER_EQ;
1108
6
    r["<"] = BOP_LESS;
1109
6
    r["<="] = BOP_LESS_EQ;
1110
6
    r["in"] = BOP_IN;
1111
1112
6
    r["=="] = BOP_MANIFEST_EQUAL;
1113
6
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
6
    r["&"] = BOP_BITWISE_AND;
1116
6
    r["^"] = BOP_BITWISE_XOR;
1117
6
    r["|"] = BOP_BITWISE_OR;
1118
1119
6
    r["&&"] = BOP_AND;
1120
6
    r["||"] = BOP_OR;
1121
6
    return r;
1122
6
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
6
{
1094
6
    std::map<std::string, BinaryOp> r;
1095
1096
6
    r["*"] = BOP_MULT;
1097
6
    r["/"] = BOP_DIV;
1098
6
    r["%"] = BOP_PERCENT;
1099
1100
6
    r["+"] = BOP_PLUS;
1101
6
    r["-"] = BOP_MINUS;
1102
1103
6
    r["<<"] = BOP_SHIFT_L;
1104
6
    r[">>"] = BOP_SHIFT_R;
1105
1106
6
    r[">"] = BOP_GREATER;
1107
6
    r[">="] = BOP_GREATER_EQ;
1108
6
    r["<"] = BOP_LESS;
1109
6
    r["<="] = BOP_LESS_EQ;
1110
6
    r["in"] = BOP_IN;
1111
1112
6
    r["=="] = BOP_MANIFEST_EQUAL;
1113
6
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
6
    r["&"] = BOP_BITWISE_AND;
1116
6
    r["^"] = BOP_BITWISE_XOR;
1117
6
    r["|"] = BOP_BITWISE_OR;
1118
1119
6
    r["&&"] = BOP_AND;
1120
6
    r["||"] = BOP_OR;
1121
6
    return r;
1122
6
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
6
{
1094
6
    std::map<std::string, BinaryOp> r;
1095
1096
6
    r["*"] = BOP_MULT;
1097
6
    r["/"] = BOP_DIV;
1098
6
    r["%"] = BOP_PERCENT;
1099
1100
6
    r["+"] = BOP_PLUS;
1101
6
    r["-"] = BOP_MINUS;
1102
1103
6
    r["<<"] = BOP_SHIFT_L;
1104
6
    r[">>"] = BOP_SHIFT_R;
1105
1106
6
    r[">"] = BOP_GREATER;
1107
6
    r[">="] = BOP_GREATER_EQ;
1108
6
    r["<"] = BOP_LESS;
1109
6
    r["<="] = BOP_LESS_EQ;
1110
6
    r["in"] = BOP_IN;
1111
1112
6
    r["=="] = BOP_MANIFEST_EQUAL;
1113
6
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
6
    r["&"] = BOP_BITWISE_AND;
1116
6
    r["^"] = BOP_BITWISE_XOR;
1117
6
    r["|"] = BOP_BITWISE_OR;
1118
1119
6
    r["&&"] = BOP_AND;
1120
6
    r["||"] = BOP_OR;
1121
6
    return r;
1122
6
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
6
{
1094
6
    std::map<std::string, BinaryOp> r;
1095
1096
6
    r["*"] = BOP_MULT;
1097
6
    r["/"] = BOP_DIV;
1098
6
    r["%"] = BOP_PERCENT;
1099
1100
6
    r["+"] = BOP_PLUS;
1101
6
    r["-"] = BOP_MINUS;
1102
1103
6
    r["<<"] = BOP_SHIFT_L;
1104
6
    r[">>"] = BOP_SHIFT_R;
1105
1106
6
    r[">"] = BOP_GREATER;
1107
6
    r[">="] = BOP_GREATER_EQ;
1108
6
    r["<"] = BOP_LESS;
1109
6
    r["<="] = BOP_LESS_EQ;
1110
6
    r["in"] = BOP_IN;
1111
1112
6
    r["=="] = BOP_MANIFEST_EQUAL;
1113
6
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
6
    r["&"] = BOP_BITWISE_AND;
1116
6
    r["^"] = BOP_BITWISE_XOR;
1117
6
    r["|"] = BOP_BITWISE_OR;
1118
1119
6
    r["&&"] = BOP_AND;
1120
6
    r["||"] = BOP_OR;
1121
6
    return r;
1122
6
}
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