diff --git a/mypy/exprtotype.py b/mypy/exprtotype.py index 293454ebe0aba..56732d317c21b 100644 --- a/mypy/exprtotype.py +++ b/mypy/exprtotype.py @@ -2,7 +2,7 @@ from mypy.nodes import ( Expression, NameExpr, MemberExpr, IndexExpr, TupleExpr, - ListExpr, StrExpr, BytesExpr, EllipsisExpr + ListExpr, StrExpr, BytesExpr, UnicodeExpr, EllipsisExpr ) from mypy.parsetype import parse_str_as_type, TypeParseError from mypy.types import Type, UnboundType, TypeList, EllipsisType @@ -43,7 +43,7 @@ def expr_to_unanalyzed_type(expr: Expression) -> Type: elif isinstance(expr, ListExpr): return TypeList([expr_to_unanalyzed_type(t) for t in expr.items], line=expr.line, column=expr.column) - elif isinstance(expr, (StrExpr, BytesExpr)): + elif isinstance(expr, (StrExpr, BytesExpr, UnicodeExpr)): # Parse string literal type. try: result = parse_str_as_type(expr.value, expr.line) diff --git a/test-data/unit/check-python2.test b/test-data/unit/check-python2.test index 5d4edfd4fb4ad..f62b9e6234ed0 100644 --- a/test-data/unit/check-python2.test +++ b/test-data/unit/check-python2.test @@ -218,3 +218,9 @@ def foo() -> int: # flags: --fast-parser import __builtin__ __builtin__.str + +[case testUnicodeAlias] +from typing import List +Alias = List[u'Foo'] +class Foo: pass +[builtins_py2 fixtures/python2.pyi] diff --git a/test-data/unit/fixtures/python2.pyi b/test-data/unit/fixtures/python2.pyi index 76245b717e55f..61e48be4510e7 100644 --- a/test-data/unit/fixtures/python2.pyi +++ b/test-data/unit/fixtures/python2.pyi @@ -1,3 +1,5 @@ +from typing import Generic, Iterable, TypeVar + class object: def __init__(self) -> None: pass @@ -10,4 +12,7 @@ class int: pass class str: pass class unicode: pass +T = TypeVar('T') +class list(Iterable[T], Generic[T]): pass + # Definition of None is implicit