@@ -345,13 +345,11 @@ def visit_type_alias(self, node: TypeAlias) -> None:
345345 def fixup (self , node : SN ) -> SN :
346346 if node in self .replacements :
347347 new = self .replacements [node ]
348- skip_slots : tuple [str , ...] = ()
349348 if isinstance (node , TypeInfo ) and isinstance (new , TypeInfo ):
350349 # Special case: special_alias is not exposed in symbol tables, but may appear
351350 # in external types (e.g. named tuples), so we need to update it manually.
352- skip_slots = ("special_alias" ,)
353351 replace_object_state (new .special_alias , node .special_alias )
354- replace_object_state (new , node , skip_slots = skip_slots )
352+ replace_object_state (new , node , skip_slots = _get_ignored_slots ( new ) )
355353 return cast (SN , new )
356354 return node
357355
@@ -556,9 +554,16 @@ def replace_nodes_in_symbol_table(
556554 if node .node in replacements :
557555 new = replacements [node .node ]
558556 old = node .node
559- # Needed for TypeInfo, see comment in fixup() above.
560- replace_object_state (new , old , skip_slots = ("special_alias" ,))
557+ replace_object_state (new , old , skip_slots = _get_ignored_slots (new ))
561558 node .node = new
562559 if isinstance (node .node , (Var , TypeAlias )):
563560 # Handle them here just in case these aren't exposed through the AST.
564561 node .node .accept (NodeReplaceVisitor (replacements ))
562+
563+
564+ def _get_ignored_slots (node : SymbolNode ) -> tuple [str , ...]:
565+ if isinstance (node , OverloadedFuncDef ):
566+ return ("setter" ,)
567+ if isinstance (node , TypeInfo ):
568+ return ("special_alias" ,)
569+ return ()
0 commit comments