- Start Date: 2024-02-05
- RFC PR: amaranth-lang/rfcs#42
- Amaranth Issue: amaranth-lang/amaranth#1084
Const from shape-castable
Summary
Allow passing a shape-castable to Const.
Motivation
We currently have two incompatible syntaxes for making a constant, depending on whether it's made from a Shape or a shape-castable.
The former uses Const(value, shape), while the latter requires shape.const(value).
Making Const accept shape-castables means we'll have a syntax that works for all shape-likes, reducing the need to special case for shape-castables.
Guide- and reference-level explanation
Const(value, shape) checks whether shape is a shape-castable and returns shape.const(value) when this is the case.
Drawbacks
- A
Const()constructor sometimes returning non-Constobjects can be confusing.Signal()already behaves this way.
Rationale and alternatives
- This is consistent with how
Signal()handles shape-castables.
Alternatives:
- Do not do this. Require code that makes constants from a passed shape-like to check whether it got passed a shape-castable or not and pick the appropriate syntax.
Prior art
RFC #15 added the equivalent behavior to Signal().
Unresolved questions
None.
Future possibilities
None.