pub struct CascadeInputs<'a> {
pub parent_kernel: &'a ScopeKernel,
pub workload_params: &'a HashMap<String, String>,
pub parent_manifest: &'a [ManifestEntry],
pub referenced: &'a HashSet<String>,
pub pre_emitted: &'a HashSet<String>,
pub shadow_names: &'a HashSet<String>,
pub include_referenced_cascade: bool,
}Expand description
Per-scope context the walker needs from its caller.
Each scope-kind builder constructs this with its own pre- emitted set, referenced-placeholder set, and shadow-name set, then passes it through to the walker.
Fields§
§parent_kernel: &'a ScopeKernelParent kernel — the chain root for all walks.
workload_params: &'a HashMap<String, String>Workload params (CLI / params: block defaults).
parent_manifest: &'a [ManifestEntry]Typed manifest of the parent’s outputs — used to look up port types for referenced-name cascade. The runner already extracts this for the per-scope synthesisers; passing it in saves a re-walk.
referenced: &'a HashSet<String>Names referenced in the scope’s body / spec exprs (the
{name} placeholders + identifier scan of Polydat body
source). Drives steps 2 + 3 of the walker.
pre_emitted: &'a HashSet<String>Names already declared by the per-scope builder before the walker runs (iter vars, counter, body-locally- declared idents). The walker won’t re-emit these.
shadow_names: &'a HashSet<String>Additional names the per-scope builder wants to shadow from the parent-output cascade — body-locally-declared idents that aren’t externs. Without this, the cascade could re-emit a name the body locally assigns, causing a duplicate-binding compile error.
include_referenced_cascade: boolWhether to run the referenced-name cascade pass (step
3 in the walker’s order). do-loop and for-each opt in:
their bodies are tightly scoped (a condition expression
or a comprehension spec) where every referenced name is
expected to flow in as an extern. phase opts out: its
body is arbitrary Polydat source that may already declare
the same names as input / extern, and a step-3
emission would collide.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for CascadeInputs<'a>
impl<'a> !UnwindSafe for CascadeInputs<'a>
impl<'a> Freeze for CascadeInputs<'a>
impl<'a> Send for CascadeInputs<'a>
impl<'a> Sync for CascadeInputs<'a>
impl<'a> Unpin for CascadeInputs<'a>
impl<'a> UnsafeUnpin for CascadeInputs<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more