File tree 1 file changed +14
-1
lines changed
1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change 193
193
(action (:before node-let) #' add-local-funs)
194
194
(action (:before node-bind) #' add-bind-fun)))))
195
195
196
+ ; ;; XXX HACK: This is a temporary hack (famous last words) to solve
197
+ ; ;; #1390. This issue should be handled earlier.
198
+ (defun %reset-let-node-type-by-subexpression! (node)
199
+ ; ; This function overwrites a LET-NODE's type with its SUBEXPR's
200
+ ; ; type.
201
+ (when (node-let-p node)
202
+ (setf (coalton-impl/codegen/ast ::%node-type (node-let-subexpr node))
203
+ (node-type node)))
204
+ node)
205
+
196
206
(defun optimize-bindings-initial (bindings package env)
197
207
(declare (type binding-list bindings)
198
208
(type package package )
201
211
(let ((hoister (make-hoister)))
202
212
(append
203
213
(loop :for (name . node) :in bindings
204
- :collect (cons name (static-dict-lift (optimize-node node env) name hoister package env)))
214
+ :collect (cons name (%reset-let-node-type-by-subexpression!
215
+ (static-dict-lift
216
+ (optimize-node node env)
217
+ name hoister package env))))
205
218
(pop-final-hoist-point hoister))))
206
219
207
220
(defun optimize-node (node env)
You can’t perform that action at this time.
0 commit comments