1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
//! `ui.slot` - the slot outlet, its content-side dual `ui.slot-content`,
//! and the static-or-computed name position they share with
//! `vue.directive` arguments.
use ;
use Region;
use crateExprRef;
/// A name position that may be authored statically or computed at runtime:
/// slot names (`<slot :name="n">`) and directive arguments
/// (`v-pin:[direction]`).
///
/// No `PartialEq`, following [`ExprRef`]: the dynamic case must not be
/// comparable (pessimal law 4 applies to whatever the expression is).
/// `ui.slot` - a slot outlet owning its fallback region.
///
/// Since the P2-9 element/binding-family installment the outlet carries
/// its own props surface - the slot props the parent's slot function
/// receives: static attributes plus attached one-way bindings
/// ([`super::BindOp`] / [`super::OnOp`]). The `name` position is not part
/// of that surface (it selects the slot, it is not passed to it), which
/// is why it stays a dedicated field.
/// `ui.slot-content` - one authored `v-slot` spelling on its carrier (a
/// component or a `<template>` child), attached as a binding op.
///
/// The dual of [`SlotOp`]: the outlet renders a slot, this *provides*
/// one. The op is the **syntactic surface** the lowering keeps - name
/// position and params exactly as authored, an unauthored name left
/// `None` (never pre-normalized to `default`: the default-name synthesis
/// is the slot-normalization pass's, where the authored-vs-synthesized
/// origin is a recorded fact). Canonical grouping - which region feeds
/// which slot, the implicit default, the dialect's modifier folding -
/// is that pass's published fact, not this type's.
///
/// Fair by the P2-16 litmus: named/parameterized slot content exists in
/// SFC and JSX alike (the JSX lowering keeps object-literal `v-slots`
/// entries as synthetic template children); only the modifier spelling
/// is Vue's, carried verbatim like [`super::VueDirectiveOp`] does.
/// Runtime component slots whose entries are unavailable at compile time.
/// The expression stays borrowed from its original File/arena owner and is
/// evaluated once, after authored child slots; its entries override them.
/// This is not a custom directive or a prop and carries no invented stability.
/// See [`crate::op`] for the guard rationale. `SlotOp` moved 56 → 104
/// when the outlet gained its props surface (two 24-byte arena vectors).
const _: = ;