@@ -647,19 +647,20 @@ def _visit_overloaded_func_def(self, defn: OverloadedFuncDef) -> None:
647647 # HACK: Infer the type of the property.
648648 assert isinstance (defn .items [0 ], Decorator )
649649 self .visit_decorator (defn .items [0 ])
650- assert isinstance (defn .items [1 ], Decorator )
651- self .visit_func_def (defn .items [1 ].func )
652- setter_type = self .function_type (defn .items [1 ].func )
653- assert isinstance (setter_type , CallableType )
654- if len (setter_type .arg_types ) != 2 :
655- self .fail ("Invalid property setter signature" , defn .items [1 ].func )
656- any_type = AnyType (TypeOfAny .from_error )
657- setter_type = setter_type .copy_modified (
658- arg_types = [any_type , any_type ],
659- arg_kinds = [ARG_POS , ARG_POS ],
660- arg_names = [None , None ],
661- )
662- defn .items [0 ].var .setter_type = setter_type
650+ if defn .items [0 ].var .is_settable_property :
651+ assert isinstance (defn .items [1 ], Decorator )
652+ self .visit_func_def (defn .items [1 ].func )
653+ setter_type = self .function_type (defn .items [1 ].func )
654+ assert isinstance (setter_type , CallableType )
655+ if len (setter_type .arg_types ) != 2 :
656+ self .fail ("Invalid property setter signature" , defn .items [1 ].func )
657+ any_type = AnyType (TypeOfAny .from_error )
658+ setter_type = setter_type .copy_modified (
659+ arg_types = [any_type , any_type ],
660+ arg_kinds = [ARG_POS , ARG_POS ],
661+ arg_names = [None , None ],
662+ )
663+ defn .items [0 ].var .setter_type = setter_type
663664 for fdef in defn .items :
664665 assert isinstance (fdef , Decorator )
665666 if defn .is_property :
0 commit comments