| from mypy.types import LiteralType, AnyType, TypeOfAny, Type |
| from mypy.plugin import Plugin, MethodContext |
| from typing import Callable, Optional |
| |
| # If radd exists, there shouldn't be an error. If it doesn't exist, then there will be an error |
| def type_add(ctx: MethodContext) -> Type: |
| ctx.api.fail("fail", ctx.context) |
| return AnyType(TypeOfAny.from_error) |
| |
| def type_radd(ctx: MethodContext) -> Type: |
| return LiteralType(7, fallback=ctx.api.named_generic_type('builtins.int', [])) |
| |
| |
| class TestPlugin(Plugin): |
| |
| def get_method_hook(self, fullname: str) -> Optional[Callable[[MethodContext], Type]]: |
| if fullname == 'builtins.int.__add__': |
| return type_add |
| if fullname == 'builtins.int.__radd__': |
| return type_radd |
| return None |
| |
| def plugin(version: str) -> type[TestPlugin]: |
| return TestPlugin |