@@ -2508,6 +2508,54 @@ FASTPythonLocalResolverTest >> testWalrusInBooleanOperator [
25082508 self assert: usedVariable equals: walrus localDeclaration localUses second
25092509]
25102510
2511+ { #category : ' tests - walrus' }
2512+ FASTPythonLocalResolverTest >> testWalrusInComprehensionBodyLeaks [
2513+
2514+ | walrus usedVariable |
2515+ self parseAndResolve: ' result = [(y := f(x)) for x in items]
2516+ print(y)' .
2517+
2518+ self skip. " Todo"
2519+ walrus := model module statements first right body.
2520+ self assert: (walrus isOfType: FASTPyWalrus ).
2521+ self assert: walrus localDeclaration equals: walrus.
2522+ self assert: walrus localDeclaration name equals: ' y' .
2523+ self assert: walrus localDeclaration isVariableWriteAccess.
2524+ self deny: walrus localDeclaration isNonLocalDeclaration.
2525+ self assert: walrus localDeclaration localUses size equals: 2 .
2526+ self assert: walrus localDeclaration localUses first equals: walrus.
2527+
2528+ usedVariable := model module statements second arguments first.
2529+ self assert: usedVariable localDeclaration equals: walrus.
2530+ self assert: usedVariable equals: walrus localDeclaration localUses second
2531+ ]
2532+
2533+ { #category : ' tests - walrus' }
2534+ FASTPythonLocalResolverTest >> testWalrusInComprehensionFilterLeaks [
2535+
2536+ | walrus usedBody usedPrint |
2537+ self parseAndResolve: ' result = [y for x in items if (y := x)]
2538+ print(y)' .
2539+
2540+ self skip. " Todo"
2541+ walrus := model module statements first right conditions first.
2542+ self assert: (walrus isOfType: FASTPyWalrus ).
2543+ self assert: walrus localDeclaration equals: walrus.
2544+ self assert: walrus localDeclaration name equals: ' y' .
2545+ self assert: walrus localDeclaration isVariableWriteAccess.
2546+ self deny: walrus localDeclaration isNonLocalDeclaration.
2547+ self assert: walrus localDeclaration localUses size equals: 3 .
2548+ self assert: walrus localDeclaration localUses first equals: walrus.
2549+
2550+ usedBody := model module statements first right body.
2551+ self assert: usedBody localDeclaration equals: walrus.
2552+ self assert: usedBody equals: walrus localDeclaration localUses second.
2553+
2554+ usedPrint := model module statements second arguments first.
2555+ self assert: usedPrint localDeclaration equals: walrus.
2556+ self assert: usedPrint equals: walrus localDeclaration localUses third
2557+ ]
2558+
25112559{ #category : ' tests - walrus' }
25122560FASTPythonLocalResolverTest >> testWalrusInFunctionCallArgument [
25132561
0 commit comments