@@ -631,7 +631,7 @@ def resolve_grouping(m: BuildingModel):
631631 uses_children , m .children = m .children , []
632632 for child in grouping .children :
633633 child .deepcopy (m )
634- self . process_uses_substmts (m , uses_children )
634+ process_uses_substmts (m , uses_children )
635635 m .annihilate ()
636636 return False
637637 def resolve_common (m : BuildingModel , module : str ):
@@ -643,7 +643,7 @@ def resolve_unresolved_prefix(m: BuildingModel):
643643 uses_children , m .children = m .children , []
644644 for child in grouping .children :
645645 child .deepcopy (m ).recursive_walk (resolve_unresolved_prefix )
646- self . process_uses_substmts (m , uses_children )
646+ process_uses_substmts (m , uses_children , prefix_resolver = resolve_unresolved_prefix )
647647 m .annihilate ()
648648 return False
649649 def resolve_data (m : BuildingModel ):
@@ -656,24 +656,26 @@ def resolve_augment(m: BuildingModel):
656656 if m .data_def_stm == BuildingModel .StatementType .uses_ :
657657 module = augment .prefix
658658 return resolve_common (m , module )
659+ def process_uses_substmts (uses : BuildingModel , substmts : List [BuildingModel ], * , prefix_resolver = None ):
660+ for m in substmts :
661+ m .recursive_walk (resolve_grouping )
662+ if m .data_def_stm == BuildingModel .StatementType .refine_ :
663+ w = ModelWalker (uses , self ._sros )
664+ m .target_path .move_walker (w , Wildcard ())
665+ self .resolve_deviations_replace (w .current , m )
666+ if m .data_def_stm == BuildingModel .StatementType .augment_ :
667+ w = ModelWalker (uses , self ._sros )
668+ m .target_path .move_walker (w , Wildcard ())
669+ for i in m .children :
670+ new = i .deepcopy (w .current )
671+ if prefix_resolver :
672+ new .recursive_walk (prefix_resolver )
659673 for grouping in self .groupings .values ():
660674 grouping .recursive_walk (resolve_grouping )
661675 self .root .recursive_walk (resolve_data )
662676 for augment in self .augments :
663677 augment .recursive_walk (resolve_augment )
664678
665- def process_uses_substmts (self , uses : BuildingModel , substmts : List [BuildingModel ]):
666- for m in substmts :
667- if m .data_def_stm == BuildingModel .StatementType .refine_ :
668- w = ModelWalker (uses , self ._sros )
669- m .target_path .move_walker (w , Wildcard ())
670- self .resolve_deviations_replace (w .current , m )
671- if m .data_def_stm == BuildingModel .StatementType .augment_ :
672- w = ModelWalker (uses , self ._sros )
673- m .target_path .move_walker (w , Wildcard ())
674- for i in m .children :
675- i .deepcopy (w .current )
676-
677679 def process_augment (self , m : BuildingModel ):
678680 if m .data_def_stm == BuildingModel .StatementType .augment_ :
679681 w = ModelWalker .path_parse (self .root , self ._sros , m .target_path , True )
0 commit comments