#22280 call-by-name syntax does not allow forward references to a rule defined later in file
Issue created by
tdyas
The engine's call-by-name syntax requires that any rule referenced by name must be fully defined before it can be referenced. This causes errors when one rule refers to another rule defined later in the same file. See
#22269 (review) for example for this issue causing an error in migrating the Helm backends to call-by-name syntax.
The error itself is generated from Rust at
pants/src/rust/engine/src/nodes/task.rs
Lines 63 to 69 in</pantsbuild/pants/commit/0be5c8020247b8716e2d93a8f140841557af56ca|0be5c80>
| let entry = edges.entry_for(&dependency_key).ok_or_else(\|| { |
| ----------------------------------------------------------------------- |
| // NB: The Python constructor for
Call()
will have already errored if |
| //
type(input) != input_type
. |
| throw(format!( |
| "{call} was not detected in your @rule body at rule compile time." |
| )) |
| })?; |
pantsbuild/pants