@@ -345,13 +345,11 @@ def visit_type_alias(self, node: TypeAlias) -> None:
345
345
def fixup (self , node : SN ) -> SN :
346
346
if node in self .replacements :
347
347
new = self .replacements [node ]
348
- skip_slots : tuple [str , ...] = ()
349
348
if isinstance (node , TypeInfo ) and isinstance (new , TypeInfo ):
350
349
# Special case: special_alias is not exposed in symbol tables, but may appear
351
350
# in external types (e.g. named tuples), so we need to update it manually.
352
- skip_slots = ("special_alias" ,)
353
351
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 ) )
355
353
return cast (SN , new )
356
354
return node
357
355
@@ -556,9 +554,16 @@ def replace_nodes_in_symbol_table(
556
554
if node .node in replacements :
557
555
new = replacements [node .node ]
558
556
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 ))
561
558
node .node = new
562
559
if isinstance (node .node , (Var , TypeAlias )):
563
560
# Handle them here just in case these aren't exposed through the AST.
564
561
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