Skip to content

Evaluating functional IR throws unsupported or misplaced expression lambda #102

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions