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