Skip to content

[JuliaLowering] Lowering failure with keyword func call with var"..." inside array expression #60309

@aviatesk

Description

@aviatesk

MRE:

julia> jlparse("""Range[Range(; var"end"=nothing)]""")[1]
SyntaxTree with attributes kind,value,name_val,syntax_flags,source
[ref]                                                        │
  Range                                  :: Identifier       │
  [call]                                                     │
    Range                                :: Identifier       │
    [parameters]                                             │
      [kw]                                                   │
        end                              :: Identifiernothing                          :: Identifier       │


julia> JL.lower(Main, jlparse("""Range[Range(; var"end"=nothing)]""")[1])
ERROR: LoweringError:
Range[Range(; var"end"=nothing)]
#                 └─┘ ── invalid keyword argument name

Detailed provenance:
(call top.lastindex #₁/tmp)
└─ end
   └─ end
      └─ @ /Users/aviatesk/worktrees/JETLS/temp/test/jsjl_utils.jl:1

Stacktrace:
  [1] expand_named_tuple(ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…}, kws::JuliaLowering.SyntaxList{…}, eq_is_kw::Bool; field_name::String, element_name::String)
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:1634
  [2] expand_named_tuple
    @ ~/julia/julia/JuliaLowering/src/desugaring.jl:1615 [inlined]
  [3] macro expansion
    @ ~/julia/julia/JuliaLowering/src/ast.jl:303 [inlined]
  [4] expand_kw_call(ctx::JuliaLowering.DesugaringContext{…}, srcref::JuliaLowering.SyntaxTree{…}, farg::JuliaLowering.SyntaxTree{…}, args::JuliaLowering.SyntaxList{…}, kws::JuliaLowering.SyntaxList{…})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:1697
  [5] expand_call(ctx::JuliaLowering.DesugaringContext{JuliaLowering.SyntaxGraph{…}}, ex::JuliaLowering.SyntaxTree{JuliaLowering.SyntaxGraph{…}})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:1917
  [6] expand_forms_2(ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…}, docs::Nothing)
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:4401
  [7] expand_forms_2(ctx::JuliaLowering.DesugaringContext{JuliaLowering.SyntaxGraph{…}}, ex::JuliaLowering.SyntaxTree{JuliaLowering.SyntaxGraph{…}})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:4397
  [8] expand_forms_2(ctx::JuliaLowering.DesugaringContext{…}, exs::JuliaLowering.SyntaxList{…})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:4640
  [9] macro expansion
    @ ~/julia/julia/JuliaLowering/src/ast.jl:284 [inlined]
 [10] expand_call(ctx::JuliaLowering.DesugaringContext{JuliaLowering.SyntaxGraph{…}}, ex::JuliaLowering.SyntaxTree{JuliaLowering.SyntaxGraph{…}})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:1934
 [11] expand_forms_2(ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…}, docs::Nothing)
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:4401
 [12] expand_forms_2
    @ ~/julia/julia/JuliaLowering/src/desugaring.jl:4397 [inlined]
 [13] #expand_forms_2##2
    @ ~/julia/julia/JuliaLowering/src/desugaring.jl:4633 [inlined]
 [14] mapchildren(f::JuliaLowering.var"#expand_forms_2##2#expand_forms_2##3"{}, ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…}, do_map_child::JuliaLowering.var"#39#40"; extra_attrs::@Kwargs{})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/ast.jl:404
 [15] mapchildren(f::Function, ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…}, do_map_child::Function)
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/ast.jl:396
 [16] #mapchildren#37
    @ ~/julia/julia/JuliaLowering/src/ast.jl:443 [inlined]
 [17] mapchildren(f::Function, ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/ast.jl:442
 [18] expand_forms_2(ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…}, docs::Nothing)
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:4633
 [19] expand_forms_2(ctx::JuliaLowering.DesugaringContext{JuliaLowering.SyntaxGraph{…}}, ex::JuliaLowering.SyntaxTree{JuliaLowering.SyntaxGraph{…}})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:4397
 [20] expand_forms_2(ctx::JuliaLowering.DesugaringContext{…}, ex::JuliaLowering.SyntaxTree{…}, docs::Nothing)
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/desugaring.jl:4550
 [21] expand_forms_2
    @ ~/julia/julia/JuliaLowering/src/desugaring.jl:4397 [inlined]
 [22] expand_forms_2
    @ ~/julia/julia/JuliaLowering/src/desugaring.jl:4651 [inlined]
 [23] lower(mod::Module, ex0::JuliaLowering.SyntaxTree{JuliaLowering.SyntaxGraph{Dict{Symbol, Any}}}; expr_compat_mode::Bool, world::UInt64)
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/eval.jl:6
 [24] lower(mod::Module, ex0::JuliaLowering.SyntaxTree{JuliaLowering.SyntaxGraph{Dict{Symbol, Any}}})
    @ JuliaLowering ~/julia/julia/JuliaLowering/src/eval.jl:4
 [25] top-level scope
    @ REPL[4]:1
Some type information was truncated. Use `show(err)` to see complete types.

It works outside of the array expression, e.g. julia> JL.lower(Main, jlparse("""Range(; var"end"=nothing)""")[1]).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions