Coverage Report

Created: 2026-01-17 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/jsonnet/core/ast.h
Line
Count
Source
1
/*
2
Copyright 2015 Google Inc. All rights reserved.
3
4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
7
8
    http://www.apache.org/licenses/LICENSE-2.0
9
10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
15
*/
16
17
#ifndef JSONNET_AST_H
18
#define JSONNET_AST_H
19
20
#include <cassert>
21
#include <cstdlib>
22
23
#include <iostream>
24
#include <list>
25
#include <map>
26
#include <string>
27
#include <vector>
28
29
#include "lexer.h"
30
#include "unicode.h"
31
32
namespace jsonnet::internal {
33
34
enum ASTType {
35
    AST_APPLY,
36
    AST_APPLY_BRACE,
37
    AST_ARRAY,
38
    AST_ARRAY_COMPREHENSION,
39
    AST_ARRAY_COMPREHENSION_SIMPLE,
40
    AST_ASSERT,
41
    AST_BINARY,
42
    AST_BUILTIN_FUNCTION,
43
    AST_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.08M
    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
273M
        : location(location), type(type), openFodder(open_fodder)
131
273M
    {
132
273M
    }
133
311M
    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.81M
        : idFodder(id_fodder), id(id), expr(nullptr), commaFodder(comma_fodder)
157
1.81M
    {
158
1.81M
    }
159
    // Only has expr
160
    ArgParam(AST *expr, const Fodder &comma_fodder)
161
19.2M
        : id(nullptr), expr(expr), commaFodder(comma_fodder)
162
19.2M
    {
163
19.2M
    }
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
40.2M
        : idFodder(id_fodder), id(id), eqFodder(eq_fodder), expr(expr), commaFodder(comma_fodder)
168
40.2M
    {
169
40.2M
    }
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
28.1M
        : AST(lr, AST_APPLY, open_fodder),
208
28.1M
          target(target),
209
28.1M
          fodderL(fodder_l),
210
28.1M
          args(args),
211
28.1M
          trailingComma(trailing_comma),
212
28.1M
          fodderR(fodder_r),
213
28.1M
          tailstrictFodder(tailstrict_fodder),
214
28.1M
          tailstrict(tailstrict)
215
28.1M
    {
216
28.1M
    }
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
220k
        : AST(lr, AST_APPLY_BRACE, open_fodder), left(left), right(right)
225
220k
    {
226
220k
    }
227
};
228
229
/** Represents array constructors [1, 2, 3]. */
230
struct Array : public AST {
231
    struct Element {
232
        AST *expr;
233
        Fodder commaFodder;
234
8.74M
        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.16M
        : AST(lr, AST_ARRAY, open_fodder),
243
4.16M
          elements(elements),
244
4.16M
          trailingComma(trailing_comma),
245
4.16M
          closeFodder(close_fodder)
246
4.16M
    {
247
4.16M
    }
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
831k
        : AST(lr, AST_ARRAY_COMPREHENSION, open_fodder),
261
831k
          body(body),
262
831k
          commaFodder(comma_fodder),
263
831k
          trailingComma(trailing_comma),
264
831k
          specs(specs),
265
831k
          closeFodder(close_fodder)
266
831k
    {
267
831k
        assert(specs.size() > 0);
268
831k
    }
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
913k
        : AST(lr, AST_ASSERT, open_fodder),
285
913k
          cond(cond),
286
913k
          colonFodder(colon_fodder),
287
913k
          message(message),
288
913k
          semicolonFodder(semicolon_fodder),
289
913k
          rest(rest)
290
913k
    {
291
913k
    }
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
528
{
324
528
    switch (bop) {
325
17
        case BOP_MULT: return "*";
326
20
        case BOP_DIV: return "/";
327
0
        case BOP_PERCENT: return "%";
328
329
184
        case BOP_PLUS: return "+";
330
43
        case BOP_MINUS: return "-";
331
332
11
        case BOP_SHIFT_L: return "<<";
333
4
        case BOP_SHIFT_R: return ">>";
334
335
52
        case BOP_GREATER: return ">";
336
39
        case BOP_GREATER_EQ: return ">=";
337
55
        case BOP_LESS: return "<";
338
21
        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
30
        case BOP_BITWISE_AND: return "&";
345
20
        case BOP_BITWISE_XOR: return "^";
346
19
        case BOP_BITWISE_OR: return "|";
347
348
3
        case BOP_AND: return "&&";
349
10
        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
528
    }
355
528
}
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
528
{
324
528
    switch (bop) {
325
17
        case BOP_MULT: return "*";
326
20
        case BOP_DIV: return "/";
327
0
        case BOP_PERCENT: return "%";
328
329
184
        case BOP_PLUS: return "+";
330
43
        case BOP_MINUS: return "-";
331
332
11
        case BOP_SHIFT_L: return "<<";
333
4
        case BOP_SHIFT_R: return ">>";
334
335
52
        case BOP_GREATER: return ">";
336
39
        case BOP_GREATER_EQ: return ">=";
337
55
        case BOP_LESS: return "<";
338
21
        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
30
        case BOP_BITWISE_AND: return "&";
345
20
        case BOP_BITWISE_XOR: return "^";
346
19
        case BOP_BITWISE_OR: return "|";
347
348
3
        case BOP_AND: return "&&";
349
10
        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
528
    }
355
528
}
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
22.5M
        : AST(lr, AST_BINARY, open_fodder), left(left), opFodder(op_fodder), op(op), right(right)
366
22.5M
    {
367
22.5M
    }
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
912k
        : AST(lr, AST_BUILTIN_FUNCTION, Fodder{}), name(name), params(params)
380
912k
    {
381
912k
    }
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.4M
        : AST(lr, AST_CONDITIONAL, open_fodder),
399
10.4M
          cond(cond),
400
10.4M
          thenFodder(then_fodder),
401
10.4M
          branchTrue(branch_true),
402
10.4M
          elseFodder(else_fodder),
403
10.4M
          branchFalse(branch_false)
404
10.4M
    {
405
10.4M
    }
406
};
407
408
/** Represents the $ keyword. */
409
struct Dollar : public AST {
410
102k
    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.28M
        : AST(lr, AST_ERROR, open_fodder), expr(expr)
418
3.28M
    {
419
3.28M
    }
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.80M
        : AST(lr, AST_FUNCTION, open_fodder),
433
5.80M
          parenLeftFodder(paren_left_fodder),
434
5.80M
          params(params),
435
5.80M
          trailingComma(trailing_comma),
436
5.80M
          parenRightFodder(paren_right_fodder),
437
5.80M
          body(body)
438
5.80M
    {
439
5.80M
    }
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.22k
        : AST(lr, AST_IMPORT, open_fodder), file(file)
449
1.22k
    {
450
1.22k
    }
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.85k
        : AST(lr, AST_IMPORTSTR, open_fodder), file(file)
458
2.85k
    {
459
2.85k
    }
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
1.06k
        : AST(lr, AST_IMPORTBIN, open_fodder), file(file)
467
1.06k
    {
468
1.06k
    }
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
15.9M
        : AST(lr, AST_INDEX, open_fodder),
490
15.9M
          target(target),
491
15.9M
          dotFodder(dot_fodder),
492
15.9M
          isSlice(false),
493
15.9M
          index(nullptr),
494
15.9M
          end(nullptr),
495
15.9M
          step(nullptr),
496
15.9M
          idFodder(id_fodder),
497
15.9M
          id(id)
498
15.9M
    {
499
15.9M
    }
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
12.8M
        : AST(lr, AST_INDEX, open_fodder),
505
12.8M
          target(target),
506
12.8M
          dotFodder(dot_fodder),
507
12.8M
          isSlice(is_slice),
508
12.8M
          index(index),
509
12.8M
          endColonFodder(end_colon_fodder),
510
12.8M
          end(end),
511
12.8M
          stepColonFodder(step_colon_fodder),
512
12.8M
          step(step),
513
12.8M
          idFodder(id_fodder),
514
12.8M
          id(nullptr)
515
12.8M
    {
516
12.8M
    }
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
9.62M
            : varFodder(var_fodder),
536
9.62M
              var(var),
537
9.62M
              opFodder(op_fodder),
538
9.62M
              body(body),
539
9.62M
              functionSugar(function_sugar),
540
9.62M
              parenLeftFodder(paren_left_fodder),
541
9.62M
              params(params),
542
9.62M
              trailingComma(trailing_comma),
543
9.62M
              parenRightFodder(paren_right_fodder),
544
9.62M
              closeFodder(close_fodder)
545
9.62M
        {
546
9.62M
        }
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.2M
        : AST(lr, AST_LOCAL, open_fodder), binds(binds), body(body)
553
10.2M
    {
554
10.2M
    }
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
1.94M
        : AST(lr, AST_LITERAL_BOOLEAN, open_fodder), value(value)
562
1.94M
    {
563
1.94M
    }
564
};
565
566
/** Represents the null keyword. */
567
struct LiteralNull : public AST {
568
    LiteralNull(const LocationRange &lr, const Fodder &open_fodder)
569
1.13M
        : AST(lr, AST_LITERAL_NULL, open_fodder)
570
1.13M
    {
571
1.13M
    }
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
16.0M
        : AST(lr, AST_LITERAL_NUMBER, open_fodder),
580
16.0M
          value(strtod(str.c_str(), nullptr)),
581
16.0M
          originalString(str)
582
16.0M
    {
583
16.0M
    }
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
42.5M
        : AST(lr, AST_LITERAL_STRING, open_fodder),
597
42.5M
          value(value),
598
42.5M
          tokenKind(token_kind),
599
42.5M
          blockIndent(block_indent),
600
42.5M
          blockTermIndent(block_term_indent)
601
42.5M
    {
602
42.5M
    }
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.70M
        : kind(kind),
667
5.70M
          fodder1(fodder1),
668
5.70M
          fodder2(fodder2),
669
5.70M
          fodderL(fodder_l),
670
5.70M
          fodderR(fodder_r),
671
5.70M
          hide(hide),
672
5.70M
          superSugar(super_sugar),
673
5.70M
          methodSugar(method_sugar),
674
5.70M
          expr1(expr1),
675
5.70M
          id(id),
676
5.70M
          idLocation(id_lr),
677
5.70M
          params(params),
678
5.70M
          trailingComma(trailing_comma),
679
5.70M
          opFodder(op_fodder),
680
5.70M
          expr2(expr2),
681
5.70M
          expr3(expr3),
682
5.70M
          commaFodder(comma_fodder)
683
5.70M
    {
684
        // Enforce what is written in comments above.
685
5.70M
        assert(kind != ASSERT || (hide == VISIBLE && !superSugar && !methodSugar));
686
5.70M
        assert(kind != LOCAL || (hide == VISIBLE && !superSugar));
687
5.70M
        assert(kind != FIELD_ID || (id != nullptr && expr1 == nullptr));
688
5.70M
        assert(kind == FIELD_ID || kind == LOCAL || id == nullptr);
689
5.70M
        assert(methodSugar || (params.size() == 0 && !trailingComma));
690
5.70M
        assert(kind == ASSERT || expr3 == nullptr);
691
5.70M
    }
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
157k
    {
698
157k
        return ObjectField(LOCAL,
699
157k
                           fodder1,
700
157k
                           fodder2,
701
157k
                           fodder_l,
702
157k
                           fodder_r,
703
157k
                           VISIBLE,
704
157k
                           false,
705
157k
                           method_sugar,
706
157k
                           nullptr,
707
157k
                           id,
708
157k
                           LocationRange(),
709
157k
                           params,
710
157k
                           trailing_comma,
711
157k
                           op_fodder,
712
157k
                           body,
713
157k
                           nullptr,
714
157k
                           comma_fodder);
715
157k
    }
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
80.1k
    {
719
80.1k
        return ObjectField(LOCAL,
720
80.1k
                           fodder1,
721
80.1k
                           fodder2,
722
80.1k
                           Fodder{},
723
80.1k
                           Fodder{},
724
80.1k
                           VISIBLE,
725
80.1k
                           false,
726
80.1k
                           false,
727
80.1k
                           nullptr,
728
80.1k
                           id,
729
80.1k
                           LocationRange(),
730
80.1k
                           ArgParams{},
731
80.1k
                           false,
732
80.1k
                           op_fodder,
733
80.1k
                           body,
734
80.1k
                           nullptr,
735
80.1k
                           comma_fodder);
736
80.1k
    }
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
55.0k
    {
764
55.0k
        return ObjectField(ASSERT,
765
55.0k
                           fodder1,
766
55.0k
                           Fodder{},
767
55.0k
                           Fodder{},
768
55.0k
                           Fodder{},
769
55.0k
                           VISIBLE,
770
55.0k
                           false,
771
55.0k
                           false,
772
55.0k
                           nullptr,
773
55.0k
                           nullptr,
774
55.0k
                           LocationRange(),
775
55.0k
                           ArgParams{},
776
55.0k
                           false,
777
55.0k
                           op_fodder,
778
55.0k
                           body,
779
55.0k
                           msg,
780
55.0k
                           comma_fodder);
781
55.0k
    }
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.21M
        : AST(lr, AST_OBJECT, open_fodder),
797
1.21M
          fields(fields),
798
1.21M
          trailingComma(trailing_comma),
799
1.21M
          closeFodder(close_fodder)
800
1.21M
    {
801
1.21M
        assert(fields.size() > 0 || !trailing_comma);
802
1.21M
        if (fields.size() > 0)
803
1.21M
            assert(trailing_comma || fields[fields.size() - 1].commaFodder.size() == 0);
804
1.21M
    }
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.02M
            : hide(hide), name(name), body(body)
818
6.02M
        {
819
6.02M
        }
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.18M
        : AST(lr, AST_DESUGARED_OBJECT, Fodder{}), asserts(asserts), fields(fields)
826
1.18M
    {
827
1.18M
    }
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
123k
        : AST(lr, AST_OBJECT_COMPREHENSION, open_fodder),
841
123k
          fields(fields),
842
123k
          trailingComma(trailing_comma),
843
123k
          specs(specs),
844
123k
          closeFodder(close_fodder)
845
123k
    {
846
123k
    }
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
118k
        : AST(lr, AST_OBJECT_COMPREHENSION_SIMPLE, Fodder{}),
858
118k
          field(field),
859
118k
          value(value),
860
118k
          id(id),
861
118k
          array(array)
862
118k
    {
863
118k
    }
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.06M
        : AST(lr, AST_PARENS, open_fodder), expr(expr), closeFodder(close_fodder)
873
1.06M
    {
874
1.06M
    }
875
};
876
877
/** Represents the self keyword. */
878
struct Self : public AST {
879
171k
    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
51.4k
        : AST(lr, AST_SUPER_INDEX, open_fodder),
895
51.4k
          dotFodder(dot_fodder),
896
51.4k
          index(index),
897
51.4k
          idFodder(id_fodder),
898
51.4k
          id(id)
899
51.4k
    {
900
51.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
45.5k
        : AST(lr, AST_IN_SUPER, open_fodder),
912
45.5k
          element(element),
913
45.5k
          inFodder(in_fodder),
914
45.5k
          superFodder(super_fodder)
915
45.5k
    {
916
45.5k
    }
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
339
{
923
339
    switch (uop) {
924
226
        case UOP_PLUS: return "+";
925
25
        case UOP_MINUS: return "-";
926
11
        case UOP_BITWISE_NOT: return "~";
927
77
        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
339
    }
933
339
}
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
339
{
923
339
    switch (uop) {
924
226
        case UOP_PLUS: return "+";
925
25
        case UOP_MINUS: return "-";
926
11
        case UOP_BITWISE_NOT: return "~";
927
77
        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
339
    }
933
339
}
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.08M
        : AST(lr, AST_UNARY, open_fodder), op(op), expr(expr)
941
2.08M
    {
942
2.08M
    }
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
89.0M
        : AST(lr, AST_VAR, open_fodder), id(id)
950
89.0M
    {
951
89.0M
    }
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
273M
    {
964
273M
        auto r = new T(std::forward<Args>(args)...);
965
273M
        allocated.push_back(r);
966
273M
        return r;
967
273M
    }
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
913k
    {
964
913k
        auto r = new T(std::forward<Args>(args)...);
965
913k
        allocated.push_back(r);
966
913k
        return r;
967
913k
    }
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.41M
    {
964
1.41M
        auto r = new T(std::forward<Args>(args)...);
965
1.41M
        allocated.push_back(r);
966
1.41M
        return r;
967
1.41M
    }
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.11M
    {
964
7.11M
        auto r = new T(std::forward<Args>(args)...);
965
7.11M
        allocated.push_back(r);
966
7.11M
        return r;
967
7.11M
    }
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
89.3k
    {
964
89.3k
        auto r = new T(std::forward<Args>(args)...);
965
89.3k
        allocated.push_back(r);
966
89.3k
        return r;
967
89.3k
    }
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
447k
    {
964
447k
        auto r = new T(std::forward<Args>(args)...);
965
447k
        allocated.push_back(r);
966
447k
        return r;
967
447k
    }
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.22k
    {
964
1.22k
        auto r = new T(std::forward<Args>(args)...);
965
1.22k
        allocated.push_back(r);
966
1.22k
        return r;
967
1.22k
    }
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.85k
    {
964
2.85k
        auto r = new T(std::forward<Args>(args)...);
965
2.85k
        allocated.push_back(r);
966
2.85k
        return r;
967
2.85k
    }
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
1.06k
    {
964
1.06k
        auto r = new T(std::forward<Args>(args)...);
965
1.06k
        allocated.push_back(r);
966
1.06k
        return r;
967
1.06k
    }
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.34M
    {
964
5.34M
        auto r = new T(std::forward<Args>(args)...);
965
5.34M
        allocated.push_back(r);
966
5.34M
        return r;
967
5.34M
    }
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.51M
    {
964
1.51M
        auto r = new T(std::forward<Args>(args)...);
965
1.51M
        allocated.push_back(r);
966
1.51M
        return r;
967
1.51M
    }
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.21M
    {
964
1.21M
        auto r = new T(std::forward<Args>(args)...);
965
1.21M
        allocated.push_back(r);
966
1.21M
        return r;
967
1.21M
    }
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
123k
    {
964
123k
        auto r = new T(std::forward<Args>(args)...);
965
123k
        allocated.push_back(r);
966
123k
        return r;
967
123k
    }
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
231k
    {
964
231k
        auto r = new T(std::forward<Args>(args)...);
965
231k
        allocated.push_back(r);
966
231k
        return r;
967
231k
    }
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
3.88k
    {
964
3.88k
        auto r = new T(std::forward<Args>(args)...);
965
3.88k
        allocated.push_back(r);
966
3.88k
        return r;
967
3.88k
    }
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
513k
    {
964
513k
        auto r = new T(std::forward<Args>(args)...);
965
513k
        allocated.push_back(r);
966
513k
        return r;
967
513k
    }
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
712k
    {
964
712k
        auto r = new T(std::forward<Args>(args)...);
965
712k
        allocated.push_back(r);
966
712k
        return r;
967
712k
    }
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.87M
    {
964
1.87M
        auto r = new T(std::forward<Args>(args)...);
965
1.87M
        allocated.push_back(r);
966
1.87M
        return r;
967
1.87M
    }
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.06M
    {
964
1.06M
        auto r = new T(std::forward<Args>(args)...);
965
1.06M
        allocated.push_back(r);
966
1.06M
        return r;
967
1.06M
    }
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
14.1M
    {
964
14.1M
        auto r = new T(std::forward<Args>(args)...);
965
14.1M
        allocated.push_back(r);
966
14.1M
        return r;
967
14.1M
    }
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.5M
    {
964
10.5M
        auto r = new T(std::forward<Args>(args)...);
965
10.5M
        allocated.push_back(r);
966
10.5M
        return r;
967
10.5M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralString, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::basic_string<char32_t, std::__1::char_traits<char32_t>, std::__1::allocator<char32_t> >, jsonnet::internal::LiteralString::TokenKind, 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
6.18k
    {
964
6.18k
        auto r = new T(std::forward<Args>(args)...);
965
6.18k
        allocated.push_back(r);
966
6.18k
        return r;
967
6.18k
    }
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.89M
    {
964
1.89M
        auto r = new T(std::forward<Args>(args)...);
965
1.89M
        allocated.push_back(r);
966
1.89M
        return r;
967
1.89M
    }
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
381k
    {
964
381k
        auto r = new T(std::forward<Args>(args)...);
965
381k
        allocated.push_back(r);
966
381k
        return r;
967
381k
    }
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
102k
    {
964
102k
        auto r = new T(std::forward<Args>(args)...);
965
102k
        allocated.push_back(r);
966
102k
        return r;
967
102k
    }
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
69.4M
    {
964
69.4M
        auto r = new T(std::forward<Args>(args)...);
965
69.4M
        allocated.push_back(r);
966
69.4M
        return r;
967
69.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
90.1k
    {
964
90.1k
        auto r = new T(std::forward<Args>(args)...);
965
90.1k
        allocated.push_back(r);
966
90.1k
        return r;
967
90.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
6.73k
    {
964
6.73k
        auto r = new T(std::forward<Args>(args)...);
965
6.73k
        allocated.push_back(r);
966
6.73k
        return r;
967
6.73k
    }
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.80M
    {
964
3.80M
        auto r = new T(std::forward<Args>(args)...);
965
3.80M
        allocated.push_back(r);
966
3.80M
        return r;
967
3.80M
    }
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
15.9M
    {
964
15.9M
        auto r = new T(std::forward<Args>(args)...);
965
15.9M
        allocated.push_back(r);
966
15.9M
        return r;
967
15.9M
    }
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.0M
    {
964
18.0M
        auto r = new T(std::forward<Args>(args)...);
965
18.0M
        allocated.push_back(r);
966
18.0M
        return r;
967
18.0M
    }
jsonnet::internal::ApplyBrace* jsonnet::internal::Allocator::make<jsonnet::internal::ApplyBrace, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, jsonnet::internal::AST*&)
Line
Count
Source
963
220k
    {
964
220k
        auto r = new T(std::forward<Args>(args)...);
965
220k
        allocated.push_back(r);
966
220k
        return r;
967
220k
    }
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
840
    {
964
840
        auto r = new T(std::forward<Args>(args)...);
965
840
        allocated.push_back(r);
966
840
        return r;
967
840
    }
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.2M
    {
964
19.2M
        auto r = new T(std::forward<Args>(args)...);
965
19.2M
        allocated.push_back(r);
966
19.2M
        return r;
967
19.2M
    }
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.0k
    {
964
10.0k
        auto r = new T(std::forward<Args>(args)...);
965
10.0k
        allocated.push_back(r);
966
10.0k
        return r;
967
10.0k
    }
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
208k
    {
964
208k
        auto r = new T(std::forward<Args>(args)...);
965
208k
        allocated.push_back(r);
966
208k
        return r;
967
208k
    }
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.77M
    {
964
1.77M
        auto r = new T(std::forward<Args>(args)...);
965
1.77M
        allocated.push_back(r);
966
1.77M
        return r;
967
1.77M
    }
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
830k
    {
964
830k
        auto r = new T(std::forward<Args>(args)...);
965
830k
        allocated.push_back(r);
966
830k
        return r;
967
830k
    }
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.30M
    {
964
1.30M
        auto r = new T(std::forward<Args>(args)...);
965
1.30M
        allocated.push_back(r);
966
1.30M
        return r;
967
1.30M
    }
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
830k
    {
964
830k
        auto r = new T(std::forward<Args>(args)...);
965
830k
        allocated.push_back(r);
966
830k
        return r;
967
830k
    }
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
830k
    {
964
830k
        auto r = new T(std::forward<Args>(args)...);
965
830k
        allocated.push_back(r);
966
830k
        return r;
967
830k
    }
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.38M
    {
964
1.38M
        auto r = new T(std::forward<Args>(args)...);
965
1.38M
        allocated.push_back(r);
966
1.38M
        return r;
967
1.38M
    }
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
398k
    {
964
398k
        auto r = new T(std::forward<Args>(args)...);
965
398k
        allocated.push_back(r);
966
398k
        return r;
967
398k
    }
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
908k
    {
964
908k
        auto r = new T(std::forward<Args>(args)...);
965
908k
        allocated.push_back(r);
966
908k
        return r;
967
908k
    }
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
908k
    {
964
908k
        auto r = new T(std::forward<Args>(args)...);
965
908k
        allocated.push_back(r);
966
908k
        return r;
967
908k
    }
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
908k
    {
964
908k
        auto r = new T(std::forward<Args>(args)...);
965
908k
        allocated.push_back(r);
966
908k
        return r;
967
908k
    }
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
908k
    {
964
908k
        auto r = new T(std::forward<Args>(args)...);
965
908k
        allocated.push_back(r);
966
908k
        return r;
967
908k
    }
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
932k
    {
964
932k
        auto r = new T(std::forward<Args>(args)...);
965
932k
        allocated.push_back(r);
966
932k
        return r;
967
932k
    }
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
908k
    {
964
908k
        auto r = new T(std::forward<Args>(args)...);
965
908k
        allocated.push_back(r);
966
908k
        return r;
967
908k
    }
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
908k
    {
964
908k
        auto r = new T(std::forward<Args>(args)...);
965
908k
        allocated.push_back(r);
966
908k
        return r;
967
908k
    }
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
830k
    {
964
830k
        auto r = new T(std::forward<Args>(args)...);
965
830k
        allocated.push_back(r);
966
830k
        return r;
967
830k
    }
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
31.7M
    {
964
31.7M
        auto r = new T(std::forward<Args>(args)...);
965
31.7M
        allocated.push_back(r);
966
31.7M
        return r;
967
31.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.87M
    {
964
1.87M
        auto r = new T(std::forward<Args>(args)...);
965
1.87M
        allocated.push_back(r);
966
1.87M
        return r;
967
1.87M
    }
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
912k
    {
964
912k
        auto r = new T(std::forward<Args>(args)...);
965
912k
        allocated.push_back(r);
966
912k
        return r;
967
912k
    }
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
7.91M
    {
964
7.91M
        auto r = new T(std::forward<Args>(args)...);
965
7.91M
        allocated.push_back(r);
966
7.91M
        return r;
967
7.91M
    }
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
705k
    {
964
705k
        auto r = new T(std::forward<Args>(args)...);
965
705k
        allocated.push_back(r);
966
705k
        return r;
967
705k
    }
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
4.97M
    {
964
4.97M
        auto r = new T(std::forward<Args>(args)...);
965
4.97M
        allocated.push_back(r);
966
4.97M
        return r;
967
4.97M
    }
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
569k
    {
964
569k
        auto r = new T(std::forward<Args>(args)...);
965
569k
        allocated.push_back(r);
966
569k
        return r;
967
569k
    }
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
752k
    {
964
752k
        auto r = new T(std::forward<Args>(args)...);
965
752k
        allocated.push_back(r);
966
752k
        return r;
967
752k
    }
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
18.6M
    {
964
18.6M
        auto r = new T(std::forward<Args>(args)...);
965
18.6M
        allocated.push_back(r);
966
18.6M
        return r;
967
18.6M
    }
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.23M
    {
964
2.23M
        auto r = new T(std::forward<Args>(args)...);
965
2.23M
        allocated.push_back(r);
966
2.23M
        return r;
967
2.23M
    }
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.64M
    {
964
1.64M
        auto r = new T(std::forward<Args>(args)...);
965
1.64M
        allocated.push_back(r);
966
1.64M
        return r;
967
1.64M
    }
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
81.6k
    {
964
81.6k
        auto r = new T(std::forward<Args>(args)...);
965
81.6k
        allocated.push_back(r);
966
81.6k
        return r;
967
81.6k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralBoolean*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Error*>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::AST*&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::LiteralBoolean*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Error*&&)
Line
Count
Source
963
51.7k
    {
964
51.7k
        auto r = new T(std::forward<Args>(args)...);
965
51.7k
        allocated.push_back(r);
966
51.7k
        return r;
967
51.7k
    }
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
51.7k
    {
964
51.7k
        auto r = new T(std::forward<Args>(args)...);
965
51.7k
        allocated.push_back(r);
966
51.7k
        return r;
967
51.7k
    }
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.80M
    {
964
2.80M
        auto r = new T(std::forward<Args>(args)...);
965
2.80M
        allocated.push_back(r);
966
2.80M
        return r;
967
2.80M
    }
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
926k
    {
964
926k
        auto r = new T(std::forward<Args>(args)...);
965
926k
        allocated.push_back(r);
966
926k
        return r;
967
926k
    }
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
44.7k
    {
964
44.7k
        auto r = new T(std::forward<Args>(args)...);
965
44.7k
        allocated.push_back(r);
966
44.7k
        return r;
967
44.7k
    }
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
44.7k
    {
964
44.7k
        auto r = new T(std::forward<Args>(args)...);
965
44.7k
        allocated.push_back(r);
966
44.7k
        return r;
967
44.7k
    }
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
44.7k
    {
964
44.7k
        auto r = new T(std::forward<Args>(args)...);
965
44.7k
        allocated.push_back(r);
966
44.7k
        return r;
967
44.7k
    }
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
44.7k
    {
964
44.7k
        auto r = new T(std::forward<Args>(args)...);
965
44.7k
        allocated.push_back(r);
966
44.7k
        return r;
967
44.7k
    }
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.18M
    {
964
1.18M
        auto r = new T(std::forward<Args>(args)...);
965
1.18M
        allocated.push_back(r);
966
1.18M
        return r;
967
1.18M
    }
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.00M
    {
964
3.00M
        auto r = new T(std::forward<Args>(args)...);
965
3.00M
        allocated.push_back(r);
966
3.00M
        return r;
967
3.00M
    }
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
127k
    {
964
127k
        auto r = new T(std::forward<Args>(args)...);
965
127k
        allocated.push_back(r);
966
127k
        return r;
967
127k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNumber, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, 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
127k
    {
964
127k
        auto r = new T(std::forward<Args>(args)...);
965
127k
        allocated.push_back(r);
966
127k
        return r;
967
127k
    }
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
118k
    {
964
118k
        auto r = new T(std::forward<Args>(args)...);
965
118k
        allocated.push_back(r);
966
118k
        return r;
967
118k
    }
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
118k
    {
964
118k
        auto r = new T(std::forward<Args>(args)...);
965
118k
        allocated.push_back(r);
966
118k
        return r;
967
118k
    }
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
118k
    {
964
118k
        auto r = new T(std::forward<Args>(args)...);
965
118k
        allocated.push_back(r);
966
118k
        return r;
967
118k
    }
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
118k
    {
964
118k
        auto r = new T(std::forward<Args>(args)...);
965
118k
        allocated.push_back(r);
966
118k
        return r;
967
118k
    }
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
912k
    {
964
912k
        auto r = new T(std::forward<Args>(args)...);
965
912k
        allocated.push_back(r);
966
912k
        return r;
967
912k
    }
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.2k
    {
964
12.2k
        auto r = new T(std::forward<Args>(args)...);
965
12.2k
        allocated.push_back(r);
966
12.2k
        return r;
967
12.2k
    }
jsonnet::internal::Conditional* jsonnet::internal::Allocator::make<jsonnet::internal::Conditional, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Apply*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Var*>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Apply*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Apply*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Var*&&)
Line
Count
Source
963
12.2k
    {
964
12.2k
        auto r = new T(std::forward<Args>(args)...);
965
12.2k
        allocated.push_back(r);
966
12.2k
        return r;
967
12.2k
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::make<jsonnet::internal::Apply, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, jsonnet::internal::Var*&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::ArgParam, std::__1::allocator<jsonnet::internal::ArgParam> >&, bool&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> > const&, bool&&)
Line
Count
Source
963
12.2k
    {
964
12.2k
        auto r = new T(std::forward<Args>(args)...);
965
12.2k
        allocated.push_back(r);
966
12.2k
        return r;
967
12.2k
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::make<jsonnet::internal::Var, jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&>(jsonnet::internal::LocationRange const&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::Identifier const*&)
Line
Count
Source
963
24.4k
    {
964
24.4k
        auto r = new T(std::forward<Args>(args)...);
965
24.4k
        allocated.push_back(r);
966
24.4k
        return r;
967
24.4k
    }
Unexecuted instantiation: jsonnet::internal::Local* jsonnet::internal::Allocator::make<jsonnet::internal::Local, jsonnet::internal::LocationRange, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, std::__1::vector<jsonnet::internal::Local::Bind, std::__1::allocator<jsonnet::internal::Local::Bind> >&&, jsonnet::internal::AST*&)
Unexecuted instantiation: jsonnet::internal::ApplyBrace* jsonnet::internal::Allocator::make<jsonnet::internal::ApplyBrace, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, jsonnet::internal::AST*&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&, jsonnet::internal::AST*&, jsonnet::internal::AST*&)
Unexecuted instantiation: jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::make<jsonnet::internal::LiteralNull, jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&>(jsonnet::internal::LocationRange&, std::__1::vector<jsonnet::internal::FodderElement, std::__1::allocator<jsonnet::internal::FodderElement> >&)
968
969
    template <class T>
970
    T *clone(T *ast)
971
38.2M
    {
972
38.2M
        auto r = new T(*ast);
973
38.2M
        allocated.push_back(r);
974
38.2M
        return r;
975
38.2M
    }
jsonnet::internal::Apply* jsonnet::internal::Allocator::clone<jsonnet::internal::Apply>(jsonnet::internal::Apply*)
Line
Count
Source
971
1.23M
    {
972
1.23M
        auto r = new T(*ast);
973
1.23M
        allocated.push_back(r);
974
1.23M
        return r;
975
1.23M
    }
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
937k
    {
972
937k
        auto r = new T(*ast);
973
937k
        allocated.push_back(r);
974
937k
        return r;
975
937k
    }
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
3.05M
    {
972
3.05M
        auto r = new T(*ast);
973
3.05M
        allocated.push_back(r);
974
3.05M
        return r;
975
3.05M
    }
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.79M
    {
972
1.79M
        auto r = new T(*ast);
973
1.79M
        allocated.push_back(r);
974
1.79M
        return r;
975
1.79M
    }
jsonnet::internal::DesugaredObject* jsonnet::internal::Allocator::clone<jsonnet::internal::DesugaredObject>(jsonnet::internal::DesugaredObject*)
Line
Count
Source
971
2.97M
    {
972
2.97M
        auto r = new T(*ast);
973
2.97M
        allocated.push_back(r);
974
2.97M
        return r;
975
2.97M
    }
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
304k
    {
972
304k
        auto r = new T(*ast);
973
304k
        allocated.push_back(r);
974
304k
        return r;
975
304k
    }
jsonnet::internal::Function* jsonnet::internal::Allocator::clone<jsonnet::internal::Function>(jsonnet::internal::Function*)
Line
Count
Source
971
284k
    {
972
284k
        auto r = new T(*ast);
973
284k
        allocated.push_back(r);
974
284k
        return r;
975
284k
    }
jsonnet::internal::Import* jsonnet::internal::Allocator::clone<jsonnet::internal::Import>(jsonnet::internal::Import*)
Line
Count
Source
971
2.83k
    {
972
2.83k
        auto r = new T(*ast);
973
2.83k
        allocated.push_back(r);
974
2.83k
        return r;
975
2.83k
    }
jsonnet::internal::Importstr* jsonnet::internal::Allocator::clone<jsonnet::internal::Importstr>(jsonnet::internal::Importstr*)
Line
Count
Source
971
7.52k
    {
972
7.52k
        auto r = new T(*ast);
973
7.52k
        allocated.push_back(r);
974
7.52k
        return r;
975
7.52k
    }
jsonnet::internal::Importbin* jsonnet::internal::Allocator::clone<jsonnet::internal::Importbin>(jsonnet::internal::Importbin*)
Line
Count
Source
971
2.60k
    {
972
2.60k
        auto r = new T(*ast);
973
2.60k
        allocated.push_back(r);
974
2.60k
        return r;
975
2.60k
    }
jsonnet::internal::Index* jsonnet::internal::Allocator::clone<jsonnet::internal::Index>(jsonnet::internal::Index*)
Line
Count
Source
971
1.36M
    {
972
1.36M
        auto r = new T(*ast);
973
1.36M
        allocated.push_back(r);
974
1.36M
        return r;
975
1.36M
    }
jsonnet::internal::InSuper* jsonnet::internal::Allocator::clone<jsonnet::internal::InSuper>(jsonnet::internal::InSuper*)
Line
Count
Source
971
804k
    {
972
804k
        auto r = new T(*ast);
973
804k
        allocated.push_back(r);
974
804k
        return r;
975
804k
    }
jsonnet::internal::LiteralBoolean* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralBoolean>(jsonnet::internal::LiteralBoolean*)
Line
Count
Source
971
155k
    {
972
155k
        auto r = new T(*ast);
973
155k
        allocated.push_back(r);
974
155k
        return r;
975
155k
    }
jsonnet::internal::LiteralNull* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNull>(jsonnet::internal::LiteralNull*)
Line
Count
Source
971
126k
    {
972
126k
        auto r = new T(*ast);
973
126k
        allocated.push_back(r);
974
126k
        return r;
975
126k
    }
jsonnet::internal::LiteralNumber* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralNumber>(jsonnet::internal::LiteralNumber*)
Line
Count
Source
971
2.02M
    {
972
2.02M
        auto r = new T(*ast);
973
2.02M
        allocated.push_back(r);
974
2.02M
        return r;
975
2.02M
    }
jsonnet::internal::LiteralString* jsonnet::internal::Allocator::clone<jsonnet::internal::LiteralString>(jsonnet::internal::LiteralString*)
Line
Count
Source
971
5.81M
    {
972
5.81M
        auto r = new T(*ast);
973
5.81M
        allocated.push_back(r);
974
5.81M
        return r;
975
5.81M
    }
jsonnet::internal::Local* jsonnet::internal::Allocator::clone<jsonnet::internal::Local>(jsonnet::internal::Local*)
Line
Count
Source
971
826k
    {
972
826k
        auto r = new T(*ast);
973
826k
        allocated.push_back(r);
974
826k
        return r;
975
826k
    }
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
85.5k
    {
972
85.5k
        auto r = new T(*ast);
973
85.5k
        allocated.push_back(r);
974
85.5k
        return r;
975
85.5k
    }
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
42.4k
    {
972
42.4k
        auto r = new T(*ast);
973
42.4k
        allocated.push_back(r);
974
42.4k
        return r;
975
42.4k
    }
jsonnet::internal::SuperIndex* jsonnet::internal::Allocator::clone<jsonnet::internal::SuperIndex>(jsonnet::internal::SuperIndex*)
Line
Count
Source
971
815k
    {
972
815k
        auto r = new T(*ast);
973
815k
        allocated.push_back(r);
974
815k
        return r;
975
815k
    }
jsonnet::internal::Unary* jsonnet::internal::Allocator::clone<jsonnet::internal::Unary>(jsonnet::internal::Unary*)
Line
Count
Source
971
5.90M
    {
972
5.90M
        auto r = new T(*ast);
973
5.90M
        allocated.push_back(r);
974
5.90M
        return r;
975
5.90M
    }
jsonnet::internal::Var* jsonnet::internal::Allocator::clone<jsonnet::internal::Var>(jsonnet::internal::Var*)
Line
Count
Source
971
9.67M
    {
972
9.67M
        auto r = new T(*ast);
973
9.67M
        allocated.push_back(r);
974
9.67M
        return r;
975
9.67M
    }
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
167M
    {
982
167M
        auto it = internedIdentifiers.find(name);
983
167M
        if (it != internedIdentifiers.end()) {
984
160M
            return it->second;
985
160M
        }
986
6.48M
        auto r = new Identifier(name);
987
6.48M
        internedIdentifiers[name] = r;
988
6.48M
        return r;
989
167M
    }
990
    ~Allocator()
991
22.1k
    {
992
311M
        for (auto x : allocated) {
993
311M
            delete x;
994
311M
        }
995
22.1k
        allocated.clear();
996
6.48M
        for (const auto &x : internedIdentifiers) {
997
6.48M
            delete x.second;
998
6.48M
        }
999
22.1k
        internedIdentifiers.clear();
1000
22.1k
    }
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