pub struct PragmaSet {
pub entries: Vec<Pragma>,
pub parent: Option<Arc<PragmaSet>>,
}Expand description
All pragmas declared in one Polydat scope. Multiple PragmaSets
chain via PragmaSet::with_parent to model nested scopes
(workload → phase → for_each iteration). Per SRD 13b
§“Scope composition” + SRD 15 §“Pragma Scope”: each scope is
its own PragmaSet, the chain is walked at lookup time, and
outer scopes win on conflict.
Fields§
§entries: Vec<Pragma>The pragmas declared in this scope, in order.
parent: Option<Arc<PragmaSet>>Outer scope, if any. Lookups walk this chain after their
own entries miss; conflicts are detected at attach time
via PragmaSet::attach_to. The Arc keeps the outer
scope cheap to share across many child scopes (e.g. one
workload scope feeding a fan-out of phase scopes).
Implementations§
Source§impl PragmaSet
impl PragmaSet
Sourcepub fn contains(&self, name: &str) -> bool
pub fn contains(&self, name: &str) -> bool
Returns true if the named pragma is present in this scope or any enclosing scope.
Sourcepub fn strict_types(&self) -> bool
pub fn strict_types(&self) -> bool
Returns true if either strict_types or the strict alias
is set in this scope or any enclosing scope.
Sourcepub fn strict_values(&self) -> bool
pub fn strict_values(&self) -> bool
Returns true if either strict_values or the strict
alias is set in this scope or any enclosing scope.
Sourcepub fn unknown(&self) -> impl Iterator<Item = &Pragma>
pub fn unknown(&self) -> impl Iterator<Item = &Pragma>
Iterate pragmas this scope declares that the compiler doesn’t recognise. Local-only — does not walk parents (the outer scope already reported its own unknowns at its own compile time).
Sourcepub fn attach_to(
self,
outer: Arc<PragmaSet>,
) -> (PragmaSet, Vec<PragmaConflict>)
pub fn attach_to( self, outer: Arc<PragmaSet>, ) -> (PragmaSet, Vec<PragmaConflict>)
Attach this PragmaSet to an outer scope, returning
(attached, conflicts). Conflicts arise when this scope
declares a pragma whose effective value (currently just
args) differs from a same-named declaration in the
outer chain. Outer wins; the conflict is returned for
diagnostic reporting.
The caller decides what to do with conflicts:
- non-strict: emit warning event(s)
- strict: turn each conflict into a compile error
Today’s pragma vocabulary is presence-only so args is
always empty; conflicts are degenerate. The framework is
in place for future value-bearing pragmas.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PragmaSet
impl RefUnwindSafe for PragmaSet
impl Send for PragmaSet
impl Sync for PragmaSet
impl Unpin for PragmaSet
impl UnsafeUnpin for PragmaSet
impl UnwindSafe for PragmaSet
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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