Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make sure Core.Compiler can throw kwarg mismatch errors #50174

Merged
merged 1 commit into from
Jun 15, 2023
Merged

Commits on Jun 15, 2023

  1. Make sure Core.Compiler can throw kwarg mismatch errors

    The _new_NamedTuple helper was in a Base-only branch, causing
    
    ```
    
    julia> Core.eval(Core.Compiler, quote f(;a=1) = a end)
    f (generic function with 1 method)
    
    julia> Core.Compiler.f(;b=2)
    ERROR: UndefVarError: `_new_NamedTuple` not defined
    Stacktrace:
     [1] macro expansion
       @ Core.Compiler ./namedtuple.jl:0 [inlined]
     [2] structdiff(a::@NamedTuple{b::Int64}, b::Type{NamedTuple{(:a,)}})
       @ Core.Compiler ./namedtuple.jl:421
     [3] top-level scope
       @ REPL[2]:1
    ```
    
    After this change, we have the expected
    ```
    julia> Core.eval(Core.Compiler, quote f(;a=1) = a end)
    f (generic function with 1 method)
    
    julia> Core.Compiler.f(;b=2)
    ERROR: MethodError: no method matching f(; b::Int64)
    
    Closest candidates are:
      f(; a) got unsupported keyword argument "b"
       @ Core REPL[13]:1
    
    Stacktrace:
     [1] kwerr(kw::@NamedTuple{b::Int64}, args::Function)
       @ Core.Compiler ./error.jl:165
     [2] top-level scope
       @ REPL[14]:1
    ```
    Keno committed Jun 15, 2023
    Configuration menu
    Copy the full SHA
    56517d4 View commit details
    Browse the repository at this point in the history