diff --git a/mypy/fastparse.py b/mypy/fastparse.py index a4aea55386ab..db44b6749cd7 100644 --- a/mypy/fastparse.py +++ b/mypy/fastparse.py @@ -1367,6 +1367,7 @@ def visit_Raise(self, n: ast3.Raise) -> RaiseStmt: # Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) def visit_Try(self, n: ast3.Try) -> TryStmt: + body = self.as_required_block(n.body) vs = [ self.set_line(NameExpr(h.name), h) if h.name is not None else None for h in n.handlers ] @@ -1374,16 +1375,12 @@ def visit_Try(self, n: ast3.Try) -> TryStmt: handlers = [self.as_required_block(h.body) for h in n.handlers] node = TryStmt( - self.as_required_block(n.body), - vs, - types, - handlers, - self.as_block(n.orelse), - self.as_block(n.finalbody), + body, vs, types, handlers, self.as_block(n.orelse), self.as_block(n.finalbody) ) return self.set_line(node, n) def visit_TryStar(self, n: TryStar) -> TryStmt: + body = self.as_required_block(n.body) vs = [ self.set_line(NameExpr(h.name), h) if h.name is not None else None for h in n.handlers ] @@ -1391,12 +1388,7 @@ def visit_TryStar(self, n: TryStar) -> TryStmt: handlers = [self.as_required_block(h.body) for h in n.handlers] node = TryStmt( - self.as_required_block(n.body), - vs, - types, - handlers, - self.as_block(n.orelse), - self.as_block(n.finalbody), + body, vs, types, handlers, self.as_block(n.orelse), self.as_block(n.finalbody) ) node.is_star = True return self.set_line(node, n) diff --git a/test-data/unit/check-modules.test b/test-data/unit/check-modules.test index 5fba65f276a4..98ab7a9354d5 100644 --- a/test-data/unit/check-modules.test +++ b/test-data/unit/check-modules.test @@ -3239,6 +3239,24 @@ import b # type: ignore[import-not-found] tmp/a.py:1: error: Unused "type: ignore" comment [out2] +[case testRepeatedMissingImportKeepsFirstUnsuppressedError] +try: + import someweirdpackage +except: + import someweirdpackage # type: ignore[import-not-found] +[out] +main:2: error: Cannot find implementation or library stub for module named "someweirdpackage" +main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports + +[case testRepeatedMissingImportKeepsFirstUnsuppressedError_old_parser] +try: + import someweirdpackage +except: + import someweirdpackage # type: ignore[import-not-found] +[out] +main:2: error: Cannot find implementation or library stub for module named "someweirdpackage" +main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports + [case testImportErrorStaleLoadedFromCacheIncremental] import a [file a.py]