Skip to content

arguments lost in nested object calls? #932

@stargazing-dino

Description

@stargazing-dino

I register a function that operates on a function pointer

let mut engine = Engine::new();

engine.register_fn("name_of_function", |x: &mut FnPtr| {
    println!("name of function: {:?}", x.fn_name());
});
fn my_cool_function() {
    // 
}

my_cool_function.name_of_function()

This successfully prints "my_cool_function". The signature of name_of_function is also correctly (Fn)

I then read about JS Style scriptable event handlers and am inspired to make a map for my function state:

let map = #{ foo: 42 };

fn my_cool_function() {
    this.foo += 1;
    // 
}

map.my_cool_function();

This pattern is useful and seems to work for my purposes.

However, doing this does not work.

map.my_cool_function.name_of_function();

I get this error:

called `Result::unwrap()` on an `Err` value: ErrorFunctionNotFound("name_of_function (())", 16:23)

Is this expected behavior?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions