@@ -82,7 +82,6 @@ def __init__(self, *, src_loc=None):
8282 self .generated = OrderedDict ()
8383 self .src_loc = src_loc
8484 self .origins = None
85- self .domains_propagated_up = {}
8685 self .domain_renames = {}
8786
8887 def add_domains (self , * domains ):
@@ -127,67 +126,6 @@ def find_generated(self, *path):
127126 def elaborate (self , platform ):
128127 return self
129128
130- def _propagate_domains_up (self , hierarchy = ("top" ,)):
131- from ._xfrm import DomainRenamer
132-
133- domain_subfrags = defaultdict (set )
134-
135- # For each domain defined by a subfragment, determine which subfragments define it.
136- for i , (subfrag , name , src_loc ) in enumerate (self .subfragments ):
137- # First, recurse into subfragments and let them propagate domains up as well.
138- hier_name = name
139- if hier_name is None :
140- hier_name = f"<unnamed #{ i } >"
141- subfrag ._propagate_domains_up (hierarchy + (hier_name ,))
142-
143- # Second, classify subfragments by domains they define.
144- for domain_name , domain in subfrag .domains .items ():
145- if domain .local :
146- continue
147- domain_subfrags [domain_name ].add ((subfrag , name , src_loc , i ))
148-
149- # For each domain defined by more than one subfragment, rename the domain in each
150- # of the subfragments such that they no longer conflict.
151- for domain_name , subfrags in domain_subfrags .items ():
152- if len (subfrags ) == 1 :
153- continue
154-
155- names = [n for f , n , s , i in subfrags ]
156- if not all (names ):
157- names = sorted (f"<unnamed #{ i } >" if n is None else f"'{ n } '"
158- for f , n , s , i in subfrags )
159- raise _cd .DomainError (
160- "Domain '{}' is defined by subfragments {} of fragment '{}'; it is necessary "
161- "to either rename subfragment domains explicitly, or give names to subfragments"
162- .format (domain_name , ", " .join (names ), "." .join (hierarchy )))
163-
164- if len (names ) != len (set (names )):
165- names = sorted (f"#{ i } " for f , n , s , i in subfrags )
166- raise _cd .DomainError (
167- "Domain '{}' is defined by subfragments {} of fragment '{}', some of which "
168- "have identical names; it is necessary to either rename subfragment domains "
169- "explicitly, or give distinct names to subfragments"
170- .format (domain_name , ", " .join (names ), "." .join (hierarchy )))
171-
172- for subfrag , name , src_loc , i in subfrags :
173- domain_name_map = {domain_name : f"{ name } _{ domain_name } " }
174- self .subfragments [i ] = (DomainRenamer (domain_name_map )(subfrag ), name , src_loc )
175-
176- # Finally, collect the (now unique) subfragment domains, and merge them into our domains.
177- for i , (subfrag , name , src_loc ) in enumerate (self .subfragments ):
178- hier_name = name
179- if hier_name is None :
180- hier_name = f"<unnamed #{ i } >"
181- for domain_name , domain in subfrag .domains .items ():
182- if domain .local :
183- continue
184- self .add_domains (domain )
185- if domain_name in subfrag .domains_propagated_up :
186- _used_in , defined_in = subfrag .domains_propagated_up [domain_name ]
187- else :
188- defined_in = (* hierarchy , hier_name )
189- self .domains_propagated_up [domain_name ] = (hierarchy , defined_in )
190-
191129 def _propagate_domains_down (self , hierarchy = ("top" ,)):
192130 # For each domain defined in this fragment, ensure it also exists in all subfragments.
193131 for i , (subfrag , name , src_loc ) in enumerate (self .subfragments ):
@@ -196,13 +134,8 @@ def _propagate_domains_down(self, hierarchy=("top",)):
196134 hier_name = f"<unnamed #{ i } >"
197135
198136 for domain in self .iter_domains ():
199- if domain in subfrag .domains :
200- assert self .domains [domain ] is subfrag .domains [domain ]
201- else :
137+ if domain not in subfrag .domains :
202138 subfrag .add_domains (self .domains [domain ])
203- if domain in self .domains_propagated_up :
204- _used_in , defined_in = self .domains_propagated_up [domain ]
205- subfrag .domains_propagated_up [domain ] = (hierarchy + (hier_name ,)), defined_in
206139
207140 subfrag ._propagate_domains_down (hierarchy + (hier_name ,))
208141
@@ -237,7 +170,6 @@ def _create_missing_domains(self, missing_domain, *, platform=None):
237170 return new_domains
238171
239172 def _propagate_domains (self , missing_domain , * , platform = None ):
240- self ._propagate_domains_up ()
241173 self ._propagate_domains_down ()
242174 new_domains = self ._create_missing_domains (missing_domain , platform = platform )
243175 self ._propagate_domains_down ()
0 commit comments