@@ -39,18 +39,17 @@ This most commonly happens in situations like `x^2`.
3939"""
4040_rewrite_generic (:: Expr , x:: Number ) = x, true
4141
42- function _is_generator (expr)
43- return Meta. isexpr (expr, :call , 2 ) && Meta. isexpr (expr. args[2 ], :generator )
44- end
45-
46- function _is_flatten (expr)
47- return Meta. isexpr (expr, :call , 2 ) && Meta. isexpr (expr. args[2 ], :flatten )
42+ function _is_generic_generator_call (expr)
43+ if Meta. isexpr (expr, :call , 2 )
44+ return _is_generator_or_flatten (expr. args[2 ])
45+ end
46+ return Meta. isexpr (expr, :call , 3 ) &&
47+ Meta. isexpr (expr. args[2 ], :parameters ) &&
48+ _is_generator_or_flatten (expr. args[3 ])
4849end
4950
50- _is_generator_or_flatten (expr) = _is_generator (expr) || _is_flatten (expr)
51-
52- function _is_parameters (expr)
53- return Meta. isexpr (expr, :call , 3 ) && Meta. isexpr (expr. args[2 ], :parameters )
51+ function _is_generator_or_flatten (expr)
52+ return Meta. isexpr (expr, :generator ) || Meta. isexpr (expr, :flatten )
5453end
5554
5655function _is_kwarg (expr, kwarg:: Symbol )
@@ -113,7 +112,7 @@ function _rewrite_generic(stack::Expr, expr::Expr)
113112 elseif Meta. isexpr (expr. args[2 ], :(... ))
114113 # If the first argument is a splat.
115114 return esc (expr), false
116- elseif _is_generator_or_flatten (expr) || _is_parameters (expr)
115+ elseif _is_generic_generator_call (expr)
117116 if ! (expr. args[1 ] in (:sum , :Σ , :∑ ))
118117 # We don't know what this is. Return the expression and don't let
119118 # future callers mutate.
0 commit comments