Skip to content

Commit e3173d3

Browse files
authored
Merge pull request #18130 from JuliaLang/jb/fix18129
fix #18129, optimize some more cases of captured variables
2 parents 4106d18 + 0137899 commit e3173d3

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/julia-syntax.scm

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2732,25 +2732,27 @@ f(x) = yt(x)
27322732
(any vinfo:sa vi))
27332733
(let* ((leading
27342734
(filter (lambda (x) (and (pair? x)
2735-
(or (and (eq? (car x) 'method)
2736-
(length> x 2))
2737-
(eq? (car x) '=))))
2735+
(let ((cx (car x)))
2736+
(or (and (eq? cx 'method) (length> x 2))
2737+
(eq? cx '=)
2738+
(eq? cx 'call)))))
27382739
(take-statements-while
27392740
(lambda (e)
27402741
(or (atom? e)
27412742
(memq (car e) '(quote top core line inert local unnecessary
27422743
meta inbounds boundscheck simdloop
27432744
implicit-global global globalref
2744-
const newvar = null method))))
2745+
const newvar = null method call))))
27452746
(lam:body lam))))
2746-
(unused (map cadr leading))
2747+
(unused (map cadr (filter (lambda (x) (memq (car x) '(method =)))
2748+
leading)))
27472749
(def (table)))
27482750
;; TODO: reorder leading statements to put assignments where the RHS is
27492751
;; `simple-atom?` at the top.
27502752
(for-each (lambda (e)
27512753
(set! unused (filter (lambda (v) (not (expr-uses-var e v)))
27522754
unused))
2753-
(if (memq (cadr e) unused)
2755+
(if (and (memq (car e) '(method =)) (memq (cadr e) unused))
27542756
(put! def (cadr e) #t)))
27552757
leading)
27562758
(for-each (lambda (v)

0 commit comments

Comments
 (0)