pub struct ComponentProp {
pub name: String,
pub local: String,
pub span_start: u32,
pub used_in_script: bool,
pub used_in_template: bool,
pub component: String,
pub used_outside_forward: bool,
}Expand description
A component prop declared by Vue <script setup> defineProps or Svelte 5
$props(). used_in_script / used_in_template are set during extraction;
the unused-component-prop detector flags a prop where neither is true. See
harvest_define_props and harvest_svelte_props in sfc_props.rs.
Fields§
§name: StringThe declared prop name.
local: StringThe template/script-visible local binding name: the destructure alias for
const { name: alias } = defineProps() or
let { name: alias } = $props(), otherwise the prop name itself. A
renamed prop is read through this local, so usage must be checked against
it, not the declared name.
span_start: u32Start byte offset of the prop declaration (anchors the finding).
used_in_script: boolWhether this prop is referenced in the component’s <script> (a
destructured local binding with a resolved reference, or a props.<name>
member access). For React, this is set-in-body: a resolved reference to the
destructured local anywhere in the component function body.
used_in_template: boolWhether this prop name is referenced in the component’s <template>.
Set by apply_template_usage when the template scanner credits the name.
Always false for React (no template; React uses used_in_script).
component: StringThe enclosing component name. Empty for Vue SFCs (one component per file,
the file stem is the component, set by the detector). For React this is the
component function/arrow name a prop was declared on, so the detector can
emit the right component_name and apply the per-component abstain ladder
(a file can declare several React components).
used_outside_forward: boolReact-only: true when the destructured prop local is referenced at least
once OUTSIDE a child-JSX attribute value expression (a substantive
consumption: a hook arg, a host-element child, a non-JSX-attr read). When
used_in_script is true but this is false, the prop is referenced ONLY as
the root of forwarded child attribute values, i.e. a pure pass-through.
Always false for Vue (no forward-vs-consume distinction is computed).