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