{"record":{"id":"31446eed52240e98","repo":"bevyengine/bevy","slug":"cannot-define-both-entity-event-trigger-and","errorCode":null,"errorMessage":"Cannot define both #[entity_event(trigger)] and #[entity_event(propagate)]","messagePattern":"Cannot define both #\\[entity_event\\(trigger\\)\\] and #\\[entity_event\\(propagate\\)\\]","errorType":"validation","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"crates/bevy_ecs/macros/src/event.rs","lineNumber":113,"sourceCode":"                    traversal = Some(meta.value()?.parse()?);\n                }\n                processed_attrs.push(PROPAGATE);\n                Ok(())\n            }\n            Some(ident) if ident == TRIGGER => {\n                trigger = Some(meta.value()?.parse()?);\n                processed_attrs.push(TRIGGER);\n                Ok(())\n            }\n            Some(ident) => Err(meta.error(format!(\"unsupported attribute: {ident}\"))),\n            None => Err(meta.error(\"expected identifier\")),\n        }) {\n            return e.to_compile_error().into();\n        }\n    }\n\n    if trigger.is_some() && propagate {\n        return syn::Error::new(\n            ast.span(),\n            \"Cannot define both #[entity_event(trigger)] and #[entity_event(propagate)]\",\n        )\n        .into_compile_error()\n        .into();\n    }\n\n    let entity_field = match get_event_target_field(&ast) {\n        Ok(value) => value,\n        Err(err) => return err.into_compile_error().into(),\n    };\n\n    let struct_name = &ast.ident;\n    let (impl_generics, type_generics, where_clause) = &ast.generics.split_for_impl();\n\n    let trigger = if let Some(trigger) = trigger {\n        quote! {#trigger}\n    } else if propagate {","sourceCodeStart":95,"sourceCodeEnd":131,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_ecs/macros/src/event.rs#L95-L131","documentation":"Compile error from the derive_entity_event macro: after attribute parsing, both the trigger and propagate options of #[entity_event] were set. These select mutually exclusive observer traversal behaviors, so the derive aborts code generation with this guard.","triggerScenarios":"Thrown at crates/bevy_ecs/macros/src/event.rs:113 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep only one option: #[entity_event(trigger = MyTraversal)] OR #[entity_event(propagate = MyPropagation)]","Use two separate event types if you need both triggered and propagated behavior","Remove the unwanted attribute from the derive invocation"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"396ca727080776bd313bb892423b7d94e03b81b4","analyzedAt":"2026-08-20T16:12:39.808Z","contentChangedAt":"2026-08-20T16:12:39.808Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}