From b563794e6e88354dcb6b08a62a799e4109c033df Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Wed, 26 Oct 2016 11:10:25 +0200 Subject: [PATCH] Extended fix for generics + test --- mypy/checkexpr.py | 8 +++++--- test-data/unit/check-generics.test | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/mypy/checkexpr.py b/mypy/checkexpr.py index 7832c7aa7e98..d06ff909b5f3 100644 --- a/mypy/checkexpr.py +++ b/mypy/checkexpr.py @@ -1374,9 +1374,11 @@ def visit_reveal_type_expr(self, expr: RevealTypeExpr) -> Type: def visit_type_application(self, tapp: TypeApplication) -> Type: """Type check a type application (expr[type, ...]).""" tp = self.accept(tapp.expr) - if not isinstance(tp, CallableType): - return AnyType() - return self.apply_generic_arguments(tp, tapp.types, tapp) + if isinstance(tp, CallableType): + return self.apply_generic_arguments(tp, tapp.types, tapp) + if isinstance(tp, Overloaded): + return self.apply_generic_arguments2(tp, tapp.types, tapp) + return AnyType() def visit_type_alias_expr(self, alias: TypeAliasExpr) -> Type: return AnyType() diff --git a/test-data/unit/check-generics.test b/test-data/unit/check-generics.test index 1189bc4c6126..ec44b64f12a5 100644 --- a/test-data/unit/check-generics.test +++ b/test-data/unit/check-generics.test @@ -500,6 +500,11 @@ Alias[int](1) Alias[int]("a") # E: Argument 1 to "Node" has incompatible type "str"; expected "int" [out] +[case testTypeApplicationCrash] +type[int] # this was crashing, see #2302 (comment) # E: Type application targets a non-generic function or class +[out] + + -- Multiple assignment with lists -- ------------------------------