void () { doTestByText(""" from typing import Type class Bar: # self is specified def spam1(self): <warning descr="Type signature has too many arguments"># type: (Bar, int) -> None</warning> pass def egg11(self, a, b): <warning descr="Type signature has too many arguments"># type: (Bar, int, str, bool) -> None</warning> pass def egg12(self, a, b): <warning descr="Type signature has too few arguments"># type: (Bar) -> None</warning> pass \s # self is not specified def spam2(self): <warning descr="The type of self 'int' is not a supertype of its class 'Bar'"># type: (int) -> None</warning> pass def egg2(self, a, b): <warning descr="The type of self 'int' is not a supertype of its class 'Bar'"># type: (int, str, bool) -> None</warning> pass \s # cls is not specified\s @classmethod def spam3(cls): <warning descr="The type of self 'int' is not a supertype of its class 'Type[Bar]'"># type: (int) -> None</warning> pass @classmethod def egg3(cls, a, b): <warning descr="The type of self 'int' is not a supertype of its class 'Type[Bar]'"># type: (int, str, bool) -> None</warning> pass \s # cls is specified \s @classmethod def spam4(cls): <warning descr="Type signature has too many arguments"># type: (Type[Bar], int) -> None</warning> pass @classmethod def egg41(cls, a, b): <warning descr="Type signature has too many arguments"># type: (Type[Bar], int, str, bool) -> None</warning> pass @classmethod def egg42(cls, a, b): <warning descr="Type signature has too few arguments"># type: (Type[Bar]) -> None</warning> pass \s @staticmethod def spam5(): <warning descr="Type signature has too many arguments"># type: (int) -> None</warning> pass @staticmethod def egg51(a, b): <warning descr="Type signature has too many arguments"># type: (int, str, bool) -> None</warning> pass @staticmethod def egg52(a, b): <warning descr="Type signature has too few arguments"># type: (int) -> None</warning> pass"""); }