diff --git a/mypy/build.py b/mypy/build.py index d786922a4564..5eebc0a22a85 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -2188,11 +2188,8 @@ def type_checker(self) -> TypeChecker: if not self._type_checker: assert self.tree is not None, "Internal error: must be called on parsed file only" manager = self.manager - self._type_checker = TypeChecker( - manager.errors, manager.modules, self.options, - self.tree, self.xpath, manager.plugin, - self.manager.semantic_analyzer.future_import_flags, - ) + self._type_checker = TypeChecker(manager.errors, manager.modules, self.options, + self.tree, self.xpath, manager.plugin) return self._type_checker def type_map(self) -> Dict[Expression, Type]: diff --git a/mypy/checker.py b/mypy/checker.py index 5bc7809eb7c4..e4c79a4c1c9f 100644 --- a/mypy/checker.py +++ b/mypy/checker.py @@ -221,12 +221,8 @@ class TypeChecker(NodeVisitor[None], CheckerPluginInterface): # functions such as open(), etc. plugin: Plugin - # Future flags that we get from semantic analyzer. - future_import_flags: Set[str] - def __init__(self, errors: Errors, modules: Dict[str, MypyFile], options: Options, - tree: MypyFile, path: str, plugin: Plugin, - future_import_flags: Set[str]) -> None: + tree: MypyFile, path: str, plugin: Plugin) -> None: """Construct a type checker. Use errors to report type check errors. @@ -272,8 +268,6 @@ def __init__(self, errors: Errors, modules: Dict[str, MypyFile], options: Option # argument through various `checker` and `checkmember` functions. self._is_final_def = False - self.future_import_flags = future_import_flags - @property def type_context(self) -> List[Optional[Type]]: return self.expr_checker.type_context diff --git a/mypy/checkexpr.py b/mypy/checkexpr.py index 93df9c612126..1647339ef217 100644 --- a/mypy/checkexpr.py +++ b/mypy/checkexpr.py @@ -2414,7 +2414,8 @@ def dangerous_comparison(self, left: Type, right: Type, def get_operator_method(self, op: str) -> str: if op == '/' and self.chk.options.python_version[0] == 2: - return '__truediv__' if 'division' in self.chk.future_import_flags else '__div__' + # TODO also check for "from __future__ import division" + return '__div__' else: return operators.op_methods[op] diff --git a/test-data/unit/check-expressions.test b/test-data/unit/check-expressions.test index 70fda50d617e..a275de94c9be 100644 --- a/test-data/unit/check-expressions.test +++ b/test-data/unit/check-expressions.test @@ -202,32 +202,6 @@ class C: pass [builtins fixtures/tuple.pyi] -[case testDivPython2] -# flags: --python-version 2.7 -class A(object): - def __div__(self, other): - # type: (A, str) -> str - return 'a' - -a = A() -reveal_type(a / 'b') # N: Revealed type is "builtins.str" -a / 1 # E: Unsupported operand types for / ("A" and "int") -[builtins fixtures/bool.pyi] - -[case testDivPython2FutureImport] -# flags: --python-version 2.7 -from __future__ import division - -class A(object): - def __truediv__(self, other): - # type: (A, str) -> str - return 'a' - -a = A() -reveal_type(a / 'b') # N: Revealed type is "builtins.str" -a / 1 # E: Unsupported operand types for / ("A" and "int") -[builtins fixtures/bool.pyi] - [case testIntDiv] a, b, c = None, None, None # type: (A, B, C) if int():