Coverage Report

Created: 2026-08-31 07:25

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
5.89M
    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
197M
        : location(location), type(type), openFodder(open_fodder)
133
197M
    {
134
197M
    }
135
236M
    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.27M
        : idFodder(id_fodder), id(id), expr(nullptr), commaFodder(comma_fodder)
159
1.27M
    {
160
1.27M
    }
161
    // Only has expr
162
    ArgParam(AST *expr, const Fodder &comma_fodder)
163
13.7M
        : id(nullptr), expr(expr), commaFodder(comma_fodder)
164
13.7M
    {
165
13.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
28.7M
        : idFodder(id_fodder), id(id), eqFodder(eq_fodder), expr(expr), commaFodder(comma_fodder)
170
28.7M
    {
171
28.7M
    }
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
962k
        : kind(kind),
188
962k
          openFodder(open_fodder),
189
962k
          varFodder(var_fodder),
190
962k
          var(var),
191
962k
          inFodder(in_fodder),
192
962k
          expr(expr)
193
962k
    {
194
962k
    }
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
20.3M
        : AST(lr, AST_APPLY, open_fodder),
210
20.3M
          target(target),
211
20.3M
          fodderL(fodder_l),
212
20.3M
          args(args),
213
20.3M
          trailingComma(trailing_comma),
214
20.3M
          fodderR(fodder_r),
215
20.3M
          tailstrictFodder(tailstrict_fodder),
216
20.3M
          tailstrict(tailstrict)
217
20.3M
    {
218
20.3M
    }
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
167k
        : AST(lr, AST_APPLY_BRACE, open_fodder), left(left), right(right)
227
167k
    {
228
167k
    }
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.14M
        Element(AST *expr, const Fodder &comma_fodder) : expr(expr), commaFodder(comma_fodder) {}
237
    };
238
    typedef std::vector<Element> Elements;
239
    Elements elements;
240
    bool trailingComma;
241
    Fodder closeFodder;
242
    Array(const LocationRange &lr, const Fodder &open_fodder, const Elements &elements,
243
          bool trailing_comma, const Fodder &close_fodder)
244
2.97M
        : AST(lr, AST_ARRAY, open_fodder),
245
2.97M
          elements(elements),
246
2.97M
          trailingComma(trailing_comma),
247
2.97M
          closeFodder(close_fodder)
248
2.97M
    {
249
2.97M
    }
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
585k
        : AST(lr, AST_ARRAY_COMPREHENSION, open_fodder),
263
585k
          body(body),
264
585k
          commaFodder(comma_fodder),
265
585k
          trailingComma(trailing_comma),
266
585k
          specs(specs),
267
585k
          closeFodder(close_fodder)
268
585k
    {
269
585k
        assert(specs.size() > 0);
270
585k
    }
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
661k
        : AST(lr, AST_ASSERT, open_fodder),
287
661k
          cond(cond),
288
661k
          colonFodder(colon_fodder),
289
661k
          message(message),
290
661k
          semicolonFodder(semicolon_fodder),
291
661k
          rest(rest)
292
661k
    {
293
661k
    }
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
346
{
326
346
    switch (bop) {
327
12
        case BOP_MULT: return "*";
328
16
        case BOP_DIV: return "/";
329
0
        case BOP_PERCENT: return "%";
330
331
90
        case BOP_PLUS: return "+";
332
36
        case BOP_MINUS: return "-";
333
334
9
        case BOP_SHIFT_L: return "<<";
335
2
        case BOP_SHIFT_R: return ">>";
336
337
23
        case BOP_GREATER: return ">";
338
35
        case BOP_GREATER_EQ: return ">=";
339
44
        case BOP_LESS: return "<";
340
15
        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
24
        case BOP_BITWISE_AND: return "&";
347
19
        case BOP_BITWISE_XOR: return "^";
348
14
        case BOP_BITWISE_OR: return "|";
349
350
2
        case BOP_AND: return "&&";
351
5
        case BOP_OR: return "||";
352
353
0
        default:
354
0
            std::cerr << "INTERNAL ERROR: Unrecognised binary operator: " << bop << std::endl;
355
0
            std::abort();
356
346
    }
357
346
}
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
346
{
326
346
    switch (bop) {
327
12
        case BOP_MULT: return "*";
328
16
        case BOP_DIV: return "/";
329
0
        case BOP_PERCENT: return "%";
330
331
90
        case BOP_PLUS: return "+";
332
36
        case BOP_MINUS: return "-";
333
334
9
        case BOP_SHIFT_L: return "<<";
335
2
        case BOP_SHIFT_R: return ">>";
336
337
23
        case BOP_GREATER: return ">";
338
35
        case BOP_GREATER_EQ: return ">=";
339
44
        case BOP_LESS: return "<";
340
15
        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
24
        case BOP_BITWISE_AND: return "&";
347
19
        case BOP_BITWISE_XOR: return "^";
348
14
        case BOP_BITWISE_OR: return "|";
349
350
2
        case BOP_AND: return "&&";
351
5
        case BOP_OR: return "||";
352
353
0
        default:
354
0
            std::cerr << "INTERNAL ERROR: Unrecognised binary operator: " << bop << std::endl;
355
0
            std::abort();
356
346
    }
357
346
}
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
16.3M
        : AST(lr, AST_BINARY, open_fodder), left(left), opFodder(op_fodder), op(op), right(right)
368
16.3M
    {
369
16.3M
    }
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
368k
        : AST(lr, AST_BUILTIN_FUNCTION_BODY, Fodder{}), name(name), params(params)
383
368k
    {
384
368k
    }
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
676k
        : AST(lr, AST_BUILTIN_FUNCTION, Fodder{}), body(body)
396
676k
    {
397
676k
    }
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
7.65M
        : AST(lr, AST_CONDITIONAL, open_fodder),
415
7.65M
          cond(cond),
416
7.65M
          thenFodder(then_fodder),
417
7.65M
          branchTrue(branch_true),
418
7.65M
          elseFodder(else_fodder),
419
7.65M
          branchFalse(branch_false)
420
7.65M
    {
421
7.65M
    }
422
};
423
424
/** Represents the $ keyword. */
425
struct Dollar : public AST {
426
70.0k
    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
2.47M
        : AST(lr, AST_ERROR, open_fodder), expr(expr)
434
2.47M
    {
435
2.47M
    }
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
4.18M
        : AST(lr, AST_FUNCTION, open_fodder),
449
4.18M
          parenLeftFodder(paren_left_fodder),
450
4.18M
          params(params),
451
4.18M
          trailingComma(trailing_comma),
452
4.18M
          parenRightFodder(paren_right_fodder),
453
4.18M
          body(body)
454
4.18M
    {
455
4.18M
    }
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.01k
        : AST(lr, AST_IMPORT, open_fodder), file(file)
465
1.01k
    {
466
1.01k
    }
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
3.05k
        : AST(lr, AST_IMPORTSTR, open_fodder), file(file)
474
3.05k
    {
475
3.05k
    }
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.15k
        : AST(lr, AST_IMPORTBIN, open_fodder), file(file)
483
1.15k
    {
484
1.15k
    }
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
11.5M
        : AST(lr, AST_INDEX, open_fodder),
506
11.5M
          target(target),
507
11.5M
          dotFodder(dot_fodder),
508
11.5M
          isSlice(false),
509
11.5M
          index(nullptr),
510
11.5M
          end(nullptr),
511
11.5M
          step(nullptr),
512
11.5M
          idFodder(id_fodder),
513
11.5M
          id(id)
514
11.5M
    {
515
11.5M
    }
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
9.27M
        : AST(lr, AST_INDEX, open_fodder),
521
9.27M
          target(target),
522
9.27M
          dotFodder(dot_fodder),
523
9.27M
          isSlice(is_slice),
524
9.27M
          index(index),
525
9.27M
          endColonFodder(end_colon_fodder),
526
9.27M
          end(end),
527
9.27M
          stepColonFodder(step_colon_fodder),
528
9.27M
          step(step),
529
9.27M
          idFodder(id_fodder),
530
9.27M
          id(nullptr)
531
9.27M
    {
532
9.27M
    }
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
6.95M
            : varFodder(var_fodder),
552
6.95M
              var(var),
553
6.95M
              opFodder(op_fodder),
554
6.95M
              body(body),
555
6.95M
              functionSugar(function_sugar),
556
6.95M
              parenLeftFodder(paren_left_fodder),
557
6.95M
              params(params),
558
6.95M
              trailingComma(trailing_comma),
559
6.95M
              parenRightFodder(paren_right_fodder),
560
6.95M
              closeFodder(close_fodder)
561
6.95M
        {
562
6.95M
        }
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
7.46M
        : AST(lr, AST_LOCAL, open_fodder), binds(binds), body(body)
569
7.46M
    {
570
7.46M
    }
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.49M
        : AST(lr, AST_LITERAL_BOOLEAN, open_fodder), value(value)
578
1.49M
    {
579
1.49M
    }
580
};
581
582
/** Represents the null keyword. */
583
struct LiteralNull : public AST {
584
    LiteralNull(const LocationRange &lr, const Fodder &open_fodder)
585
840k
        : AST(lr, AST_LITERAL_NULL, open_fodder)
586
840k
    {
587
840k
    }
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
11.2M
        : AST(lr, AST_LITERAL_NUMBER, open_fodder),
596
11.2M
          value(strtod(str.c_str(), nullptr)),
597
11.2M
          originalString(str)
598
11.2M
    {
599
11.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
30.8M
        : AST(lr, AST_LITERAL_STRING, open_fodder),
613
30.8M
          value(value),
614
30.8M
          tokenKind(token_kind),
615
30.8M
          blockIndent(block_indent),
616
30.8M
          blockTermIndent(block_term_indent)
617
30.8M
    {
618
30.8M
    }
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
4.20M
        : kind(kind),
683
4.20M
          fodder1(fodder1),
684
4.20M
          fodder2(fodder2),
685
4.20M
          fodderL(fodder_l),
686
4.20M
          fodderR(fodder_r),
687
4.20M
          hide(hide),
688
4.20M
          superSugar(super_sugar),
689
4.20M
          methodSugar(method_sugar),
690
4.20M
          expr1(expr1),
691
4.20M
          id(id),
692
4.20M
          idLocation(id_lr),
693
4.20M
          params(params),
694
4.20M
          trailingComma(trailing_comma),
695
4.20M
          opFodder(op_fodder),
696
4.20M
          expr2(expr2),
697
4.20M
          expr3(expr3),
698
4.20M
          commaFodder(comma_fodder)
699
4.20M
    {
700
        // Enforce what is written in comments above.
701
4.20M
        assert(kind != ASSERT || (hide == VISIBLE && !superSugar && !methodSugar));
702
4.20M
        assert(kind != LOCAL || (hide == VISIBLE && !superSugar));
703
4.20M
        assert(kind != FIELD_ID || (id != nullptr && expr1 == nullptr));
704
4.20M
        assert(kind == FIELD_ID || kind == LOCAL || id == nullptr);
705
4.20M
        assert(methodSugar || (params.size() == 0 && !trailingComma));
706
4.20M
        assert(kind == ASSERT || expr3 == nullptr);
707
4.20M
    }
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
113k
    {
714
113k
        return ObjectField(LOCAL,
715
113k
                           fodder1,
716
113k
                           fodder2,
717
113k
                           fodder_l,
718
113k
                           fodder_r,
719
113k
                           VISIBLE,
720
113k
                           false,
721
113k
                           method_sugar,
722
113k
                           nullptr,
723
113k
                           id,
724
113k
                           LocationRange(),
725
113k
                           params,
726
113k
                           trailing_comma,
727
113k
                           op_fodder,
728
113k
                           body,
729
113k
                           nullptr,
730
113k
                           comma_fodder);
731
113k
    }
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
59.5k
    {
735
59.5k
        return ObjectField(LOCAL,
736
59.5k
                           fodder1,
737
59.5k
                           fodder2,
738
59.5k
                           Fodder{},
739
59.5k
                           Fodder{},
740
59.5k
                           VISIBLE,
741
59.5k
                           false,
742
59.5k
                           false,
743
59.5k
                           nullptr,
744
59.5k
                           id,
745
59.5k
                           LocationRange(),
746
59.5k
                           ArgParams{},
747
59.5k
                           false,
748
59.5k
                           op_fodder,
749
59.5k
                           body,
750
59.5k
                           nullptr,
751
59.5k
                           comma_fodder);
752
59.5k
    }
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
123k
    {
780
123k
        return ObjectField(ASSERT,
781
123k
                           fodder1,
782
123k
                           Fodder{},
783
123k
                           Fodder{},
784
123k
                           Fodder{},
785
123k
                           VISIBLE,
786
123k
                           false,
787
123k
                           false,
788
123k
                           nullptr,
789
123k
                           nullptr,
790
123k
                           LocationRange(),
791
123k
                           ArgParams{},
792
123k
                           false,
793
123k
                           op_fodder,
794
123k
                           body,
795
123k
                           msg,
796
123k
                           comma_fodder);
797
123k
    }
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
870k
        : AST(lr, AST_OBJECT, open_fodder),
813
870k
          fields(fields),
814
870k
          trailingComma(trailing_comma),
815
870k
          closeFodder(close_fodder)
816
870k
    {
817
870k
        assert(fields.size() > 0 || !trailing_comma);
818
870k
        if (fields.size() > 0)
819
870k
            assert(trailing_comma || fields[fields.size() - 1].commaFodder.size() == 0);
820
870k
    }
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
4.40M
            : hide(hide), name(name), body(body)
834
4.40M
        {
835
4.40M
        }
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
864k
        : AST(lr, AST_DESUGARED_OBJECT, Fodder{}), asserts(asserts), fields(fields)
842
864k
    {
843
864k
    }
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
70.7k
        : AST(lr, AST_OBJECT_COMPREHENSION, open_fodder),
857
70.7k
          fields(fields),
858
70.7k
          trailingComma(trailing_comma),
859
70.7k
          specs(specs),
860
70.7k
          closeFodder(close_fodder)
861
70.7k
    {
862
70.7k
    }
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
69.7k
        : AST(lr, AST_OBJECT_COMPREHENSION_SIMPLE, Fodder{}),
874
69.7k
          field(field),
875
69.7k
          value(value),
876
69.7k
          id(id),
877
69.7k
          array(array)
878
69.7k
    {
879
69.7k
    }
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
805k
        : AST(lr, AST_PARENS, open_fodder), expr(expr), closeFodder(close_fodder)
889
805k
    {
890
805k
    }
891
};
892
893
/** Represents the self keyword. */
894
struct Self : public AST {
895
175k
    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
34.1k
        : AST(lr, AST_SUPER_INDEX, open_fodder),
911
34.1k
          dotFodder(dot_fodder),
912
34.1k
          index(index),
913
34.1k
          idFodder(id_fodder),
914
34.1k
          id(id)
915
34.1k
    {
916
34.1k
    }
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
29.8k
        : AST(lr, AST_IN_SUPER, open_fodder),
928
29.8k
          element(element),
929
29.8k
          inFodder(in_fodder),
930
29.8k
          superFodder(super_fodder)
931
29.8k
    {
932
29.8k
    }
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
289
{
939
289
    switch (uop) {
940
209
        case UOP_PLUS: return "+";
941
18
        case UOP_MINUS: return "-";
942
5
        case UOP_BITWISE_NOT: return "~";
943
57
        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
289
    }
949
289
}
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
289
{
939
289
    switch (uop) {
940
209
        case UOP_PLUS: return "+";
941
18
        case UOP_MINUS: return "-";
942
5
        case UOP_BITWISE_NOT: return "~";
943
57
        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
289
    }
949
289
}
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.42M
        : AST(lr, AST_UNARY, open_fodder), op(op), expr(expr)
957
1.42M
    {
958
1.42M
    }
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
64.2M
        : AST(lr, AST_VAR, open_fodder), id(id)
966
64.2M
    {
967
64.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
197M
    {
981
197M
        auto r = new T(std::forward<Args>(args)...);
982
197M
        allocated.push_back(r);
983
197M
        return r;
984
197M
    }
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
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::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.05M
    {
981
1.05M
        auto r = new T(std::forward<Args>(args)...);
982
1.05M
        allocated.push_back(r);
983
1.05M
        return r;
984
1.05M
    }
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
5.18M
    {
981
5.18M
        auto r = new T(std::forward<Args>(args)...);
982
5.18M
        allocated.push_back(r);
983
5.18M
        return r;
984
5.18M
    }
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
64.9k
    {
981
64.9k
        auto r = new T(std::forward<Args>(args)...);
982
64.9k
        allocated.push_back(r);
983
64.9k
        return r;
984
64.9k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::make<jsonnet::internal::Function, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
323k
    {
981
323k
        auto r = new T(std::forward<Args>(args)...);
982
323k
        allocated.push_back(r);
983
323k
        return r;
984
323k
    }
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.01k
    {
981
1.01k
        auto r = new T(std::forward<Args>(args)...);
982
1.01k
        allocated.push_back(r);
983
1.01k
        return r;
984
1.01k
    }
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
3.05k
    {
981
3.05k
        auto r = new T(std::forward<Args>(args)...);
982
3.05k
        allocated.push_back(r);
983
3.05k
        return r;
984
3.05k
    }
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.15k
    {
981
1.15k
        auto r = new T(std::forward<Args>(args)...);
982
1.15k
        allocated.push_back(r);
983
1.15k
        return r;
984
1.15k
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&, jsonnet::internal::AST*&)
Line
Count
Source
980
3.89M
    {
981
3.89M
        auto r = new T(std::forward<Args>(args)...);
982
3.89M
        allocated.push_back(r);
983
3.89M
        return r;
984
3.89M
    }
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.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::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
870k
    {
981
870k
        auto r = new T(std::forward<Args>(args)...);
982
870k
        allocated.push_back(r);
983
870k
        return r;
984
870k
    }
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
70.7k
    {
981
70.7k
        auto r = new T(std::forward<Args>(args)...);
982
70.7k
        allocated.push_back(r);
983
70.7k
        return r;
984
70.7k
    }
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
183k
    {
981
183k
        auto r = new T(std::forward<Args>(args)...);
982
183k
        allocated.push_back(r);
983
183k
        return r;
984
183k
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >, jsonnet::internal::LiteralString::TokenKind, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >&&, jsonnet::internal::LiteralString::TokenKind&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
Line
Count
Source
980
2.87k
    {
981
2.87k
        auto r = new T(std::forward<Args>(args)...);
982
2.87k
        allocated.push_back(r);
983
2.87k
        return r;
984
2.87k
    }
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
371k
    {
981
371k
        auto r = new T(std::forward<Args>(args)...);
982
371k
        allocated.push_back(r);
983
371k
        return r;
984
371k
    }
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
515k
    {
981
515k
        auto r = new T(std::forward<Args>(args)...);
982
515k
        allocated.push_back(r);
983
515k
        return r;
984
515k
    }
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.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::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
805k
    {
981
805k
        auto r = new T(std::forward<Args>(args)...);
982
805k
        allocated.push_back(r);
983
805k
        return r;
984
805k
    }
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
9.98M
    {
981
9.98M
        auto r = new T(std::forward<Args>(args)...);
982
9.98M
        allocated.push_back(r);
983
9.98M
        return r;
984
9.98M
    }
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
7.73M
    {
981
7.73M
        auto r = new T(std::forward<Args>(args)...);
982
7.73M
        allocated.push_back(r);
983
7.73M
        return r;
984
7.73M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >, jsonnet::internal::LiteralString::TokenKind, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >&&, jsonnet::internal::LiteralString::TokenKind&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
Line
Count
Source
980
5.62k
    {
981
5.62k
        auto r = new T(std::forward<Args>(args)...);
982
5.62k
        allocated.push_back(r);
983
5.62k
        return r;
984
5.62k
    }
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.37M
    {
981
1.37M
        auto r = new T(std::forward<Args>(args)...);
982
1.37M
        allocated.push_back(r);
983
1.37M
        return r;
984
1.37M
    }
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
294k
    {
981
294k
        auto r = new T(std::forward<Args>(args)...);
982
294k
        allocated.push_back(r);
983
294k
        return r;
984
294k
    }
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
70.0k
    {
981
70.0k
        auto r = new T(std::forward<Args>(args)...);
982
70.0k
        allocated.push_back(r);
983
70.0k
        return r;
984
70.0k
    }
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
50.2M
    {
981
50.2M
        auto r = new T(std::forward<Args>(args)...);
982
50.2M
        allocated.push_back(r);
983
50.2M
        return r;
984
50.2M
    }
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
113k
    {
981
113k
        auto r = new T(std::forward<Args>(args)...);
982
113k
        allocated.push_back(r);
983
113k
        return r;
984
113k
    }
jsonnet::internal::SuperIndex* jsonnet::internal::Allocator::make<jsonnet::internal::SuperIndex, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&)
Line
Count
Source
980
4.74k
    {
981
4.74k
        auto r = new T(std::forward<Args>(args)...);
982
4.74k
        allocated.push_back(r);
983
4.74k
        return r;
984
4.74k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, bool&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
Line
Count
Source
980
2.83M
    {
981
2.83M
        auto r = new T(std::forward<Args>(args)...);
982
2.83M
        allocated.push_back(r);
983
2.83M
        return r;
984
2.83M
    }
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
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::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
13.0M
    {
981
13.0M
        auto r = new T(std::forward<Args>(args)...);
982
13.0M
        allocated.push_back(r);
983
13.0M
        return r;
984
13.0M
    }
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
167k
    {
981
167k
        auto r = new T(std::forward<Args>(args)...);
982
167k
        allocated.push_back(r);
983
167k
        return r;
984
167k
    }
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
437
    {
981
437
        auto r = new T(std::forward<Args>(args)...);
982
437
        allocated.push_back(r);
983
437
        return r;
984
437
    }
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
13.9M
    {
981
13.9M
        auto r = new T(std::forward<Args>(args)...);
982
13.9M
        allocated.push_back(r);
983
13.9M
        return r;
984
13.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
7.34k
    {
981
7.34k
        auto r = new T(std::forward<Args>(args)...);
982
7.34k
        allocated.push_back(r);
983
7.34k
        return r;
984
7.34k
    }
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
164k
    {
981
164k
        auto r = new T(std::forward<Args>(args)...);
982
164k
        allocated.push_back(r);
983
164k
        return r;
984
164k
    }
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.24M
    {
981
1.24M
        auto r = new T(std::forward<Args>(args)...);
982
1.24M
        allocated.push_back(r);
983
1.24M
        return r;
984
1.24M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::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
585k
    {
981
585k
        auto r = new T(std::forward<Args>(args)...);
982
585k
        allocated.push_back(r);
983
585k
        return r;
984
585k
    }
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
943k
    {
981
943k
        auto r = new T(std::forward<Args>(args)...);
982
943k
        allocated.push_back(r);
983
943k
        return r;
984
943k
    }
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
585k
    {
981
585k
        auto r = new T(std::forward<Args>(args)...);
982
585k
        allocated.push_back(r);
983
585k
        return r;
984
585k
    }
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
585k
    {
981
585k
        auto r = new T(std::forward<Args>(args)...);
982
585k
        allocated.push_back(r);
983
585k
        return r;
984
585k
    }
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
996k
    {
981
996k
        auto r = new T(std::forward<Args>(args)...);
982
996k
        allocated.push_back(r);
983
996k
        return r;
984
996k
    }
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
305k
    {
981
305k
        auto r = new T(std::forward<Args>(args)...);
982
305k
        allocated.push_back(r);
983
305k
        return r;
984
305k
    }
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
638k
    {
981
638k
        auto r = new T(std::forward<Args>(args)...);
982
638k
        allocated.push_back(r);
983
638k
        return r;
984
638k
    }
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
638k
    {
981
638k
        auto r = new T(std::forward<Args>(args)...);
982
638k
        allocated.push_back(r);
983
638k
        return r;
984
638k
    }
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
638k
    {
981
638k
        auto r = new T(std::forward<Args>(args)...);
982
638k
        allocated.push_back(r);
983
638k
        return r;
984
638k
    }
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
638k
    {
981
638k
        auto r = new T(std::forward<Args>(args)...);
982
638k
        allocated.push_back(r);
983
638k
        return r;
984
638k
    }
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
655k
    {
981
655k
        auto r = new T(std::forward<Args>(args)...);
982
655k
        allocated.push_back(r);
983
655k
        return r;
984
655k
    }
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
638k
    {
981
638k
        auto r = new T(std::forward<Args>(args)...);
982
638k
        allocated.push_back(r);
983
638k
        return r;
984
638k
    }
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
638k
    {
981
638k
        auto r = new T(std::forward<Args>(args)...);
982
638k
        allocated.push_back(r);
983
638k
        return r;
984
638k
    }
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
585k
    {
981
585k
        auto r = new T(std::forward<Args>(args)...);
982
585k
        allocated.push_back(r);
983
585k
        return r;
984
585k
    }
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
22.9M
    {
981
22.9M
        auto r = new T(std::forward<Args>(args)...);
982
22.9M
        allocated.push_back(r);
983
22.9M
        return r;
984
22.9M
    }
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.42M
    {
981
1.42M
        auto r = new T(std::forward<Args>(args)...);
982
1.42M
        allocated.push_back(r);
983
1.42M
        return r;
984
1.42M
    }
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
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::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
5.66M
    {
981
5.66M
        auto r = new T(std::forward<Args>(args)...);
982
5.66M
        allocated.push_back(r);
983
5.66M
        return r;
984
5.66M
    }
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
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::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
3.57M
    {
981
3.57M
        auto r = new T(std::forward<Args>(args)...);
982
3.57M
        allocated.push_back(r);
983
3.57M
        return r;
984
3.57M
    }
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
391k
    {
981
391k
        auto r = new T(std::forward<Args>(args)...);
982
391k
        allocated.push_back(r);
983
391k
        return r;
984
391k
    }
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
545k
    {
981
545k
        auto r = new T(std::forward<Args>(args)...);
982
545k
        allocated.push_back(r);
983
545k
        return r;
984
545k
    }
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
13.2M
    {
981
13.2M
        auto r = new T(std::forward<Args>(args)...);
982
13.2M
        allocated.push_back(r);
983
13.2M
        return r;
984
13.2M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Index*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Index*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
980
1.58M
    {
981
1.58M
        auto r = new T(std::forward<Args>(args)...);
982
1.58M
        allocated.push_back(r);
983
1.58M
        return r;
984
1.58M
    }
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.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::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
62.1k
    {
981
62.1k
        auto r = new T(std::forward<Args>(args)...);
982
62.1k
        allocated.push_back(r);
983
62.1k
        return r;
984
62.1k
    }
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
121k
    {
981
121k
        auto r = new T(std::forward<Args>(args)...);
982
121k
        allocated.push_back(r);
983
121k
        return r;
984
121k
    }
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
121k
    {
981
121k
        auto r = new T(std::forward<Args>(args)...);
982
121k
        allocated.push_back(r);
983
121k
        return r;
984
121k
    }
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.02M
    {
981
2.02M
        auto r = new T(std::forward<Args>(args)...);
982
2.02M
        allocated.push_back(r);
983
2.02M
        return r;
984
2.02M
    }
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
722k
    {
981
722k
        auto r = new T(std::forward<Args>(args)...);
982
722k
        allocated.push_back(r);
983
722k
        return r;
984
722k
    }
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
29.4k
    {
981
29.4k
        auto r = new T(std::forward<Args>(args)...);
982
29.4k
        allocated.push_back(r);
983
29.4k
        return r;
984
29.4k
    }
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
29.4k
    {
981
29.4k
        auto r = new T(std::forward<Args>(args)...);
982
29.4k
        allocated.push_back(r);
983
29.4k
        return r;
984
29.4k
    }
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
29.4k
    {
981
29.4k
        auto r = new T(std::forward<Args>(args)...);
982
29.4k
        allocated.push_back(r);
983
29.4k
        return r;
984
29.4k
    }
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
29.4k
    {
981
29.4k
        auto r = new T(std::forward<Args>(args)...);
982
29.4k
        allocated.push_back(r);
983
29.4k
        return r;
984
29.4k
    }
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
864k
    {
981
864k
        auto r = new T(std::forward<Args>(args)...);
982
864k
        allocated.push_back(r);
983
864k
        return r;
984
864k
    }
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.26M
    {
981
2.26M
        auto r = new T(std::forward<Args>(args)...);
982
2.26M
        allocated.push_back(r);
983
2.26M
        return r;
984
2.26M
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::make<jsonnet::internal::Index, jsonnet::internal::LocationRange 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
74.0k
    {
981
74.0k
        auto r = new T(std::forward<Args>(args)...);
982
74.0k
        allocated.push_back(r);
983
74.0k
        return r;
984
74.0k
    }
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
74.0k
    {
981
74.0k
        auto r = new T(std::forward<Args>(args)...);
982
74.0k
        allocated.push_back(r);
983
74.0k
        return r;
984
74.0k
    }
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
69.8k
    {
981
69.8k
        auto r = new T(std::forward<Args>(args)...);
982
69.8k
        allocated.push_back(r);
983
69.8k
        return r;
984
69.8k
    }
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
69.8k
    {
981
69.8k
        auto r = new T(std::forward<Args>(args)...);
982
69.8k
        allocated.push_back(r);
983
69.8k
        return r;
984
69.8k
    }
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
69.7k
    {
981
69.7k
        auto r = new T(std::forward<Args>(args)...);
982
69.7k
        allocated.push_back(r);
983
69.7k
        return r;
984
69.7k
    }
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
69.7k
    {
981
69.7k
        auto r = new T(std::forward<Args>(args)...);
982
69.7k
        allocated.push_back(r);
983
69.7k
        return r;
984
69.7k
    }
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
676k
    {
981
676k
        auto r = new T(std::forward<Args>(args)...);
982
676k
        allocated.push_back(r);
983
676k
        return r;
984
676k
    }
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
8.76k
    {
981
8.76k
        auto r = new T(std::forward<Args>(args)...);
982
8.76k
        allocated.push_back(r);
983
8.76k
        return r;
984
8.76k
    }
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
8.76k
    {
981
8.76k
        auto r = new T(std::forward<Args>(args)...);
982
8.76k
        allocated.push_back(r);
983
8.76k
        return r;
984
8.76k
    }
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
8.76k
    {
981
8.76k
        auto r = new T(std::forward<Args>(args)...);
982
8.76k
        allocated.push_back(r);
983
8.76k
        return r;
984
8.76k
    }
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
17.5k
    {
981
17.5k
        auto r = new T(std::forward<Args>(args)...);
982
17.5k
        allocated.push_back(r);
983
17.5k
        return r;
984
17.5k
    }
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
38.9M
    {
989
38.9M
        auto r = new T(*ast);
990
38.9M
        allocated.push_back(r);
991
38.9M
        return r;
992
38.9M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::clone<jsonnet::internal::Apply>(jsonnet::internal::Apply*)
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
    }
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
1.14M
    {
989
1.14M
        auto r = new T(*ast);
990
1.14M
        allocated.push_back(r);
991
1.14M
        return r;
992
1.14M
    }
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.98M
    {
989
2.98M
        auto r = new T(*ast);
990
2.98M
        allocated.push_back(r);
991
2.98M
        return r;
992
2.98M
    }
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.50M
    {
989
1.50M
        auto r = new T(*ast);
990
1.50M
        allocated.push_back(r);
991
1.50M
        return r;
992
1.50M
    }
jsonnet::internal::DesugaredObject* jsonnet::internal::Allocator::clone<jsonnet::internal::DesugaredObject>(jsonnet::internal::DesugaredObject*)
Line
Count
Source
988
2.09M
    {
989
2.09M
        auto r = new T(*ast);
990
2.09M
        allocated.push_back(r);
991
2.09M
        return r;
992
2.09M
    }
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
348k
    {
989
348k
        auto r = new T(*ast);
990
348k
        allocated.push_back(r);
991
348k
        return r;
992
348k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::clone<jsonnet::internal::Function>(jsonnet::internal::Function*)
Line
Count
Source
988
278k
    {
989
278k
        auto r = new T(*ast);
990
278k
        allocated.push_back(r);
991
278k
        return r;
992
278k
    }
jsonnet::internal::Import* jsonnet::internal::Allocator::clone<jsonnet::internal::Import>(jsonnet::internal::Import*)
Line
Count
Source
988
7.95k
    {
989
7.95k
        auto r = new T(*ast);
990
7.95k
        allocated.push_back(r);
991
7.95k
        return r;
992
7.95k
    }
jsonnet::internal::Importstr* jsonnet::internal::Allocator::clone<jsonnet::internal::Importstr>(jsonnet::internal::Importstr*)
Line
Count
Source
988
12.5k
    {
989
12.5k
        auto r = new T(*ast);
990
12.5k
        allocated.push_back(r);
991
12.5k
        return r;
992
12.5k
    }
jsonnet::internal::Importbin* jsonnet::internal::Allocator::clone<jsonnet::internal::Importbin>(jsonnet::internal::Importbin*)
Line
Count
Source
988
55.3k
    {
989
55.3k
        auto r = new T(*ast);
990
55.3k
        allocated.push_back(r);
991
55.3k
        return r;
992
55.3k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::clone<jsonnet::internal::Index>(jsonnet::internal::Index*)
Line
Count
Source
988
1.84M
    {
989
1.84M
        auto r = new T(*ast);
990
1.84M
        allocated.push_back(r);
991
1.84M
        return r;
992
1.84M
    }
jsonnet::internal::InSuper* jsonnet::internal::Allocator::clone<jsonnet::internal::InSuper>(jsonnet::internal::InSuper*)
Line
Count
Source
988
476k
    {
989
476k
        auto r = new T(*ast);
990
476k
        allocated.push_back(r);
991
476k
        return r;
992
476k
    }
jsonnet::internal::LiteralBoolean* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralBoolean>(jsonnet::internal::LiteralBoolean*)
Line
Count
Source
988
159k
    {
989
159k
        auto r = new T(*ast);
990
159k
        allocated.push_back(r);
991
159k
        return r;
992
159k
    }
jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNull>(jsonnet::internal::LiteralNull*)
Line
Count
Source
988
171k
    {
989
171k
        auto r = new T(*ast);
990
171k
        allocated.push_back(r);
991
171k
        return r;
992
171k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNumber>(jsonnet::internal::LiteralNumber*)
Line
Count
Source
988
2.65M
    {
989
2.65M
        auto r = new T(*ast);
990
2.65M
        allocated.push_back(r);
991
2.65M
        return r;
992
2.65M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralString>(jsonnet::internal::LiteralString*)
Line
Count
Source
988
5.19M
    {
989
5.19M
        auto r = new T(*ast);
990
5.19M
        allocated.push_back(r);
991
5.19M
        return r;
992
5.19M
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::clone<jsonnet::internal::Local>(jsonnet::internal::Local*)
Line
Count
Source
988
799k
    {
989
799k
        auto r = new T(*ast);
990
799k
        allocated.push_back(r);
991
799k
        return r;
992
799k
    }
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
132k
    {
989
132k
        auto r = new T(*ast);
990
132k
        allocated.push_back(r);
991
132k
        return r;
992
132k
    }
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
28.8k
    {
989
28.8k
        auto r = new T(*ast);
990
28.8k
        allocated.push_back(r);
991
28.8k
        return r;
992
28.8k
    }
jsonnet::internal::SuperIndex* jsonnet::internal::Allocator::clone<jsonnet::internal::SuperIndex>(jsonnet::internal::SuperIndex*)
Line
Count
Source
988
491k
    {
989
491k
        auto r = new T(*ast);
990
491k
        allocated.push_back(r);
991
491k
        return r;
992
491k
    }
jsonnet::internal::Unary* jsonnet::internal::Allocator::clone<jsonnet::internal::Unary>(jsonnet::internal::Unary*)
Line
Count
Source
988
7.18M
    {
989
7.18M
        auto r = new T(*ast);
990
7.18M
        allocated.push_back(r);
991
7.18M
        return r;
992
7.18M
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::clone<jsonnet::internal::Var>(jsonnet::internal::Var*)
Line
Count
Source
988
9.80M
    {
989
9.80M
        auto r = new T(*ast);
990
9.80M
        allocated.push_back(r);
991
9.80M
        return r;
992
9.80M
    }
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
114M
    {
999
114M
        auto it = internedIdentifiers.find(name);
1000
114M
        if (it != internedIdentifiers.end()) {
1001
109M
            return it->second;
1002
109M
        }
1003
4.71M
        auto r = new Identifier(name);
1004
4.71M
        internedIdentifiers[name] = r;
1005
4.71M
        return r;
1006
114M
    }
1007
    template <typename F>
1008
    const BuiltinFunctionBody *makeBuiltinBody(const LocationRange &loc, const std::string &name, F&& make_params)
1009
676k
    {
1010
676k
        auto it = internedBuiltins.find(name);
1011
676k
        if (it != internedBuiltins.end()) {
1012
308k
            return it->second;
1013
308k
        }
1014
368k
        const Identifiers params = make_params();
1015
368k
        auto r = new BuiltinFunctionBody(loc, name, params);
1016
368k
        internedBuiltins[name] = r;
1017
368k
        return r;
1018
676k
    }
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
676k
    {
1010
676k
        auto it = internedBuiltins.find(name);
1011
676k
        if (it != internedBuiltins.end()) {
1012
308k
            return it->second;
1013
308k
        }
1014
368k
        const Identifiers params = make_params();
1015
368k
        auto r = new BuiltinFunctionBody(loc, name, params);
1016
368k
        internedBuiltins[name] = r;
1017
368k
        return r;
1018
676k
    }
1019
    ~Allocator()
1020
15.5k
    {
1021
236M
        for (auto x : allocated) {
1022
236M
            delete x;
1023
236M
        }
1024
15.5k
        allocated.clear();
1025
4.71M
        for (const auto &x : internedIdentifiers) {
1026
4.71M
            delete x.second;
1027
4.71M
        }
1028
15.5k
        internedIdentifiers.clear();
1029
368k
        for (const auto &x : internedBuiltins) {
1030
368k
            delete x.second;
1031
368k
        }
1032
15.5k
        internedBuiltins.clear();
1033
15.5k
    }
1034
};
1035
1036
namespace {
1037
1038
// Precedences used by various compilation units are defined here.
1039
const int APPLY_PRECEDENCE = 2;         // Function calls and indexing.
1040
const int UNARY_PRECEDENCE = 4;         // Logical and bitwise negation, unary + -
1041
const int MAX_PRECEDENCE = 15;          // higher than any other precedence
1042
1043
/** These are the binary operator precedences, unary precedence is given by
1044
 * UNARY_PRECEDENCE.
1045
 */
1046
std::map<BinaryOp, int> build_precedence_map(void)
1047
35
{
1048
35
    std::map<BinaryOp, int> r;
1049
1050
35
    r[BOP_MULT] = 5;
1051
35
    r[BOP_DIV] = 5;
1052
35
    r[BOP_PERCENT] = 5;
1053
1054
35
    r[BOP_PLUS] = 6;
1055
35
    r[BOP_MINUS] = 6;
1056
1057
35
    r[BOP_SHIFT_L] = 7;
1058
35
    r[BOP_SHIFT_R] = 7;
1059
1060
35
    r[BOP_GREATER] = 8;
1061
35
    r[BOP_GREATER_EQ] = 8;
1062
35
    r[BOP_LESS] = 8;
1063
35
    r[BOP_LESS_EQ] = 8;
1064
35
    r[BOP_IN] = 8;
1065
1066
35
    r[BOP_MANIFEST_EQUAL] = 9;
1067
35
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
35
    r[BOP_BITWISE_AND] = 10;
1070
1071
35
    r[BOP_BITWISE_XOR] = 11;
1072
1073
35
    r[BOP_BITWISE_OR] = 12;
1074
1075
35
    r[BOP_AND] = 13;
1076
1077
35
    r[BOP_OR] = 14;
1078
1079
35
    return r;
1080
35
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_precedence_map()
Line
Count
Source
1047
5
{
1048
5
    std::map<BinaryOp, int> r;
1049
1050
5
    r[BOP_MULT] = 5;
1051
5
    r[BOP_DIV] = 5;
1052
5
    r[BOP_PERCENT] = 5;
1053
1054
5
    r[BOP_PLUS] = 6;
1055
5
    r[BOP_MINUS] = 6;
1056
1057
5
    r[BOP_SHIFT_L] = 7;
1058
5
    r[BOP_SHIFT_R] = 7;
1059
1060
5
    r[BOP_GREATER] = 8;
1061
5
    r[BOP_GREATER_EQ] = 8;
1062
5
    r[BOP_LESS] = 8;
1063
5
    r[BOP_LESS_EQ] = 8;
1064
5
    r[BOP_IN] = 8;
1065
1066
5
    r[BOP_MANIFEST_EQUAL] = 9;
1067
5
    r[BOP_MANIFEST_UNEQUAL] = 9;
1068
1069
5
    r[BOP_BITWISE_AND] = 10;
1070
1071
5
    r[BOP_BITWISE_XOR] = 11;
1072
1073
5
    r[BOP_BITWISE_OR] = 12;
1074
1075
5
    r[BOP_AND] = 13;
1076
1077
5
    r[BOP_OR] = 14;
1078
1079
5
    return r;
1080
5
}
1081
1082
std::map<std::string, UnaryOp> build_unary_map(void)
1083
35
{
1084
35
    std::map<std::string, UnaryOp> r;
1085
35
    r["!"] = UOP_NOT;
1086
35
    r["~"] = UOP_BITWISE_NOT;
1087
35
    r["+"] = UOP_PLUS;
1088
35
    r["-"] = UOP_MINUS;
1089
35
    return r;
1090
35
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_unary_map()
Line
Count
Source
1083
5
{
1084
5
    std::map<std::string, UnaryOp> r;
1085
5
    r["!"] = UOP_NOT;
1086
5
    r["~"] = UOP_BITWISE_NOT;
1087
5
    r["+"] = UOP_PLUS;
1088
5
    r["-"] = UOP_MINUS;
1089
5
    return r;
1090
5
}
1091
1092
std::map<std::string, BinaryOp> build_binary_map(void)
1093
35
{
1094
35
    std::map<std::string, BinaryOp> r;
1095
1096
35
    r["*"] = BOP_MULT;
1097
35
    r["/"] = BOP_DIV;
1098
35
    r["%"] = BOP_PERCENT;
1099
1100
35
    r["+"] = BOP_PLUS;
1101
35
    r["-"] = BOP_MINUS;
1102
1103
35
    r["<<"] = BOP_SHIFT_L;
1104
35
    r[">>"] = BOP_SHIFT_R;
1105
1106
35
    r[">"] = BOP_GREATER;
1107
35
    r[">="] = BOP_GREATER_EQ;
1108
35
    r["<"] = BOP_LESS;
1109
35
    r["<="] = BOP_LESS_EQ;
1110
35
    r["in"] = BOP_IN;
1111
1112
35
    r["=="] = BOP_MANIFEST_EQUAL;
1113
35
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
35
    r["&"] = BOP_BITWISE_AND;
1116
35
    r["^"] = BOP_BITWISE_XOR;
1117
35
    r["|"] = BOP_BITWISE_OR;
1118
1119
35
    r["&&"] = BOP_AND;
1120
35
    r["||"] = BOP_OR;
1121
35
    return r;
1122
35
}
libjsonnet.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
parser.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
pass.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
static_analysis.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
vm.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
desugarer.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
formatter.cpp:jsonnet::internal::(anonymous namespace)::build_binary_map()
Line
Count
Source
1093
5
{
1094
5
    std::map<std::string, BinaryOp> r;
1095
1096
5
    r["*"] = BOP_MULT;
1097
5
    r["/"] = BOP_DIV;
1098
5
    r["%"] = BOP_PERCENT;
1099
1100
5
    r["+"] = BOP_PLUS;
1101
5
    r["-"] = BOP_MINUS;
1102
1103
5
    r["<<"] = BOP_SHIFT_L;
1104
5
    r[">>"] = BOP_SHIFT_R;
1105
1106
5
    r[">"] = BOP_GREATER;
1107
5
    r[">="] = BOP_GREATER_EQ;
1108
5
    r["<"] = BOP_LESS;
1109
5
    r["<="] = BOP_LESS_EQ;
1110
5
    r["in"] = BOP_IN;
1111
1112
5
    r["=="] = BOP_MANIFEST_EQUAL;
1113
5
    r["!="] = BOP_MANIFEST_UNEQUAL;
1114
1115
5
    r["&"] = BOP_BITWISE_AND;
1116
5
    r["^"] = BOP_BITWISE_XOR;
1117
5
    r["|"] = BOP_BITWISE_OR;
1118
1119
5
    r["&&"] = BOP_AND;
1120
5
    r["||"] = BOP_OR;
1121
5
    return r;
1122
5
}
1123
1124
auto precedence_map = build_precedence_map();
1125
auto unary_map = build_unary_map();
1126
auto binary_map = build_binary_map();
1127
1128
}  // namespace
1129
1130
}  // namespace jsonnet::internal
1131
1132
#endif  // JSONNET_AST_H