author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Sun, 20 Sep 2015 12:01:42 +0100 | |
changeset 13 | 97090c2baa33 |
parent 9 | 569bf5707c7e |
child 16 | 17a2d1d9f205 |
permissions | -rw-r--r-- |
4
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'jv:tea/compiler' }" |
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
9
569bf5707c7e
Added support for special forms to parser and typechecker (somewhat)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
5 |
TestCase subclass:#TSemanticAnalyserTests |
13
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
6 |
instanceVariableNames:'environment' |
4
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
classVariableNames:'' |
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
poolDictionaries:'' |
9
569bf5707c7e
Added support for special forms to parser and typechecker (somewhat)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
9 |
category:'Languages-Tea-Compiler-Internals-Tests' |
4
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
! |
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
13
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
12 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
13 |
!TSemanticAnalyserTests methodsFor:'running'! |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
14 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
15 |
setUp |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
16 |
super setUp. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
17 |
environment := TEnvironment new |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
18 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
19 |
"Modified: / 19-09-2015 / 05:54:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
20 |
! |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
21 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
22 |
tearDown |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
23 |
environment := nil. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
24 |
super tearDown. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
25 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
26 |
"Modified: / 19-09-2015 / 05:54:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
27 |
! ! |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
28 |
|
9
569bf5707c7e
Added support for special forms to parser and typechecker (somewhat)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
29 |
!TSemanticAnalyserTests methodsFor:'tests'! |
4
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
|
13
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
31 |
test_bindings_01 |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
32 |
| class method tree | |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
33 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
34 |
class := TClassDefinition newClass name: 'tSIntegerW'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
35 |
method := TMethodDefinition class: class selector: 'foo'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
36 |
method source: 'foo <^ tSIntegerW> | a <tSIntegerW> | ^ a + 1'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
37 |
tree := method parseTree. |
4
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
|
13
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
39 |
TSemanticAnalyser runOn: tree inEnvironment: environment. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
40 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
41 |
self assert: tree body temporaries first binding isLocalBinding. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
42 |
self assert: tree body statements first"^ node" value receiver"a node" binding == tree body temporaries first binding. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
43 |
self assert: tree body statements first"^ node" value arguments first"1 node" binding isConstantBinding. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
44 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
45 |
"Created: / 19-09-2015 / 06:33:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
46 |
"Modified: / 19-09-2015 / 18:14:34 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
9
569bf5707c7e
Added support for special forms to parser and typechecker (somewhat)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
47 |
! |
569bf5707c7e
Added support for special forms to parser and typechecker (somewhat)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
48 |
|
13
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
49 |
test_scopes_01 |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
50 |
| class method tree | |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
51 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
52 |
class := TClassDefinition newClass name: 'TestClass'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
53 |
method := TMethodDefinition class: class selector: 'foo'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
54 |
method source: 'foo <^ TestClass> self do:[ :each <tSIntegerW> | each ]'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
55 |
tree := method parseTree. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
56 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
57 |
TSemanticAnalyser runOn: tree inEnvironment: environment. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
58 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
59 |
self assert: tree scope parent isNil. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
60 |
self assert: tree scope node == tree. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
61 |
self assert: tree scope children isEmptyOrNil. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
62 |
self assert: tree scope variables size == 1"self". |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
63 |
self assert: tree body scope == tree scope. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
64 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
65 |
self assert: tree body statements first arguments first scope parent isNil. "Not an inlined block" |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
66 |
self assert: tree body statements first arguments first scope node == tree body statements first arguments first. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
67 |
self assert: tree body statements first arguments first scope children isEmptyOrNil. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
68 |
self assert: tree body statements first arguments first scope variables size == 1"each". |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
69 |
self assert: tree body statements first arguments first scope variables anElement name = 'each'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
70 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
71 |
"Created: / 19-09-2015 / 05:53:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
72 |
! |
9
569bf5707c7e
Added support for special forms to parser and typechecker (somewhat)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
73 |
|
13
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
74 |
test_scopes_02 |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
75 |
| class method tree | |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
76 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
77 |
class := TClassDefinition newClass name: 'TestClass'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
78 |
method := TMethodDefinition class: class selector: 'foo'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
79 |
method source: 'foo <^ TestClass> true ifTrue:[ false ifTrue:[ ] ]'. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
80 |
tree := method parseTree. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
81 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
82 |
TSemanticAnalyser runOn: tree inEnvironment: environment. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
83 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
84 |
self assert: tree scope parent isNil. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
85 |
self assert: tree scope node == tree. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
86 |
self assert: tree scope children size == 1"ifTrue: scope". |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
87 |
self assert: tree scope variables size == 1"self". |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
88 |
self assert: tree body scope == tree scope. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
89 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
90 |
self assert: tree body statements first arguments first scope parent == tree scope. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
91 |
self assert: tree body statements first arguments first scope node == tree body statements first arguments first. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
92 |
self assert: tree body statements first arguments first scope children size == 1. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
93 |
self assert: tree body statements first arguments first scope variables isEmpty. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
94 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
95 |
self assert: tree body statements first arguments first "outer block" |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
96 |
body statements first arguments first "inner block" scope parent |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
97 |
== |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
98 |
tree body statements first arguments first"outer block" scope. |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
99 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
100 |
"Created: / 19-09-2015 / 06:11:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
4
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
! ! |
3d80069ea3e2
More work on basic infrastructure - types, bindings & compilation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
|
13
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
103 |
!TSemanticAnalyserTests class methodsFor:'documentation'! |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
104 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
105 |
version_HG |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
106 |
|
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
107 |
^ '$Changeset: <not expanded> $' |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
108 |
! ! |
97090c2baa33
Fixes/refactoring of scopes and bindings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
9
diff
changeset
|
109 |