This file is indexed.

/usr/share/julia/test/meta.jl is in julia-common 0.4.7-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
# This file is a part of Julia. License is MIT: http://julialang.org/license

# test meta-expressions that annotate blocks of code

module MetaTest

using Base.Test

function f(x)
    y = x+5
    z = y*y
    q = z/y
    m = q-3
end

@inline function f_inlined(x)
    y = x+5
    z = y*y
    q = z/y
    m = q-3
end

g(x) = f(2x)
g_inlined(x) = f_inlined(2x)

@test g(3) == g_inlined(3)
@test f(3) == f_inlined(3)

f() = backtrace()
@inline g_inlined() = f()
@noinline g_noinlined() = f()
h_inlined() = g_inlined()
h_noinlined() = g_noinlined()

function foundfunc(bt, funcname)
    for b in bt
        lkup = Profile.lookup(b)
        if lkup.func == funcname
            return true
        end
    end
    false
end
@test !foundfunc(h_inlined(), "g_inlined")
@test foundfunc(h_noinlined(), "g_noinlined")

using Base.pushmeta!, Base.popmeta!

macro attach(val, ex)
    esc(_attach(val, ex))
end

_attach(val, ex) = pushmeta!(ex, :test, val)

@attach 42 function dummy()
    false
end

asts = code_lowered(dummy, Tuple{})
@test length(asts) == 1
ast = asts[1]

body = Expr(:block)
body.args = ast.args[3].args

@test popmeta!(body, :test) == (true, [42])
@test popmeta!(body, :nonexistent) == (false, [])

metaex = Expr(:meta, :foo)
ex1 = quote
    $metaex
    x*x+1
end
metaex = Expr(:meta, :foo)
ex2 = quote
    y = x
    $metaex
    y*y+1
end
metaex = Expr(:block, Expr(:meta, :foo))
ex3 = quote
    y = x
    $metaex
    x*x+1
end

@test popmeta!(ex1, :foo)[1]
@test popmeta!(ex2, :foo)[1]
@test popmeta!(ex3, :foo)[1]
@test !(popmeta!(:(x*x+1), :foo)[1])

end


# tests to fully cover functions in base/meta.jl
module MetaJLtest

using Base.Test
using Base.Meta

@test isexpr(:(1+1),Set([:call]))
@test isexpr(:(1+1),Vector([:call]))
@test isexpr(1,:call)==false
@test isexpr(:(1+1),:call,3)
ioB = IOBuffer();
show_sexpr(ioB,:(1+1))

show_sexpr(ioB,QuoteNode(1),1)

end