Skip to content

Commit 7cf9664

Browse files
committed
Low-provenance Expr->SyntaxTree conversion
1 parent ba89b2d commit 7cf9664

File tree

7 files changed

+868
-3
lines changed

7 files changed

+868
-3
lines changed

src/JuliaLowering.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ _include("runtime.jl")
3232
_include("syntax_macros.jl")
3333

3434
_include("eval.jl")
35+
_include("compat.jl")
3536

3637
function __init__()
3738
_register_kinds()

src/ast.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,17 +498,20 @@ end
498498
# the middle of a pass.
499499
const CompileHints = Base.ImmutableDict{Symbol,Any}
500500

501-
function setmeta(ex::SyntaxTree; kws...)
501+
function setmeta!(ex::SyntaxTree; kws...)
502502
@assert length(kws) == 1 # todo relax later ?
503503
key = first(keys(kws))
504504
value = first(values(kws))
505505
meta = begin
506506
m = get(ex, :meta, nothing)
507507
isnothing(m) ? CompileHints(key, value) : CompileHints(m, key, value)
508508
end
509-
setattr(ex; meta=meta)
509+
setattr!(ex; meta=meta)
510+
ex
510511
end
511512

513+
setmeta(ex::SyntaxTree; kws...) = setmeta!(copy_node(ex); kws...)
514+
512515
function getmeta(ex::SyntaxTree, name::Symbol, default)
513516
meta = get(ex, :meta, nothing)
514517
isnothing(meta) ? default : get(meta, name, default)

0 commit comments

Comments
 (0)