PY-20770 Fixed: Support Python 3.6 asynchronous generators and comprehensions

Introduce fake __asyncgenerator type for async generator objects described in PEP 525.
Update PyFunctionImpl.createCoroutineType to convert __generator to __asyncgenerator.
Update PyTargetExpressionImpl.getIterationType to infer type of elements which are getting from async generator
Highlight non-empty return inside async generators as error
This commit is contained in:
Semyon Proshev
2016-09-30 18:04:58 +03:00
parent 0e61667352
commit d74244f6ac
19 changed files with 572 additions and 48 deletions
@@ -94,6 +94,7 @@ public class PyNames {
public static final String FAKE_METHOD = "__method";
public static final String FAKE_NAMEDTUPLE = "__namedtuple";
public static final String FAKE_COROUTINE = "__coroutine";
public static final String FAKE_ASYNC_GENERATOR = "__asyncgenerator";
public static final String FUTURE_MODULE = "__future__";
public static final String UNICODE_LITERALS = "unicode_literals";
@@ -142,7 +143,8 @@ public class PyNames {
public static final String MUTABLE_MAPPING = "MutableMapping";
public static final String ABC_SET = "Set";
public static final String ABC_MUTABLE_SET = "MutableSet";
public static final String AWAITABLE = "Awaitable";
public static final String ASYNC_ITERABLE = "AsyncIterable";
public static final String ABC_NUMBER = "Number";