@@ -541,6 +541,22 @@ function _compat(ex::Expr)
541
541
callexpr. args[2 ] = params
542
542
callexpr. args[3 ] = obj
543
543
end
544
+ elseif VERSION < v " 0.5.0-dev+4002" && ex. head == :. && length (ex. args) == 2 # 15032
545
+ if isexpr (ex. args[2 ], :quote ) && typeof (ex. args[2 ]. args[1 ]) == QuoteNode
546
+ # foo.:bar -> foo.(:bar) in older Julia
547
+ return Expr (ex. head, _compat (ex. args[1 ]), ex. args[2 ]. args[1 ])
548
+ elseif isexpr (ex. args[2 ], :quote ) && isexpr (ex. args[2 ]. args[1 ], :quote ) &&
549
+ typeof (ex. args[2 ]. args[1 ]. args[1 ]) == Symbol
550
+ # foo.:bar -> foo.(:bar) in older Julia
551
+ return Expr (ex. head, _compat (ex. args[1 ]), QuoteNode (ex. args[2 ]. args[1 ]. args[1 ]))
552
+ elseif isexpr (ex. args[2 ], :tuple )
553
+ # f.(arg1, arg2...) -> broadcast(f, arg1, arg2...)
554
+ return Expr (:call , :broadcast , _compat (ex. args[1 ]), map (_compat, ex. args[2 ]. args)... )
555
+ elseif typeof (ex. args[2 ]) != QuoteNode &&
556
+ ! (isexpr (ex. args[2 ], :quote ) && typeof (ex. args[2 ]. args[1 ]) == Symbol)
557
+ # f.(arg) -> broadcast(f, arg)
558
+ return Expr (:call , :broadcast , _compat (ex. args[1 ]), _compat (ex. args[2 ]))
559
+ end
544
560
end
545
561
return Expr (ex. head, map (_compat, ex. args)... )
546
562
end
0 commit comments