From 7ffe42a3ebf30e74997bcdbf057cd5b773898bc8 Mon Sep 17 00:00:00 2001 From: David Fisher Date: Wed, 30 Nov 2016 17:44:59 -0800 Subject: [PATCH] Fix type aliases with unicode --- mypy/exprtotype.py | 4 ++-- test-data/unit/check-python2.test | 6 ++++++ test-data/unit/fixtures/python2.pyi | 5 +++++ 3 files changed, 13 insertions(+), 2 deletions(-) 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