|
164 | 164 | #f |
165 | 165 | cfuncsinstance)] |
166 | 166 | [function-return (get-value-from-pair evaled-function)] |
167 | | - [function-state (get-state-from-pair evaled-function)] |
168 | | - [debg (delete-this state)] |
169 | | - [debug2 (delete-this2 function-state)] |
170 | | - [debug3 (delete-this (G-merge-states->state state function-state))]) |
| 167 | + [function-state (get-state-from-pair evaled-function)]) |
171 | 168 | (cond |
172 | 169 | ((eq? (dotted-class-instance dottedname) '.temp) (list function-return (G-merge-states->state state function-state))) |
173 | 170 | (else (list function-return (update-class-instance (dotted-class-instance dottedname) (extract-new-class-instance-state function-state) evaled-state)))))) |
|
187 | 184 | (else (eval-function-post-name-eval name args state state default-currentclass #t cfuncsinstance))))) |
188 | 185 |
|
189 | 186 |
|
190 | | -(define delete-this2 |
191 | | - (lambda (arg) arg)) |
192 | | -;(trace delete-this2) |
193 | | -(define delete-this |
194 | | - (lambda (arg) arg)) |
195 | | -;(trace delete-this) |
196 | | - |
| 187 | +; Finds the highest rightmost variable in a chained dotted expression |
197 | 188 | (define find-highest-var |
198 | 189 | (lambda (dotexpr) |
199 | 190 | (cond |
|
207 | 198 | ((eq? 'funcall (arglist-head dotexpr)) '.temp) |
208 | 199 | (else (dotted-class-instance (arglist-dot dotexpr)))))) |
209 | 200 |
|
| 201 | +; Gets the case class a state is in |
210 | 202 | (define get-base-class |
211 | 203 | (lambda (state cfuncsinstance) |
212 | 204 | (get-value-from-pair (G-value-lookup->value_state '.class state cfuncsinstance)))) |
| 205 | + |
| 206 | +; Gets the current class a state is in |
213 | 207 | (define get-current-class |
214 | 208 | (lambda (state cfuncsinstance) |
215 | 209 | (cond |
216 | 210 | ((G-initialized? '.this state) (get-value-from-pair (G-value-lookup->value_state '.this state cfuncsinstance))) |
217 | 211 | (else (get-value-from-pair (G-value-lookup->value_state '.class state cfuncsinstance)))))) |
218 | 212 |
|
| 213 | +; Gets a superclass for a current class in a state |
219 | 214 | (define get-super-class |
220 | 215 | (lambda (currentclass state) |
221 | | - (cond |
222 | | - ((null? state) '()) |
| 216 | + (cond |
| 217 | + ((null? state) default-currentclass) |
223 | 218 | ((null? currentclass) default-currentclass) |
224 | 219 | ((declared-in-scope? (get-variable-section-state (get-top-scope state)) '.class) |
225 | 220 | (cond |
|
232 | 227 |
|
233 | 228 | (define default-currentclass '()) |
234 | 229 |
|
| 230 | +; Evaluate the actual function after the name as been evaluated |
235 | 231 | (define eval-function-post-name-eval |
236 | 232 | (lambda (name args state function-state current-class preserve-current-class cfuncsinstance) |
237 | 233 | (let* ([super-popped-state (G-add-empty-scope-to-state->state (G-push-stack-divider-to-state->state current-class |
|
0 commit comments