@@ -52,57 +52,42 @@ private Statement BuildDesugared() {
5252 // finally:
5353 // await mgr.__aexit__(None, None, None)
5454
55- // Helper to create nodes with proper parent and span
56- NameExpression MakeName ( string name ) {
57- var n = new NameExpression ( name ) { Parent = parent } ;
58- n . IndexSpan = span ;
59- return n ;
55+ // Helper to assign proper parent and span to nodes
56+ T SetScope < T > ( T node ) where T : Node {
57+ node . Parent = parent ;
58+ node . IndexSpan = span ;
59+ return node ;
6060 }
6161
6262 // mgr = EXPR
63- var assignMgr = new AssignmentStatement ( new Expression [ ] { MakeName ( "__asyncwith_mgr" ) } , ContextManager ) { Parent = parent } ;
64- assignMgr . IndexSpan = span ;
63+ var assignMgr = SetScope ( new AssignmentStatement ( [ SetScope ( new NameExpression ( "__asyncwith_mgr" ) ) ] , ContextManager ) ) ;
6564
6665 // await mgr.__aenter__()
67- var aenterAttr = new MemberExpression ( MakeName ( "__asyncwith_mgr" ) , "__aenter__" ) { Parent = parent } ;
68- aenterAttr . IndexSpan = span ;
69- var aenterCall = new CallExpression ( aenterAttr , null , null ) { Parent = parent } ;
70- aenterCall . IndexSpan = span ;
66+ var aenterAttr = SetScope ( new MemberExpression ( SetScope ( new NameExpression ( "__asyncwith_mgr" ) ) , "__aenter__" ) ) ;
67+ var aenterCall = SetScope ( new CallExpression ( aenterAttr , null , null ) ) ;
7168 var awaitEnter = new AwaitExpression ( aenterCall ) ;
7269
7370 Statement bodyStmt ;
74- if ( Variable != null ) {
71+ if ( Variable is not null ) {
7572 // VAR = await value; BLOCK
76- var assignVar = new AssignmentStatement ( new Expression [ ] { Variable } , awaitEnter ) { Parent = parent } ;
77- assignVar . IndexSpan = span ;
78- bodyStmt = new SuiteStatement ( new Statement [ ] { assignVar , Body } ) { Parent = parent } ;
73+ var assignVar = SetScope ( new AssignmentStatement ( [ Variable ] , awaitEnter ) ) ;
74+ bodyStmt = new SuiteStatement ( [ assignVar , Body ] ) { Parent = parent } ;
7975 } else {
80- var exprStmt = new ExpressionStatement ( awaitEnter ) { Parent = parent } ;
81- exprStmt . IndexSpan = span ;
82- bodyStmt = new SuiteStatement ( new Statement [ ] { exprStmt , Body } ) { Parent = parent } ;
76+ var exprStmt = SetScope ( new ExpressionStatement ( awaitEnter ) ) ;
77+ bodyStmt = new SuiteStatement ( [ exprStmt , Body ] ) { Parent = parent } ;
8378 }
8479
8580 // await mgr.__aexit__(None, None, None)
86- var aexitAttr = new MemberExpression ( MakeName ( "__asyncwith_mgr" ) , "__aexit__" ) { Parent = parent } ;
87- aexitAttr . IndexSpan = span ;
88- var none1 = new ConstantExpression ( null ) { Parent = parent } ; none1 . IndexSpan = span ;
89- var none2 = new ConstantExpression ( null ) { Parent = parent } ; none2 . IndexSpan = span ;
90- var none3 = new ConstantExpression ( null ) { Parent = parent } ; none3 . IndexSpan = span ;
91- var aexitCallNormal = new CallExpression ( aexitAttr ,
92- new Expression [ ] { none1 , none2 , none3 } , null ) { Parent = parent } ;
93- aexitCallNormal . IndexSpan = span ;
81+ var aexitAttr = SetScope ( new MemberExpression ( SetScope ( new NameExpression ( "__asyncwith_mgr" ) ) , "__aexit__" ) ) ;
82+ var none = SetScope ( new ConstantExpression ( null ) ) ;
83+ var aexitCallNormal = SetScope ( new CallExpression ( aexitAttr , [ none , none , none ] , null ) ) ;
9484 var awaitExitNormal = new AwaitExpression ( aexitCallNormal ) ;
9585
9686 // try/finally: await __aexit__ on normal exit
97- var finallyExprStmt = new ExpressionStatement ( awaitExitNormal ) { Parent = parent } ;
98- finallyExprStmt . IndexSpan = span ;
99- var tryFinally = new TryStatement ( bodyStmt , null , null , finallyExprStmt ) { Parent = parent } ;
100- tryFinally . IndexSpan = span ;
101- tryFinally . HeaderIndex = span . End ;
102-
103- var suite = new SuiteStatement ( new Statement [ ] { assignMgr , tryFinally } ) { Parent = parent } ;
104- suite . IndexSpan = span ;
105- return suite ;
87+ var finallyExprStmt = SetScope ( new ExpressionStatement ( awaitExitNormal ) ) ;
88+ var tryFinally = SetScope ( new TryStatement ( bodyStmt , null , null , finallyExprStmt ) { HeaderIndex = span . End } ) ;
89+
90+ return SetScope ( new SuiteStatement ( [ assignMgr , tryFinally ] ) ) ;
10691 }
10792
10893 public override MSAst . Expression Reduce ( ) {
0 commit comments