|
6 | 6 |
|
7 | 7 | using System.Threading; |
8 | 8 |
|
9 | | -using Microsoft.Scripting; |
| 9 | +using IronPython.Runtime.Binding; |
| 10 | +using IronPython.Runtime.Exceptions; |
| 11 | + |
10 | 12 | using MSAst = System.Linq.Expressions; |
11 | 13 |
|
12 | 14 | namespace IronPython.Compiler.Ast { |
@@ -78,24 +80,22 @@ T SetScope<T>(T node) where T : Node { |
78 | 80 | } |
79 | 81 |
|
80 | 82 | // _iter = ITER.__aiter__() |
81 | | - var aiterAttr = SetScope(new MemberExpression(List, "__aiter__")); |
82 | | - var aiterCall = SetScope(new CallExpression(aiterAttr, null, null)); |
| 83 | + var aiterCall = SetScope(new UnaryExpression(PythonOperationKind.AIter, List)); |
83 | 84 | var assignIter = SetScope(new AssignmentStatement([SetScope(new NameExpression(iterName))], aiterCall)); |
84 | 85 |
|
85 | 86 | // running = True |
86 | 87 | var trueConst = SetScope(new ConstantExpression(true)); |
87 | 88 | var assignRunning = SetScope(new AssignmentStatement([SetScope(new NameExpression(runningName))], trueConst)); |
88 | 89 |
|
89 | 90 | // TARGET = await __aiter.__anext__() |
90 | | - var anextAttr = SetScope(new MemberExpression(SetScope(new NameExpression(iterName)), "__anext__")); |
91 | | - var anextCall = SetScope(new CallExpression(anextAttr, null, null)); |
| 91 | + var anextCall = SetScope(new UnaryExpression(PythonOperationKind.ANext, SetScope(new NameExpression(iterName)))); |
92 | 92 | var awaitNext = new AwaitExpression(anextCall); |
93 | 93 | var assignTarget = SetScope(new AssignmentStatement([Left], awaitNext)); |
94 | 94 |
|
95 | 95 | // except StopAsyncIteration: __running = False |
96 | 96 | var falseConst = SetScope(new ConstantExpression(false)); |
97 | 97 | var stopRunning = SetScope(new AssignmentStatement([SetScope(new NameExpression(runningName))], falseConst)); |
98 | | - var handler = SetScope(new TryStatementHandler(SetScope(new NameExpression("StopAsyncIteration")), null!, SetScope(new SuiteStatement([stopRunning])))); |
| 98 | + var handler = SetScope(new TryStatementHandler(SetScope(new NameExpression(nameof(PythonExceptions.StopAsyncIteration))), null!, SetScope(new SuiteStatement([stopRunning])))); |
99 | 99 | handler.HeaderIndex = span.End; |
100 | 100 |
|
101 | 101 | // try/except/else block |
|
0 commit comments