Treat Modify bounds as transparent and drop the redundant fold-context validation

This commit is contained in:
Dennis Kobert
2026-08-25 11:04:57 +00:00
parent 888cdf17b0
commit 9cf037e992
2 changed files with 5 additions and 26 deletions
+5 -1
View File
@@ -940,11 +940,15 @@ fn parse_context_feature_idents(ty: &Type) -> Vec<ContextFeatureDecl> {
| "InjectVarArgs" => {
features.push(ContextFeatureDecl::new(segment.ident.clone()));
}
// Modify* is conditionally transparent: the node rewrites the
// field only on its content's behalf, so it names no
// requirement of its own and the field nullifies early when
// nothing upstream reads it.
"ModifyFootprint" | "ModifyRealTime" | "ModifyAnimationTime" | "ModifyPointerPosition" | "ModifyPosition" | "ModifyIndex" | "ModifyVarArgs" => {}
// InjectIndex stays undeclared: a record node's injection
// re-addresses lanes derived from the incoming index, so it
// must not cancel the cone's index requirement in the
// nullification pass.
// Skip Modify* traits as they don't affect usage tracking
// Also ignore other traits like Ctx, ExtractAll, etc.
_ => {}
}