|
140 | 140 | (get-current-class state cfuncsinstance) |
141 | 141 | #f |
142 | 142 | cfuncsinstance)) |
| 143 | + |
| 144 | + ; single case: funcall (funcall (dot obj X)) |
| 145 | + ; non-single case: (funcall (dot (funcall (dot obj X)) Y)) |
| 146 | + |
| 147 | + ; dotted-class-instance: 'a (the name of the instance |
| 148 | + ; dottedname: (a f) where f is the name of the call and a is the object |
| 149 | + ((and (dot-expr? name) (list? (dotted-class-instance (arglist-dot name)))) |
| 150 | + (let* ([evaled-instance-pair (G-eval-atomic-statement->value_state |
| 151 | + (dotted-class-instance (arglist-dot name)) |
| 152 | + state |
| 153 | + cfuncsinstance)] |
| 154 | + |
| 155 | + ; TODO: left off on line below |
| 156 | + ;[evaled-instance (list `(classname ,(get-base-class (get-value-from-pair evaled-instance-pair))) |
| 157 | + ; (get-value-from-pair evaled-instance-pair))] |
| 158 | + [evaled-instance (get-value-from-pair evaled-instance-pair)] |
| 159 | + [evaled-state (push-variable-as-literal->state '.temp evaled-instance (get-state-from-pair evaled-instance-pair))] |
| 160 | + [dottedname (list '.temp (dotted-class-call (arglist-dot name)))] |
| 161 | + [evaled-function (eval-function-post-name-eval (evaluate-dotted-function-name dottedname evaled-state) |
| 162 | + args |
| 163 | + evaled-state |
| 164 | + (construct-dotted-state dottedname evaled-state) |
| 165 | + (get-current-class (construct-dotted-state dottedname evaled-state) cfuncsinstance) |
| 166 | + #t |
| 167 | + cfuncsinstance)] |
| 168 | + [function-return (get-value-from-pair evaled-function)] |
| 169 | + [function-state (get-state-from-pair evaled-function)]) |
| 170 | + (list function-return (update-class-instance (dotted-class-instance dottedname) (extract-new-class-instance-state function-state) evaled-state)))) |
143 | 171 | ((dot-expr? name) |
144 | 172 | (let* ([dottedname (arglist-dot name)] |
145 | 173 | [evaled-function (eval-function-post-name-eval (evaluate-dotted-function-name dottedname state) |
|
152 | 180 | [function-return (get-value-from-pair evaled-function)] |
153 | 181 | [function-state (get-state-from-pair evaled-function)]) |
154 | 182 | (list function-return (update-class-instance (dotted-class-instance dottedname) (extract-new-class-instance-state function-state) state)))) |
155 | | - |
156 | | - (else (eval-function-post-name-eval name args state state default-currentclass #t cfuncsinstance))))) |
157 | | -;(trace G-eval-function->value_state) |
| 183 | + (else (eval-function-post-name-eval name args state state default-currentclass #t cfuncsinstance))))) |
| 184 | + |
| 185 | +(trace G-eval-function->value_state) |
158 | 186 | (define get-base-class |
159 | 187 | (lambda (state cfuncsinstance) |
160 | 188 | (get-value-from-pair (G-value-lookup->value_state '.class state cfuncsinstance)))) |
|
267 | 295 | (lambda (instancename state) |
268 | 296 | (append (G-get-instance-state instancename state) |
269 | 297 | (G-pop-to-class-level->state state)))) |
270 | | - |
| 298 | +(trace add-class-instance-to-state) |
271 | 299 | (define extract-new-class-instance-state |
272 | 300 | (lambda (state) |
273 | 301 | (reverse (extract-new-class-instance-state-sub (get-tail-scope (reverse state)))))) |
|
480 | 508 | (cond |
481 | 509 | (else (list (list 'classname cn) (G-eval-class-closure->state cn state))))))) |
482 | 510 |
|
| 511 | + |
483 | 512 | ; Pushes the declaration statement to the state |
484 | 513 | (define declare-var->state |
485 | 514 | (lambda (name state) |
|
536 | 565 | (define handle-this-expr |
537 | 566 | (lambda (state) |
538 | 567 | (list (extract-new-class-instance-state state) state))) |
539 | | - |
540 | | -; STUB |
| 568 | +(trace handle-this-expr) |
541 | 569 | (define dot-expr? |
542 | 570 | (lambda (arglist) |
543 | 571 | (cond |
|
0 commit comments