Maybe we should make `@which @time` work...
On Tue, Oct 13, 2015 at 8:51 PM, Deniz Yuret <[email protected]> wrote:
> I was wondering the same thing myself. I could not find anything in
> Base. Here is something that works, at least in Julia 0.4, based on
> base/reflection.jl:functionloc()
> Use it with: `macroloc(:@time)`
>
> function macroloc(expr::Expr)
>
> @assert expr.head == :macrocall
>
> f=getfield(current_module(),expr.args[1])
>
> lsd = f.code::LambdaStaticData
>
> ln = lsd.line
>
> if ln <= 0
>
> error("could not determine location of macro definition")
>
> end
>
> (Base.find_source_file(string(lsd.file)), ln)
>
> end
>
>
> On Tuesday, October 13, 2015 at 1:13:34 AM UTC-7, Mohammed El-Beltagy
> wrote:
>>
>>
>> If want to look up a method is julia, say I am interested in the
>> implementation of the `sine` function, I just run
>>
>> ```julia
>> julia> methods(sin)
>> # 11 methods for generic function "sin":
>> sin(a::Complex{Float16}) at float16.jl:151
>> sin(z::Complex{T<:Real}) at complex.jl:548
>> sin(x::Float64) at math.jl:137
>> sin(x::Float32) at math.jl:138
>> sin(a::Float16) at float16.jl:150
>> sin(x::BigFloat) at mpfr.jl:610
>> sin(x::Real) at math.jl:139
>> sin{Tv,Ti}(A::SparseMatrixCSC{Tv,Ti}) at sparse/sparsematrix.jl:648
>> sin{T<:Number}(::AbstractArray{T<:Number,1}) at operators.jl:380
>> sin{T<:Number}(::AbstractArray{T<:Number,2}) at operators.jl:381
>> sin{T<:Number}(::AbstractArray{T<:Number,N}) at operators.jl:383
>> ```
>>
>> But it seems that there is no clear way of locating the sources files of
>> macros. Or is there?
>>
>>