Skip to content

Commit 162c0eb

Browse files
committed
Assignment in assignment
1 parent 7fccd66 commit 162c0eb

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

src/FAST-Python-Tools-Tests/FASTPythonSSATest.class.st

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,51 @@ FASTPythonSSATest >> parseAndResolve: aString [
1717
FASTPythonSSAVisitor resolve: model module
1818
]
1919

20+
{ #category : 'tests - assignments' }
21+
FASTPythonSSATest >> testAssignementInAssignment [
22+
23+
| assignedVar1 assignedVar2 assignedVar3 usedVar1 usedVar2 usedVar3 usedVar4 |
24+
self parseAndResolve: 'x = y = 3
25+
26+
print(x)
27+
print(y)
28+
29+
x = 5
30+
31+
print(x)
32+
print(y)'.
33+
34+
assignedVar1 := model module statements first left.
35+
self assert: assignedVar1 ssaVersion version equals: 1.
36+
self assert: assignedVar1 ssaName equals: 'x_1'.
37+
self assert: assignedVar1 ssaVersion localDeclaration equals: assignedVar1 localDeclaration.
38+
self assert: assignedVar1 ssaVersion localUses size equals: 2.
39+
40+
assignedVar2 := model module statements first right left.
41+
self assert: assignedVar2 ssaVersion version equals: 1.
42+
self assert: assignedVar2 ssaName equals: 'y_1'.
43+
self assert: assignedVar2 ssaVersion localDeclaration equals: assignedVar2 localDeclaration.
44+
self assert: assignedVar2 ssaVersion localUses size equals: 3.
45+
46+
usedVar1 := model module statements second arguments first.
47+
self assert: usedVar1 ssaVersion identicalTo: assignedVar1 ssaVersion.
48+
49+
usedVar2 := model module statements third arguments first.
50+
self assert: usedVar2 ssaVersion identicalTo: assignedVar2 ssaVersion.
51+
52+
assignedVar3 := model module statements fourth left.
53+
self assert: assignedVar3 ssaVersion version equals: 2.
54+
self assert: assignedVar3 ssaName equals: 'x_2'.
55+
self assert: assignedVar3 ssaVersion localDeclaration equals: assignedVar3 localDeclaration.
56+
self assert: assignedVar3 ssaVersion localUses size equals: 2.
57+
58+
usedVar3 := model module statements fifth arguments first.
59+
self assert: usedVar3 ssaVersion identicalTo: assignedVar3 ssaVersion.
60+
61+
usedVar4 := model module statements sixth arguments first.
62+
self assert: usedVar4 ssaVersion identicalTo: assignedVar2 ssaVersion
63+
]
64+
2065
{ #category : 'tests - assignments' }
2166
FASTPythonSSATest >> testAssignementInIfInBothBranchesAndUsage [
2267

0 commit comments

Comments
 (0)