diff options
-rw-r--r-- | Lib/asyncio/coroutines.py | 3 | ||||
-rw-r--r-- | Lib/test/test_asyncio/test_tasks.py | 17 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/asyncio/coroutines.py b/Lib/asyncio/coroutines.py index 5a29100..c7fcd44 100644 --- a/Lib/asyncio/coroutines.py +++ b/Lib/asyncio/coroutines.py @@ -132,8 +132,9 @@ def coroutine(func): res = yield from await_meth() return res + coro = types.coroutine(coro) if not _DEBUG: - wrapper = types.coroutine(coro) + wrapper = coro else: @functools.wraps(func) def wrapper(*args, **kwds): diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py index daa1ff9..5e83a54 100644 --- a/Lib/test/test_asyncio/test_tasks.py +++ b/Lib/test/test_asyncio/test_tasks.py @@ -9,6 +9,7 @@ import io import random import re import sys +import textwrap import types import unittest import weakref @@ -3090,6 +3091,22 @@ class CompatibilityTests(test_utils.TestCase): result = self.loop.run_until_complete(inner()) self.assertEqual(['ok1', 'ok2'], result) + def test_debug_mode_interop(self): + # https://bugs.python.org/issue32636 + code = textwrap.dedent(""" + import asyncio + + async def native_coro(): + pass + + @asyncio.coroutine + def old_style_coro(): + yield from native_coro() + + asyncio.run(old_style_coro()) + """) + assert_python_ok("-c", code, PYTHONASYNCIODEBUG="1") + if __name__ == '__main__': unittest.main() |