Summary
The cssl-effects crate defines the 28+ built-in effect types and the EffectRow / EffectSet types that appear in every function signature in Sigil. The public API has good summary doc comments but no # Examples sections.
Rustdoc examples serve as the canonical usage guide for contributors learning how to construct effect rows programmatically (e.g., in passes that analyze or transform effect annotations).
What to do
For the main public types in cssl-effects/src/lib.rs (and sub-modules), add # Examples blocks showing:
- Constructing an
EffectRow with a few effects
- Checking if a row contains a specific effect (e.g.,
NoAlloc)
- Merging / unifying two effect rows
- The
Deadline<N> parameterized effect with a concrete N
Ensure examples compile by running cargo test --doc -p cssl-effects.
Why this is a good first issue
- No type system or IR changes required
- Forces you to understand the effect system — the most distinctive feature of Sigil
- Examples become part of the test suite (doctests)
- Directly helps the next contributor who needs to write a pass that touches effects
Files
compiler-rs/crates/cssl-effects/src/ (all pub items)
Summary
The
cssl-effectscrate defines the 28+ built-in effect types and theEffectRow/EffectSettypes that appear in every function signature in Sigil. The public API has good summary doc comments but no# Examplessections.Rustdoc examples serve as the canonical usage guide for contributors learning how to construct effect rows programmatically (e.g., in passes that analyze or transform effect annotations).
What to do
For the main public types in
cssl-effects/src/lib.rs(and sub-modules), add# Examplesblocks showing:EffectRowwith a few effectsNoAlloc)Deadline<N>parameterized effect with a concrete NEnsure examples compile by running
cargo test --doc -p cssl-effects.Why this is a good first issue
Files
compiler-rs/crates/cssl-effects/src/(all pub items)