@@ -528,6 +528,7 @@ impl PartialEntities {
528
528
validate_ancestors ( & entities) ?;
529
529
let mut entities = Self { entities } ;
530
530
entities. compute_tc ( ) ?;
531
+ entities. insert_actions ( schema) ;
531
532
Ok ( entities)
532
533
}
533
534
@@ -590,6 +591,20 @@ impl PartialEntities {
590
591
}
591
592
}
592
593
594
+ // Insert action entities from the schema
595
+ // Overwriting existing action entities is fine because they should come
596
+ // from schema or be consistent with schema anyways
597
+ fn insert_actions ( & mut self , schema : & ValidatorSchema ) {
598
+ for ( uid, action) in & schema. actions {
599
+ self . entities . insert (
600
+ uid. clone ( ) ,
601
+ // PANIC SAFETY: action entities do not contain unknowns
602
+ #[ allow( clippy:: unwrap_used) ]
603
+ action. as_ref ( ) . clone ( ) . try_into ( ) . unwrap ( ) ,
604
+ ) ;
605
+ }
606
+ }
607
+
593
608
/// Construct [`PartialEntities`] from a JSON list
594
609
pub fn from_json_value (
595
610
value : serde_json:: Value ,
@@ -609,17 +624,7 @@ impl PartialEntities {
609
624
partial_entities. compute_tc ( ) ?;
610
625
611
626
// Insert actions from the schema
612
- for ( uid, action) in & schema. actions {
613
- partial_entities. entities . insert (
614
- uid. clone ( ) ,
615
- PartialEntity {
616
- uid : uid. clone ( ) ,
617
- attrs : Some ( BTreeMap :: default ( ) ) ,
618
- ancestors : Some ( action. ancestors ( ) . cloned ( ) . collect ( ) ) ,
619
- tags : Some ( BTreeMap :: default ( ) ) ,
620
- } ,
621
- ) ;
622
- }
627
+ partial_entities. insert_actions ( schema) ;
623
628
Ok ( partial_entities)
624
629
}
625
630
0 commit comments