Skip to content

cross_ref_target_collapse

Two value-kinds cross-reference the same form but disagree on how its member set is built; the first one declared wins.

A target form’s member set is collected once, not once per referring value-kind. When two (cross-ref …) declarations name the same target and differ: one reads a :name-key, the other runs a :provider; or they name different keys, providers, or :scope forms, and the first in plugin × value-kind order builds the set and the second’s declaration has no effect. References through the losing kind are still checked, but against the winner’s names.

Two kinds that declare the same spec on one target are fine and stay silent: that is ordinary aliasing, and both agree on what the members are. To fix a real disagreement, give the kinds distinct :target forms, or make the two declarations match.


Run sjon explain cross_ref_target_collapse to read this at a terminal, browse every code, or work through diagnostics-driven repair if you want the habit rather than the answer.