Skip to content

Evaluating functional IR throws unsupported or misplaced expression lambda #102

@rtjoa

Description

@rtjoa

Functional IRs sometimes throw unsupported or misplaced expression lambda or ERROR: MethodError: objects of type IRTools.Inner.Self are not callable when evaluated (similar to #54)

Environment: IRTools v0.4.7, Julia Version 1.81, macOS Monterey, Apple M1 Pro

using IRTools: IR, @dynamo, functional, evalir, @code_ir

@dynamo function functional_dyna(a...)
    ir = IR(a...)
    ir === nothing && return
    functional(ir)
end

foo() = false
bar() = if true false else false end

# Works: foo run normally
functional_dyna(foo)  # false

# Works: foo run in two steps
ir = @code_ir functional_dyna foo()
evalir(ir, foo)  # false

# Works: bar run normally
functional_dyna(bar)  # false

# Errors: bar run in two steps
ir = @code_ir functional_dyna bar()
evalir(ir, bar)  # ERROR: unsupported or misplaced expression lambda

The error trace was:

Stacktrace:
 [1] var"##344"(arg1::typeof(bar))
   @ IRTools.Inner ~/.julia/packages/IRTools/FeBr2/src/eval.jl:18
 [2] #invokelatest#2
   @ ./essentials.jl:729 [inlined]
 [3] invokelatest
   @ ./essentials.jl:726 [inlined]
 [4] evalir
   @ ~/.julia/packages/IRTools/FeBr2/src/eval.jl:25 [inlined]
 [5] evalir(ir::IRTools.Inner.IR, args::Any)
   @ IRTools.Inner ~/.julia/packages/IRTools/FeBr2/src/eval.jl:26
 [6] top-level scope

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions