@angular/compiler 17.0.0-rc.0 → 17.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/ml_parser/ast.mjs +3 -2
- package/esm2022/src/ml_parser/html_whitespaces.mjs +2 -2
- package/esm2022/src/ml_parser/icu_ast_expander.mjs +2 -2
- package/esm2022/src/ml_parser/lexer.mjs +2 -13
- package/esm2022/src/ml_parser/parser.mjs +3 -3
- package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
- package/esm2022/src/render3/partial/directive.mjs +1 -1
- package/esm2022/src/render3/partial/factory.mjs +1 -1
- package/esm2022/src/render3/partial/injectable.mjs +1 -1
- package/esm2022/src/render3/partial/injector.mjs +1 -1
- package/esm2022/src/render3/partial/ng_module.mjs +1 -1
- package/esm2022/src/render3/partial/pipe.mjs +1 -1
- package/esm2022/src/render3/r3_ast.mjs +57 -62
- package/esm2022/src/render3/r3_control_flow.mjs +18 -14
- package/esm2022/src/render3/r3_deferred_blocks.mjs +7 -8
- package/esm2022/src/render3/r3_deferred_triggers.mjs +46 -27
- package/esm2022/src/render3/r3_template_transform.mjs +2 -2
- package/esm2022/src/render3/view/t2_api.mjs +1 -1
- package/esm2022/src/render3/view/t2_binder.mjs +22 -10
- package/esm2022/src/render3/view/template.mjs +54 -5
- package/esm2022/src/template/pipeline/ir/index.mjs +2 -1
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +124 -38
- package/esm2022/src/template/pipeline/ir/src/expression.mjs +127 -64
- package/esm2022/src/template/pipeline/ir/src/handle.mjs +13 -0
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +71 -50
- package/esm2022/src/template/pipeline/ir/src/ops/shared.mjs +3 -2
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +19 -8
- package/esm2022/src/template/pipeline/ir/src/traits.mjs +1 -32
- package/esm2022/src/template/pipeline/ir/src/variable.mjs +1 -1
- package/esm2022/src/template/pipeline/src/compilation.mjs +6 -1
- package/esm2022/src/template/pipeline/src/conversion.mjs +2 -2
- package/esm2022/src/template/pipeline/src/emit.mjs +118 -99
- package/esm2022/src/template/pipeline/src/ingest.mjs +204 -50
- package/esm2022/src/template/pipeline/src/instruction.mjs +57 -12
- package/esm2022/src/template/pipeline/src/phases/any_cast.mjs +4 -3
- package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/chaining.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/collapse_singleton_interpolations.mjs +31 -0
- package/esm2022/src/template/pipeline/src/phases/conditionals.mjs +9 -6
- package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/defer_configs.mjs +30 -0
- package/esm2022/src/template/pipeline/src/phases/defer_resolve_targets.mjs +93 -0
- package/esm2022/src/template/pipeline/src/phases/empty_elements.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/expand_safe_reads.mjs +7 -4
- package/esm2022/src/template/pipeline/src/phases/format_i18n_params.mjs +114 -0
- package/esm2022/src/template/pipeline/src/phases/generate_advance.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/generate_projection_def.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +13 -6
- package/esm2022/src/template/pipeline/src/phases/has_const_expression_collection.mjs +28 -0
- package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +8 -2
- package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +129 -7
- package/esm2022/src/template/pipeline/src/phases/i18n_message_extraction.mjs +4 -105
- package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +9 -6
- package/esm2022/src/template/pipeline/src/phases/icu_extraction.mjs +8 -5
- package/esm2022/src/template/pipeline/src/phases/local_refs.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/namespace.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/naming.mjs +27 -11
- package/esm2022/src/template/pipeline/src/phases/next_context_merging.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/ng_container.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/nonbindable.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/nullish_coalescing.mjs +8 -2
- package/esm2022/src/template/pipeline/src/phases/ordering.mjs +46 -32
- package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +9 -9
- package/esm2022/src/template/pipeline/src/phases/pipe_creation.mjs +23 -6
- package/esm2022/src/template/pipeline/src/phases/pipe_variadic.mjs +7 -3
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_placeholders.mjs +61 -0
- package/esm2022/src/template/pipeline/src/phases/pure_function_extraction.mjs +3 -2
- package/esm2022/src/template/pipeline/src/phases/pure_literal_structures.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +77 -26
- package/esm2022/src/template/pipeline/src/phases/remove_empty_bindings.mjs +5 -2
- package/esm2022/src/template/pipeline/src/phases/repeater_derived_vars.mjs +45 -0
- package/esm2022/src/template/pipeline/src/phases/resolve_contexts.mjs +7 -3
- package/esm2022/src/template/pipeline/src/phases/resolve_dollar_event.mjs +5 -5
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +109 -0
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +58 -0
- package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +4 -3
- package/esm2022/src/template/pipeline/src/phases/resolve_sanitizers.mjs +5 -5
- package/esm2022/src/template/pipeline/src/phases/save_restore_view.mjs +16 -11
- package/esm2022/src/template/pipeline/src/phases/slot_allocation.mjs +5 -30
- package/esm2022/src/template/pipeline/src/phases/style_binding_specialization.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/track_fn_generation.mjs +49 -0
- package/esm2022/src/template/pipeline/src/phases/track_fn_optimization.mjs +81 -0
- package/esm2022/src/template/pipeline/src/phases/track_variables.mjs +36 -0
- package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +37 -4
- package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +47 -7
- package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +2 -2
- package/esm2022/src/template/pipeline/src/util/elements.mjs +6 -6
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +2004 -1048
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +45 -60
- package/package.json +3 -3
- package/esm2022/src/template/pipeline/src/phases/align_pipe_variadic_var_offset.mjs +0 -42
- package/esm2022/src/template/pipeline/src/phases/has_const_trait_collection.mjs +0 -34
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_placeholders.mjs +0 -288
|
@@ -6,7 +6,14 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
import * as ir from '../../ir';
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* This phase generates pipe creation instructions. We do this based on the pipe bindings found in
|
|
11
|
+
* the update block, in the order we see them.
|
|
12
|
+
*
|
|
13
|
+
* When not in compatibility mode, we can simply group all these creation instructions together, to
|
|
14
|
+
* maximize chaining opportunities.
|
|
15
|
+
*/
|
|
16
|
+
export function createPipes(job) {
|
|
10
17
|
for (const unit of job.units) {
|
|
11
18
|
processPipeBindingsInView(unit);
|
|
12
19
|
}
|
|
@@ -23,10 +30,20 @@ function processPipeBindingsInView(unit) {
|
|
|
23
30
|
if (flags & ir.VisitorContextFlag.InChildOperation) {
|
|
24
31
|
throw new Error(`AssertionError: pipe bindings should not appear in child expressions`);
|
|
25
32
|
}
|
|
26
|
-
if (
|
|
27
|
-
|
|
33
|
+
if (unit.job.compatibility) {
|
|
34
|
+
// TODO: We can delete this cast and check once compatibility mode is removed.
|
|
35
|
+
const slotHandle = updateOp.target;
|
|
36
|
+
if (slotHandle == undefined) {
|
|
37
|
+
throw new Error(`AssertionError: expected slot handle to be assigned for pipe creation`);
|
|
38
|
+
}
|
|
39
|
+
addPipeToCreationBlock(unit, updateOp.target, expr);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// When not in compatibility mode, we just add the pipe to the end of the create block. This
|
|
43
|
+
// is not only simpler and faster, but allows more chaining opportunities for other
|
|
44
|
+
// instructions.
|
|
45
|
+
unit.create.push(ir.createPipeOp(expr.target, expr.targetSlot, expr.name));
|
|
28
46
|
}
|
|
29
|
-
addPipeToCreationBlock(unit, updateOp.target, expr);
|
|
30
47
|
});
|
|
31
48
|
}
|
|
32
49
|
}
|
|
@@ -46,7 +63,7 @@ function addPipeToCreationBlock(unit, afterTargetXref, binding) {
|
|
|
46
63
|
while (op.next.kind === ir.OpKind.Pipe) {
|
|
47
64
|
op = op.next;
|
|
48
65
|
}
|
|
49
|
-
const pipe = ir.createPipeOp(binding.target, binding.name);
|
|
66
|
+
const pipe = ir.createPipeOp(binding.target, binding.targetSlot, binding.name);
|
|
50
67
|
ir.OpList.insertBefore(pipe, op.next);
|
|
51
68
|
// This completes adding the pipe to the creation block.
|
|
52
69
|
return;
|
|
@@ -54,4 +71,4 @@ function addPipeToCreationBlock(unit, afterTargetXref, binding) {
|
|
|
54
71
|
// At this point, we've failed to add the pipe to the creation block.
|
|
55
72
|
throw new Error(`AssertionError: unable to find insertion point for pipe ${binding.name}`);
|
|
56
73
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZV9jcmVhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL3BpcGVfY3JlYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFtQjtJQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDNUIseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakM7QUFDSCxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FBQyxJQUFxQjtJQUN0RCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDbEMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUIsT0FBTzthQUNSO1lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFO2dCQUMvQyxPQUFPO2FBQ1I7WUFFRCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQzthQUN6RjtZQUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUU7Z0JBQzFCLDhFQUE4RTtnQkFDOUUsTUFBTSxVQUFVLEdBQUksUUFBZ0IsQ0FBQyxNQUFNLENBQUM7Z0JBQzVDLElBQUksVUFBVSxJQUFJLFNBQVMsRUFBRTtvQkFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO2lCQUMxRjtnQkFDRCxzQkFBc0IsQ0FBQyxJQUFJLEVBQUcsUUFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDOUQ7aUJBQU07Z0JBQ0wsNEZBQTRGO2dCQUM1RixtRkFBbUY7Z0JBQ25GLGdCQUFnQjtnQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDNUU7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQzNCLElBQXFCLEVBQUUsZUFBMEIsRUFBRSxPQUEyQjtJQUNoRixvRUFBb0U7SUFDcEUsK0ZBQStGO0lBQy9GLDZCQUE2QjtJQUM3QixLQUFLLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSyxFQUFFO1FBQ2xGLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQWMsRUFBRSxDQUFDLEVBQUU7WUFDN0MsU0FBUztTQUNWO1FBRUQsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUMvQixTQUFTO1NBQ1Y7UUFFRCwrRkFBK0Y7UUFDL0Ysc0JBQXNCO1FBQ3RCLE9BQU8sRUFBRSxDQUFDLElBQUssQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDdkMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFLLENBQUM7U0FDZjtRQUVELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQWdCLENBQUM7UUFDOUYsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFLLENBQUMsQ0FBQztRQUV2Qyx3REFBd0Q7UUFDeEQsT0FBTztLQUNSO0lBRUQscUVBQXFFO0lBQ3JFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHR5cGUge0NvbXBpbGF0aW9uSm9iLCBDb21waWxhdGlvblVuaXR9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuLyoqXG4gKiBUaGlzIHBoYXNlIGdlbmVyYXRlcyBwaXBlIGNyZWF0aW9uIGluc3RydWN0aW9ucy4gV2UgZG8gdGhpcyBiYXNlZCBvbiB0aGUgcGlwZSBiaW5kaW5ncyBmb3VuZCBpblxuICogdGhlIHVwZGF0ZSBibG9jaywgaW4gdGhlIG9yZGVyIHdlIHNlZSB0aGVtLlxuICpcbiAqIFdoZW4gbm90IGluIGNvbXBhdGliaWxpdHkgbW9kZSwgd2UgY2FuIHNpbXBseSBncm91cCBhbGwgdGhlc2UgY3JlYXRpb24gaW5zdHJ1Y3Rpb25zIHRvZ2V0aGVyLCB0b1xuICogbWF4aW1pemUgY2hhaW5pbmcgb3Bwb3J0dW5pdGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBpcGVzKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIHByb2Nlc3NQaXBlQmluZGluZ3NJblZpZXcodW5pdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1BpcGVCaW5kaW5nc0luVmlldyh1bml0OiBDb21waWxhdGlvblVuaXQpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1cGRhdGVPcCBvZiB1bml0LnVwZGF0ZSkge1xuICAgIGlyLnZpc2l0RXhwcmVzc2lvbnNJbk9wKHVwZGF0ZU9wLCAoZXhwciwgZmxhZ3MpID0+IHtcbiAgICAgIGlmICghaXIuaXNJckV4cHJlc3Npb24oZXhwcikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXhwci5raW5kICE9PSBpci5FeHByZXNzaW9uS2luZC5QaXBlQmluZGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChmbGFncyAmIGlyLlZpc2l0b3JDb250ZXh0RmxhZy5JbkNoaWxkT3BlcmF0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IHBpcGUgYmluZGluZ3Mgc2hvdWxkIG5vdCBhcHBlYXIgaW4gY2hpbGQgZXhwcmVzc2lvbnNgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVuaXQuam9iLmNvbXBhdGliaWxpdHkpIHtcbiAgICAgICAgLy8gVE9ETzogV2UgY2FuIGRlbGV0ZSB0aGlzIGNhc3QgYW5kIGNoZWNrIG9uY2UgY29tcGF0aWJpbGl0eSBtb2RlIGlzIHJlbW92ZWQuXG4gICAgICAgIGNvbnN0IHNsb3RIYW5kbGUgPSAodXBkYXRlT3AgYXMgYW55KS50YXJnZXQ7XG4gICAgICAgIGlmIChzbG90SGFuZGxlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IGV4cGVjdGVkIHNsb3QgaGFuZGxlIHRvIGJlIGFzc2lnbmVkIGZvciBwaXBlIGNyZWF0aW9uYCk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkUGlwZVRvQ3JlYXRpb25CbG9jayh1bml0LCAodXBkYXRlT3AgYXMgYW55KS50YXJnZXQsIGV4cHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2hlbiBub3QgaW4gY29tcGF0aWJpbGl0eSBtb2RlLCB3ZSBqdXN0IGFkZCB0aGUgcGlwZSB0byB0aGUgZW5kIG9mIHRoZSBjcmVhdGUgYmxvY2suIFRoaXNcbiAgICAgICAgLy8gaXMgbm90IG9ubHkgc2ltcGxlciBhbmQgZmFzdGVyLCBidXQgYWxsb3dzIG1vcmUgY2hhaW5pbmcgb3Bwb3J0dW5pdGllcyBmb3Igb3RoZXJcbiAgICAgICAgLy8gaW5zdHJ1Y3Rpb25zLlxuICAgICAgICB1bml0LmNyZWF0ZS5wdXNoKGlyLmNyZWF0ZVBpcGVPcChleHByLnRhcmdldCwgZXhwci50YXJnZXRTbG90LCBleHByLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRQaXBlVG9DcmVhdGlvbkJsb2NrKFxuICAgIHVuaXQ6IENvbXBpbGF0aW9uVW5pdCwgYWZ0ZXJUYXJnZXRYcmVmOiBpci5YcmVmSWQsIGJpbmRpbmc6IGlyLlBpcGVCaW5kaW5nRXhwcik6IHZvaWQge1xuICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBwb2ludCB0byBpbnNlcnQgdGhlIFBpcGUgY3JlYXRpb24gb3BlcmF0aW9uLlxuICAvLyBXZSdyZSBsb29raW5nIGZvciBgYWZ0ZXJUYXJnZXRYcmVmYCAoYW5kIGFsc28gd2FudCB0byBpbnNlcnQgYWZ0ZXIgYW55IG90aGVyIHBpcGUgb3BlcmF0aW9uc1xuICAvLyB3aGljaCBtaWdodCBiZSBiZXlvbmQgaXQpLlxuICBmb3IgKGxldCBvcCA9IHVuaXQuY3JlYXRlLmhlYWQubmV4dCE7IG9wLmtpbmQgIT09IGlyLk9wS2luZC5MaXN0RW5kOyBvcCA9IG9wLm5leHQhKSB7XG4gICAgaWYgKCFpci5oYXNDb25zdW1lc1Nsb3RUcmFpdDxpci5DcmVhdGVPcD4ob3ApKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAob3AueHJlZiAhPT0gYWZ0ZXJUYXJnZXRYcmVmKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBXZSd2ZSBmb3VuZCBhIHRlbnRhdGl2ZSBpbnNlcnRpb24gcG9pbnQ7IGhvd2V2ZXIsIHdlIGFsc28gd2FudCB0byBza2lwIHBhc3QgYW55IF9vdGhlcl8gcGlwZVxuICAgIC8vIG9wZXJhdGlvbnMgcHJlc2VudC5cbiAgICB3aGlsZSAob3AubmV4dCEua2luZCA9PT0gaXIuT3BLaW5kLlBpcGUpIHtcbiAgICAgIG9wID0gb3AubmV4dCE7XG4gICAgfVxuXG4gICAgY29uc3QgcGlwZSA9IGlyLmNyZWF0ZVBpcGVPcChiaW5kaW5nLnRhcmdldCwgYmluZGluZy50YXJnZXRTbG90LCBiaW5kaW5nLm5hbWUpIGFzIGlyLkNyZWF0ZU9wO1xuICAgIGlyLk9wTGlzdC5pbnNlcnRCZWZvcmUocGlwZSwgb3AubmV4dCEpO1xuXG4gICAgLy8gVGhpcyBjb21wbGV0ZXMgYWRkaW5nIHRoZSBwaXBlIHRvIHRoZSBjcmVhdGlvbiBibG9jay5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50LCB3ZSd2ZSBmYWlsZWQgdG8gYWRkIHRoZSBwaXBlIHRvIHRoZSBjcmVhdGlvbiBibG9jay5cbiAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb25FcnJvcjogdW5hYmxlIHRvIGZpbmQgaW5zZXJ0aW9uIHBvaW50IGZvciBwaXBlICR7YmluZGluZy5uYW1lfWApO1xufVxuIl19
|
|
@@ -7,7 +7,11 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import * as o from '../../../../output/output_ast';
|
|
9
9
|
import * as ir from '../../ir';
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Pipes that accept more than 4 arguments are variadic, and are handled with a different runtime
|
|
12
|
+
* instruction.
|
|
13
|
+
*/
|
|
14
|
+
export function createVariadicPipes(job) {
|
|
11
15
|
for (const unit of job.units) {
|
|
12
16
|
for (const op of unit.update) {
|
|
13
17
|
ir.transformExpressionsInOp(op, expr => {
|
|
@@ -18,9 +22,9 @@ export function phasePipeVariadic(job) {
|
|
|
18
22
|
if (expr.args.length <= 4) {
|
|
19
23
|
return expr;
|
|
20
24
|
}
|
|
21
|
-
return new ir.PipeBindingVariadicExpr(expr.target, expr.name, o.literalArr(expr.args), expr.args.length);
|
|
25
|
+
return new ir.PipeBindingVariadicExpr(expr.target, expr.targetSlot, expr.name, o.literalArr(expr.args), expr.args.length);
|
|
22
26
|
}, ir.VisitorContextFlag.None);
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZV92YXJpYWRpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL3BpcGVfdmFyaWFkaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLENBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkvQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBbUI7SUFDckQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1FBQzVCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM1QixFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUN6QyxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFFRCx5REFBeUQ7Z0JBQ3pELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO29CQUN6QixPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFFRCxPQUFPLElBQUksRUFBRSxDQUFDLHVCQUF1QixDQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFGLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5cbmltcG9ydCB0eXBlIHtDb21waWxhdGlvbkpvYiwgQ29tcG9uZW50Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuLyoqXG4gKiBQaXBlcyB0aGF0IGFjY2VwdCBtb3JlIHRoYW4gNCBhcmd1bWVudHMgYXJlIHZhcmlhZGljLCBhbmQgYXJlIGhhbmRsZWQgd2l0aCBhIGRpZmZlcmVudCBydW50aW1lXG4gKiBpbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZhcmlhZGljUGlwZXMoam9iOiBDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LnVwZGF0ZSkge1xuICAgICAgaXIudHJhbnNmb3JtRXhwcmVzc2lvbnNJbk9wKG9wLCBleHByID0+IHtcbiAgICAgICAgaWYgKCEoZXhwciBpbnN0YW5jZW9mIGlyLlBpcGVCaW5kaW5nRXhwcikpIHtcbiAgICAgICAgICByZXR1cm4gZXhwcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBpcGVzIGFyZSB2YXJpYWRpYyBpZiB0aGV5IGhhdmUgbW9yZSB0aGFuIDQgYXJndW1lbnRzLlxuICAgICAgICBpZiAoZXhwci5hcmdzLmxlbmd0aCA8PSA0KSB7XG4gICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IGlyLlBpcGVCaW5kaW5nVmFyaWFkaWNFeHByKFxuICAgICAgICAgICAgZXhwci50YXJnZXQsIGV4cHIudGFyZ2V0U2xvdCwgZXhwci5uYW1lLCBvLmxpdGVyYWxBcnIoZXhwci5hcmdzKSwgZXhwci5hcmdzLmxlbmd0aCk7XG4gICAgICB9LCBpci5WaXNpdG9yQ29udGV4dEZsYWcuTm9uZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -10,7 +10,7 @@ import * as ir from '../../ir';
|
|
|
10
10
|
* Propagate i18n blocks down through child templates that act as placeholders in the root i18n
|
|
11
11
|
* message.
|
|
12
12
|
*/
|
|
13
|
-
export function
|
|
13
|
+
export function propagateI18nBlocks(job) {
|
|
14
14
|
propagateI18nBlocksToTemplates(job.root, 0);
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
@@ -54,4 +54,4 @@ function wrapTemplateWithI18n(unit, parentI18n) {
|
|
|
54
54
|
ir.OpList.insertBefore(ir.createI18nEndOp(id), unit.create.tail);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGFnYXRlX2kxOG5fYmxvY2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvcHJvcGFnYXRlX2kxOG5fYmxvY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUE0QjtJQUM5RCw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsOEJBQThCLENBQUMsSUFBeUIsRUFBRSxnQkFBd0I7SUFDekYsSUFBSSxTQUFTLEdBQXdCLElBQUksQ0FBQztJQUMxQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDNUIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ2YsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVM7Z0JBQ3RCLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3ZFLFNBQVMsR0FBRyxFQUFFLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3JCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFFLENBQUM7Z0JBRWxELHlGQUF5RjtnQkFDekYsa0RBQWtEO2dCQUNsRCxJQUFJLEVBQUUsQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO29CQUNwQyxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7d0JBQ3RCLE1BQU0sS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7cUJBQ2hGO29CQUNELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLG9CQUFvQixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBRUQsa0RBQWtEO2dCQUNsRCw4QkFBOEIsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNsRTtLQUNGO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxJQUF5QixFQUFFLFVBQTBCO0lBQ2pGLCtFQUErRTtJQUMvRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDdkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDakIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JGLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsRTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBvbmVudENvbXBpbGF0aW9uSm9iLCBWaWV3Q29tcGlsYXRpb25Vbml0fSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogUHJvcGFnYXRlIGkxOG4gYmxvY2tzIGRvd24gdGhyb3VnaCBjaGlsZCB0ZW1wbGF0ZXMgdGhhdCBhY3QgYXMgcGxhY2Vob2xkZXJzIGluIHRoZSByb290IGkxOG5cbiAqIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wYWdhdGVJMThuQmxvY2tzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgcHJvcGFnYXRlSTE4bkJsb2Nrc1RvVGVtcGxhdGVzKGpvYi5yb290LCAwKTtcbn1cblxuLyoqXG4gKiBQcm9wYWdhdGVzIGkxOG4gb3BzIGluIHRoZSBnaXZlbiB2aWV3IHRocm91Z2ggdG8gYW55IGNoaWxkIHZpZXdzIHJlY3Vyc2l2ZWx5LlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVJMThuQmxvY2tzVG9UZW1wbGF0ZXModW5pdDogVmlld0NvbXBpbGF0aW9uVW5pdCwgc3ViVGVtcGxhdGVJbmRleDogbnVtYmVyKSB7XG4gIGxldCBpMThuQmxvY2s6IGlyLkkxOG5TdGFydE9wfG51bGwgPSBudWxsO1xuICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICBjYXNlIGlyLk9wS2luZC5JMThuU3RhcnQ6XG4gICAgICAgIG9wLnN1YlRlbXBsYXRlSW5kZXggPSBzdWJUZW1wbGF0ZUluZGV4ID09PSAwID8gbnVsbCA6IHN1YlRlbXBsYXRlSW5kZXg7XG4gICAgICAgIGkxOG5CbG9jayA9IG9wO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgaXIuT3BLaW5kLkkxOG5FbmQ6XG4gICAgICAgIGkxOG5CbG9jayA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBpci5PcEtpbmQuVGVtcGxhdGU6XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlVmlldyA9IHVuaXQuam9iLnZpZXdzLmdldChvcC54cmVmKSE7XG5cbiAgICAgICAgLy8gV2UgZm91bmQgYW4gPG5nLXRlbXBsYXRlPiBpbnNpZGUgYW4gaTE4biBibG9jazsgaW5jcmVtZW50IHRoZSBzdWItdGVtcGxhdGUgY291bnRlciBhbmRcbiAgICAgICAgLy8gd3JhcCB0aGUgdGVtcGxhdGUncyB2aWV3IGluIGEgY2hpbGQgaTE4biBibG9jay5cbiAgICAgICAgaWYgKG9wLmkxOG5QbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGkxOG5CbG9jayA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRlbXBsYXRlIHdpdGggaTE4biBwbGFjZWhvbGRlciB0byBiZSBpbiBhbiBpMThuIGJsb2NrLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdWJUZW1wbGF0ZUluZGV4Kys7XG4gICAgICAgICAgd3JhcFRlbXBsYXRlV2l0aEkxOG4odGVtcGxhdGVWaWV3LCBpMThuQmxvY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29udGludWUgdHJhdmVyc2luZyBpbnNpZGUgdGhlIHRlbXBsYXRlJ3Mgdmlldy5cbiAgICAgICAgcHJvcGFnYXRlSTE4bkJsb2Nrc1RvVGVtcGxhdGVzKHRlbXBsYXRlVmlldywgc3ViVGVtcGxhdGVJbmRleCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSB0ZW1wbGF0ZSB2aWV3IHdpdGggaTE4biBzdGFydCBhbmQgZW5kIG9wcy5cbiAqL1xuZnVuY3Rpb24gd3JhcFRlbXBsYXRlV2l0aEkxOG4odW5pdDogVmlld0NvbXBpbGF0aW9uVW5pdCwgcGFyZW50STE4bjogaXIuSTE4blN0YXJ0T3ApIHtcbiAgLy8gT25seSBhZGQgaTE4biBvcHMgaWYgdGhleSBoYXZlIG5vdCBhbHJlYWR5IGJlZW4gcHJvcGFnYXRlZCB0byB0aGlzIHRlbXBsYXRlLlxuICBpZiAodW5pdC5jcmVhdGUuaGVhZC5uZXh0Py5raW5kICE9PSBpci5PcEtpbmQuSTE4blN0YXJ0KSB7XG4gICAgY29uc3QgaWQgPSB1bml0LmpvYi5hbGxvY2F0ZVhyZWZJZCgpO1xuICAgIGlyLk9wTGlzdC5pbnNlcnRBZnRlcihcbiAgICAgICAgaXIuY3JlYXRlSTE4blN0YXJ0T3AoaWQsIHBhcmVudEkxOG4ubWVzc2FnZSwgcGFyZW50STE4bi5yb290KSwgdW5pdC5jcmVhdGUuaGVhZCk7XG4gICAgaXIuT3BMaXN0Lmluc2VydEJlZm9yZShpci5jcmVhdGVJMThuRW5kT3AoaWQpLCB1bml0LmNyZWF0ZS50YWlsKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import * as ir from '../../ir';
|
|
9
|
+
/**
|
|
10
|
+
* Propagate extractd message placeholders up to their root extracted message op.
|
|
11
|
+
*/
|
|
12
|
+
export function propogateI18nPlaceholders(job) {
|
|
13
|
+
// Record all of the i18n and extracted message ops for use later.
|
|
14
|
+
const i18nOps = new Map();
|
|
15
|
+
const extractedMessageOps = new Map();
|
|
16
|
+
for (const unit of job.units) {
|
|
17
|
+
for (const op of unit.create) {
|
|
18
|
+
switch (op.kind) {
|
|
19
|
+
case ir.OpKind.I18nStart:
|
|
20
|
+
i18nOps.set(op.xref, op);
|
|
21
|
+
break;
|
|
22
|
+
case ir.OpKind.ExtractedMessage:
|
|
23
|
+
extractedMessageOps.set(op.owner, op);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// For each non-root message, merge its params into the root message's params.
|
|
29
|
+
for (const [xref, childExtractedMessageOp] of extractedMessageOps) {
|
|
30
|
+
if (!childExtractedMessageOp.isRoot) {
|
|
31
|
+
const i18nOp = i18nOps.get(xref);
|
|
32
|
+
if (i18nOp === undefined) {
|
|
33
|
+
throw Error('Could not find owner i18n block for extracted message.');
|
|
34
|
+
}
|
|
35
|
+
const rootExtractedMessageOp = extractedMessageOps.get(i18nOp.root);
|
|
36
|
+
if (rootExtractedMessageOp === undefined) {
|
|
37
|
+
throw Error('Could not find extracted message op for root i18n block.');
|
|
38
|
+
}
|
|
39
|
+
mergeParams(rootExtractedMessageOp.params, childExtractedMessageOp.params);
|
|
40
|
+
mergeParams(rootExtractedMessageOp.postprocessingParams, childExtractedMessageOp.postprocessingParams);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Merges the params in the `from` map to into the `to` map.
|
|
46
|
+
*/
|
|
47
|
+
function mergeParams(to, from) {
|
|
48
|
+
for (const [placeholder, fromValues] of from) {
|
|
49
|
+
const toValues = to.get(placeholder) || [];
|
|
50
|
+
// TODO(mmalerba): Child element close tag params should be prepended to maintain the same order
|
|
51
|
+
// as TemplateDefinitionBuilder. Can be cleaned up when compatibility is no longer required.
|
|
52
|
+
const flags = fromValues[0].flags;
|
|
53
|
+
if ((flags & ir.I18nParamValueFlags.CloseTag) && !(flags & ir.I18nParamValueFlags.OpenTag)) {
|
|
54
|
+
to.set(placeholder, [...fromValues, ...toValues]);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
to.set(placeholder, [...toValues, ...fromValues]);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGFnYXRlX2kxOG5fcGxhY2Vob2xkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvcHJvcGFnYXRlX2kxOG5fcGxhY2Vob2xkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEdBQTRCO0lBQ3BFLGtFQUFrRTtJQUNsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUNyRCxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFvQyxDQUFDO0lBQ3hFLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtRQUM1QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3pCLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtvQkFDN0IsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLE1BQU07YUFDVDtTQUNGO0tBQ0Y7SUFFRCw4RUFBOEU7SUFDOUUsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDLElBQUksbUJBQW1CLEVBQUU7UUFDakUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRTtZQUNuQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQkFDeEIsTUFBTSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQzthQUN2RTtZQUNELE1BQU0sc0JBQXNCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxJQUFJLHNCQUFzQixLQUFLLFNBQVMsRUFBRTtnQkFDeEMsTUFBTSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQzthQUN6RTtZQUNELFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0UsV0FBVyxDQUNQLHNCQUFzQixDQUFDLG9CQUFvQixFQUMzQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ25EO0tBQ0Y7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxFQUFvQyxFQUFFLElBQXNDO0lBQy9GLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDNUMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsZ0dBQWdHO1FBQ2hHLDRGQUE0RjtRQUM1RixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFFLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFGLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ25EO2FBQU07WUFDTCxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNuRDtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBvbmVudENvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogUHJvcGFnYXRlIGV4dHJhY3RkIG1lc3NhZ2UgcGxhY2Vob2xkZXJzIHVwIHRvIHRoZWlyIHJvb3QgZXh0cmFjdGVkIG1lc3NhZ2Ugb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wb2dhdGVJMThuUGxhY2Vob2xkZXJzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpIHtcbiAgLy8gUmVjb3JkIGFsbCBvZiB0aGUgaTE4biBhbmQgZXh0cmFjdGVkIG1lc3NhZ2Ugb3BzIGZvciB1c2UgbGF0ZXIuXG4gIGNvbnN0IGkxOG5PcHMgPSBuZXcgTWFwPGlyLlhyZWZJZCwgaXIuSTE4blN0YXJ0T3A+KCk7XG4gIGNvbnN0IGV4dHJhY3RlZE1lc3NhZ2VPcHMgPSBuZXcgTWFwPGlyLlhyZWZJZCwgaXIuRXh0cmFjdGVkTWVzc2FnZU9wPigpO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkkxOG5TdGFydDpcbiAgICAgICAgICBpMThuT3BzLnNldChvcC54cmVmLCBvcCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkV4dHJhY3RlZE1lc3NhZ2U6XG4gICAgICAgICAgZXh0cmFjdGVkTWVzc2FnZU9wcy5zZXQob3Aub3duZXIsIG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGb3IgZWFjaCBub24tcm9vdCBtZXNzYWdlLCBtZXJnZSBpdHMgcGFyYW1zIGludG8gdGhlIHJvb3QgbWVzc2FnZSdzIHBhcmFtcy5cbiAgZm9yIChjb25zdCBbeHJlZiwgY2hpbGRFeHRyYWN0ZWRNZXNzYWdlT3BdIG9mIGV4dHJhY3RlZE1lc3NhZ2VPcHMpIHtcbiAgICBpZiAoIWNoaWxkRXh0cmFjdGVkTWVzc2FnZU9wLmlzUm9vdCkge1xuICAgICAgY29uc3QgaTE4bk9wID0gaTE4bk9wcy5nZXQoeHJlZik7XG4gICAgICBpZiAoaTE4bk9wID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIG93bmVyIGkxOG4gYmxvY2sgZm9yIGV4dHJhY3RlZCBtZXNzYWdlLicpO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9vdEV4dHJhY3RlZE1lc3NhZ2VPcCA9IGV4dHJhY3RlZE1lc3NhZ2VPcHMuZ2V0KGkxOG5PcC5yb290KTtcbiAgICAgIGlmIChyb290RXh0cmFjdGVkTWVzc2FnZU9wID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGV4dHJhY3RlZCBtZXNzYWdlIG9wIGZvciByb290IGkxOG4gYmxvY2suJyk7XG4gICAgICB9XG4gICAgICBtZXJnZVBhcmFtcyhyb290RXh0cmFjdGVkTWVzc2FnZU9wLnBhcmFtcywgY2hpbGRFeHRyYWN0ZWRNZXNzYWdlT3AucGFyYW1zKTtcbiAgICAgIG1lcmdlUGFyYW1zKFxuICAgICAgICAgIHJvb3RFeHRyYWN0ZWRNZXNzYWdlT3AucG9zdHByb2Nlc3NpbmdQYXJhbXMsXG4gICAgICAgICAgY2hpbGRFeHRyYWN0ZWRNZXNzYWdlT3AucG9zdHByb2Nlc3NpbmdQYXJhbXMpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlcyB0aGUgcGFyYW1zIGluIHRoZSBgZnJvbWAgbWFwIHRvIGludG8gdGhlIGB0b2AgbWFwLlxuICovXG5mdW5jdGlvbiBtZXJnZVBhcmFtcyh0bzogTWFwPHN0cmluZywgaXIuSTE4blBhcmFtVmFsdWVbXT4sIGZyb206IE1hcDxzdHJpbmcsIGlyLkkxOG5QYXJhbVZhbHVlW10+KSB7XG4gIGZvciAoY29uc3QgW3BsYWNlaG9sZGVyLCBmcm9tVmFsdWVzXSBvZiBmcm9tKSB7XG4gICAgY29uc3QgdG9WYWx1ZXMgPSB0by5nZXQocGxhY2Vob2xkZXIpIHx8IFtdO1xuICAgIC8vIFRPRE8obW1hbGVyYmEpOiBDaGlsZCBlbGVtZW50IGNsb3NlIHRhZyBwYXJhbXMgc2hvdWxkIGJlIHByZXBlbmRlZCB0byBtYWludGFpbiB0aGUgc2FtZSBvcmRlclxuICAgIC8vIGFzIFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXIuIENhbiBiZSBjbGVhbmVkIHVwIHdoZW4gY29tcGF0aWJpbGl0eSBpcyBubyBsb25nZXIgcmVxdWlyZWQuXG4gICAgY29uc3QgZmxhZ3MgPSBmcm9tVmFsdWVzWzBdIS5mbGFncztcbiAgICBpZiAoKGZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZykgJiYgIShmbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuT3BlblRhZykpIHtcbiAgICAgIHRvLnNldChwbGFjZWhvbGRlciwgWy4uLmZyb21WYWx1ZXMsIC4uLnRvVmFsdWVzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvLnNldChwbGFjZWhvbGRlciwgWy4uLnRvVmFsdWVzLCAuLi5mcm9tVmFsdWVzXSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { GenericKeyFn } from '../../../../constant_pool';
|
|
9
9
|
import * as o from '../../../../output/output_ast';
|
|
10
10
|
import * as ir from '../../ir';
|
|
11
|
-
export function
|
|
11
|
+
export function extractPureFunctions(job) {
|
|
12
12
|
for (const view of job.units) {
|
|
13
13
|
for (const op of view.ops()) {
|
|
14
14
|
ir.visitExpressionsInOp(op, expr => {
|
|
@@ -35,6 +35,7 @@ class PureFunctionConstant extends GenericKeyFn {
|
|
|
35
35
|
return super.keyOf(expr);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
// TODO: Use the new pool method `getSharedFunctionReference`
|
|
38
39
|
toSharedConstantDeclaration(declName, keyExpr) {
|
|
39
40
|
const fnParams = [];
|
|
40
41
|
for (let idx = 0; idx < this.numArgs; idx++) {
|
|
@@ -51,4 +52,4 @@ class PureFunctionConstant extends GenericKeyFn {
|
|
|
51
52
|
return new o.DeclareVarStmt(declName, new o.ArrowFunctionExpr(fnParams, returnExpr), undefined, o.StmtModifier.Final);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZV9mdW5jdGlvbl9leHRyYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvcHVyZV9mdW5jdGlvbl9leHRyYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxZQUFZLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFDakYsT0FBTyxLQUFLLENBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkvQixNQUFNLFVBQVUsb0JBQW9CLENBQUMsR0FBbUI7SUFDdEQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1FBQzVCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNCLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtvQkFDaEUsT0FBTztpQkFDUjtnQkFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztTQUNKO0tBQ0Y7QUFDSCxDQUFDO0FBRUQsTUFBTSxvQkFBcUIsU0FBUSxZQUFZO0lBQzdDLFlBQW9CLE9BQWU7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBRW5DLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBa0I7UUFDL0IsSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDLHlCQUF5QixFQUFFO1lBQ2hELE9BQU8sU0FBUyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsMkJBQTJCLENBQUMsUUFBZ0IsRUFBRSxPQUFxQjtRQUNqRSxNQUFNLFFBQVEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2pDLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsNEZBQTRGO1FBQzVGLGdHQUFnRztRQUNoRyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUMsRUFBRTtnQkFDbkQsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0IsT0FBTyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7R2VuZXJpY0tleUZuLCBTaGFyZWRDb25zdGFudERlZmluaXRpb259IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50X3Bvb2wnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5cbmltcG9ydCB0eXBlIHtDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFB1cmVGdW5jdGlvbnMoam9iOiBDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICBmb3IgKGNvbnN0IHZpZXcgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB2aWV3Lm9wcygpKSB7XG4gICAgICBpci52aXNpdEV4cHJlc3Npb25zSW5PcChvcCwgZXhwciA9PiB7XG4gICAgICAgIGlmICghKGV4cHIgaW5zdGFuY2VvZiBpci5QdXJlRnVuY3Rpb25FeHByKSB8fCBleHByLmJvZHkgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25zdGFudERlZiA9IG5ldyBQdXJlRnVuY3Rpb25Db25zdGFudChleHByLmFyZ3MubGVuZ3RoKTtcbiAgICAgICAgZXhwci5mbiA9IGpvYi5wb29sLmdldFNoYXJlZENvbnN0YW50KGNvbnN0YW50RGVmLCBleHByLmJvZHkpO1xuICAgICAgICBleHByLmJvZHkgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFB1cmVGdW5jdGlvbkNvbnN0YW50IGV4dGVuZHMgR2VuZXJpY0tleUZuIGltcGxlbWVudHMgU2hhcmVkQ29uc3RhbnREZWZpbml0aW9uIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBudW1BcmdzOiBudW1iZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgb3ZlcnJpZGUga2V5T2YoZXhwcjogby5FeHByZXNzaW9uKTogc3RyaW5nIHtcbiAgICBpZiAoZXhwciBpbnN0YW5jZW9mIGlyLlB1cmVGdW5jdGlvblBhcmFtZXRlckV4cHIpIHtcbiAgICAgIHJldHVybiBgcGFyYW0oJHtleHByLmluZGV4fSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3VwZXIua2V5T2YoZXhwcik7XG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETzogVXNlIHRoZSBuZXcgcG9vbCBtZXRob2QgYGdldFNoYXJlZEZ1bmN0aW9uUmVmZXJlbmNlYFxuICB0b1NoYXJlZENvbnN0YW50RGVjbGFyYXRpb24oZGVjbE5hbWU6IHN0cmluZywga2V5RXhwcjogby5FeHByZXNzaW9uKTogby5TdGF0ZW1lbnQge1xuICAgIGNvbnN0IGZuUGFyYW1zOiBvLkZuUGFyYW1bXSA9IFtdO1xuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMubnVtQXJnczsgaWR4KyspIHtcbiAgICAgIGZuUGFyYW1zLnB1c2gobmV3IG8uRm5QYXJhbSgnYScgKyBpZHgpKTtcbiAgICB9XG5cbiAgICAvLyBXZSB3aWxsIG5ldmVyIHZpc2l0IGBpci5QdXJlRnVuY3Rpb25QYXJhbWV0ZXJFeHByYHMgdGhhdCBkb24ndCBiZWxvbmcgdG8gdXMsIGJlY2F1c2UgdGhpc1xuICAgIC8vIHRyYW5zZm9ybSBydW5zIGluc2lkZSBhbm90aGVyIHZpc2l0b3Igd2hpY2ggd2lsbCB2aXNpdCBuZXN0ZWQgcHVyZSBmdW5jdGlvbnMgYmVmb3JlIHRoaXMgb25lLlxuICAgIGNvbnN0IHJldHVybkV4cHIgPSBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luRXhwcmVzc2lvbihrZXlFeHByLCBleHByID0+IHtcbiAgICAgIGlmICghKGV4cHIgaW5zdGFuY2VvZiBpci5QdXJlRnVuY3Rpb25QYXJhbWV0ZXJFeHByKSkge1xuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG8udmFyaWFibGUoJ2EnICsgZXhwci5pbmRleCk7XG4gICAgfSwgaXIuVmlzaXRvckNvbnRleHRGbGFnLk5vbmUpO1xuXG4gICAgcmV0dXJuIG5ldyBvLkRlY2xhcmVWYXJTdG10KFxuICAgICAgICBkZWNsTmFtZSwgbmV3IG8uQXJyb3dGdW5jdGlvbkV4cHIoZm5QYXJhbXMsIHJldHVybkV4cHIpLCB1bmRlZmluZWQsIG8uU3RtdE1vZGlmaWVyLkZpbmFsKTtcbiAgfVxufVxuIl19
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import * as o from '../../../../output/output_ast';
|
|
9
9
|
import * as ir from '../../ir';
|
|
10
|
-
export function
|
|
11
|
-
for (const
|
|
12
|
-
for (const op of
|
|
10
|
+
export function generatePureLiteralStructures(job) {
|
|
11
|
+
for (const unit of job.units) {
|
|
12
|
+
for (const op of unit.update) {
|
|
13
13
|
ir.transformExpressionsInOp(op, (expr, flags) => {
|
|
14
14
|
if (flags & ir.VisitorContextFlag.InChildOperation) {
|
|
15
15
|
return expr;
|
|
@@ -55,4 +55,4 @@ function transformLiteralMap(expr) {
|
|
|
55
55
|
}
|
|
56
56
|
return new ir.PureFunctionExpr(o.literalMap(derivedEntries), nonConstantArgs);
|
|
57
57
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZV9saXRlcmFsX3N0cnVjdHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9wdXJlX2xpdGVyYWxfc3RydWN0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssQ0FBQyxNQUFNLCtCQUErQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9CLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxHQUFtQjtJQUMvRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVCLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDbEQsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBRUQsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLGdCQUFnQixFQUFFO29CQUN0QyxPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNwQztxQkFBTSxJQUFJLElBQUksWUFBWSxDQUFDLENBQUMsY0FBYyxFQUFFO29CQUMzQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNsQztnQkFFRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7S0FDRjtBQUNILENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLElBQXdCO0lBQ3JELE1BQU0sY0FBYyxHQUFtQixFQUFFLENBQUM7SUFDMUMsTUFBTSxlQUFlLEdBQW1CLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDaEMsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1RDtLQUNGO0lBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQXNCO0lBQ2pELElBQUksY0FBYyxHQUF3QixFQUFFLENBQUM7SUFDN0MsTUFBTSxlQUFlLEdBQW1CLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDaEMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzVCLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNMLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQ3JDLEtBQUssQ0FBQyxHQUFHLEVBQ1QsSUFBSSxFQUFFLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLEVBQ3JDLEtBQUssQ0FBQyxNQUFNLENBQ1gsQ0FBQyxDQUFDO1NBQ1I7S0FDRjtJQUNELE9BQU8sSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHR5cGUge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVB1cmVMaXRlcmFsU3RydWN0dXJlcyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQudXBkYXRlKSB7XG4gICAgICBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luT3Aob3AsIChleHByLCBmbGFncykgPT4ge1xuICAgICAgICBpZiAoZmxhZ3MgJiBpci5WaXNpdG9yQ29udGV4dEZsYWcuSW5DaGlsZE9wZXJhdGlvbikge1xuICAgICAgICAgIHJldHVybiBleHByO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV4cHIgaW5zdGFuY2VvZiBvLkxpdGVyYWxBcnJheUV4cHIpIHtcbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtTGl0ZXJhbEFycmF5KGV4cHIpO1xuICAgICAgICB9IGVsc2UgaWYgKGV4cHIgaW5zdGFuY2VvZiBvLkxpdGVyYWxNYXBFeHByKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybUxpdGVyYWxNYXAoZXhwcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICAgIH0sIGlyLlZpc2l0b3JDb250ZXh0RmxhZy5Ob25lKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTGl0ZXJhbEFycmF5KGV4cHI6IG8uTGl0ZXJhbEFycmF5RXhwcik6IG8uRXhwcmVzc2lvbiB7XG4gIGNvbnN0IGRlcml2ZWRFbnRyaWVzOiBvLkV4cHJlc3Npb25bXSA9IFtdO1xuICBjb25zdCBub25Db25zdGFudEFyZ3M6IG8uRXhwcmVzc2lvbltdID0gW107XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZXhwci5lbnRyaWVzKSB7XG4gICAgaWYgKGVudHJ5LmlzQ29uc3RhbnQoKSkge1xuICAgICAgZGVyaXZlZEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGlkeCA9IG5vbkNvbnN0YW50QXJncy5sZW5ndGg7XG4gICAgICBub25Db25zdGFudEFyZ3MucHVzaChlbnRyeSk7XG4gICAgICBkZXJpdmVkRW50cmllcy5wdXNoKG5ldyBpci5QdXJlRnVuY3Rpb25QYXJhbWV0ZXJFeHByKGlkeCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3IGlyLlB1cmVGdW5jdGlvbkV4cHIoby5saXRlcmFsQXJyKGRlcml2ZWRFbnRyaWVzKSwgbm9uQ29uc3RhbnRBcmdzKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTGl0ZXJhbE1hcChleHByOiBvLkxpdGVyYWxNYXBFeHByKTogby5FeHByZXNzaW9uIHtcbiAgbGV0IGRlcml2ZWRFbnRyaWVzOiBvLkxpdGVyYWxNYXBFbnRyeVtdID0gW107XG4gIGNvbnN0IG5vbkNvbnN0YW50QXJnczogby5FeHByZXNzaW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBleHByLmVudHJpZXMpIHtcbiAgICBpZiAoZW50cnkudmFsdWUuaXNDb25zdGFudCgpKSB7XG4gICAgICBkZXJpdmVkRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaWR4ID0gbm9uQ29uc3RhbnRBcmdzLmxlbmd0aDtcbiAgICAgIG5vbkNvbnN0YW50QXJncy5wdXNoKGVudHJ5LnZhbHVlKTtcbiAgICAgIGRlcml2ZWRFbnRyaWVzLnB1c2gobmV3IG8uTGl0ZXJhbE1hcEVudHJ5KFxuICAgICAgICAgIGVudHJ5LmtleSxcbiAgICAgICAgICBuZXcgaXIuUHVyZUZ1bmN0aW9uUGFyYW1ldGVyRXhwcihpZHgpLFxuICAgICAgICAgIGVudHJ5LnF1b3RlZCxcbiAgICAgICAgICApKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBpci5QdXJlRnVuY3Rpb25FeHByKG8ubGl0ZXJhbE1hcChkZXJpdmVkRW50cmllcyksIG5vbkNvbnN0YW50QXJncyk7XG59XG4iXX0=
|