@@ -42,39 +42,30 @@ def lossy_decorator(fn: Callable) -> Callable: ...
4242class Parent :
4343 @final
4444 def foo (self ): ...
45-
4645 @final
4746 @ property
4847 def my_property1 (self ) -> int : ...
49-
5048 @ property
5149 @final
5250 def my_property2 (self ) -> int : ...
53-
5451 @ property
5552 @final
5653 def my_property3 (self ) -> int : ...
57-
5854 @final
5955 @ classmethod
6056 def class_method1 (cls ) -> int : ...
61-
6257 @ classmethod
6358 @final
6459 def class_method2 (cls ) -> int : ...
65-
6660 @final
6761 @ staticmethod
6862 def static_method1 () -> int : ...
69-
7063 @ staticmethod
7164 @final
7265 def static_method2 () -> int : ...
73-
7466 @lossy_decorator
7567 @final
7668 def decorated_1 (self ): ...
77-
7869 @final
7970 @lossy_decorator
8071 def decorated_2 (self ): ...
@@ -87,31 +78,23 @@ class Child(Parent):
8778 def foo (self ): ...
8879 @ property
8980 def my_property1 (self ) -> int : ... # error: [override-of-final-method]
90-
9181 @ property
9282 def my_property2 (self ) -> int : ... # error: [override-of-final-method]
9383 @my_property2.setter
9484 def my_property2 (self , x : int ) -> None : ...
95-
9685 @ property
9786 def my_property3 (self ) -> int : ... # error: [override-of-final-method]
9887 @my_property3.deleter
9988 def my_proeprty3 (self ) -> None : ...
100-
10189 @ classmethod
10290 def class_method1 (cls ) -> int : ... # error: [override-of-final-method]
103-
10491 @ staticmethod
10592 def static_method1 () -> int : ... # error: [override-of-final-method]
106-
10793 @ classmethod
10894 def class_method2 (cls ) -> int : ... # error: [override-of-final-method]
109-
11095 @ staticmethod
11196 def static_method2 () -> int : ... # error: [override-of-final-method]
112-
11397 def decorated_1 (self ): ... # TODO : should emit [override-of-final-method]
114-
11598 @lossy_decorator
11699 def decorated_2 (self ): ... # TODO : should emit [override-of-final-method]
117100
@@ -207,7 +190,6 @@ class Good:
207190 def bar (self , x : str ) -> str : ...
208191 @overload
209192 def bar (self , x : int ) -> int : ...
210-
211193 @final
212194 @overload
213195 def baz (self , x : str ) -> str : ...
@@ -219,7 +201,6 @@ class ChildOfGood(Good):
219201 def bar (self , x : str ) -> str : ...
220202 @overload
221203 def bar (self , x : int ) -> int : ... # error: [override-of-final-method]
222-
223204 @overload
224205 def baz (self , x : str ) -> str : ...
225206 @overload
@@ -232,7 +213,6 @@ class Bad:
232213 @final
233214 # error: [invalid-overload]
234215 def bar (self , x : int ) -> int : ...
235-
236216 @overload
237217 def baz (self , x : str ) -> str : ...
238218 @final
@@ -245,7 +225,6 @@ class ChildOfBad(Bad):
245225 def bar (self , x : str ) -> str : ...
246226 @overload
247227 def bar (self , x : int ) -> int : ... # error: [override-of-final-method]
248-
249228 @overload
250229 def baz (self , x : str ) -> str : ...
251230 @overload
@@ -478,27 +457,32 @@ class A:
478457 if coinflip():
479458 @final
480459 def method1 (self ) -> None : ...
460+
481461 else :
482462 def method1 (self ) -> None : ...
483463
484464 if coinflip():
485465 def method2 (self ) -> None : ...
466+
486467 else :
487468 @final
488469 def method2 (self ) -> None : ...
489470
490471 if coinflip():
491472 @final
492473 def method3 (self ) -> None : ...
474+
493475 else :
494476 @final
495477 def method3 (self ) -> None : ...
496478
497479 if coinflip():
498480 def method4 (self ) -> None : ...
481+
499482 elif coinflip():
500483 @final
501484 def method4 (self ) -> None : ...
485+
502486 else :
503487 def method4 (self ) -> None : ...
504488
@@ -519,11 +503,13 @@ class B(A):
519503class C (A ):
520504 if coinflip():
521505 def method1 (self ) -> None : ... # error: [override-of-final-method]
506+
522507 else :
523508 pass
524509
525510 if coinflip():
526511 def method2 (self ) -> None : ... # error: [override-of-final-method]
512+
527513 else :
528514 def method2 (self ) -> None : ...
529515
0 commit comments