Coverage Report

Created: 2025-08-29 06:46

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