Coverage Report

Created: 2026-04-12 06:32

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