Skip to content

Term references with positional arguments? #293

Open
@SirNickolas

Description

@SirNickolas
-term = Term
    .attr = Attr

msg = {-term(0)}, {-term.attr(1)}.

When parameterized terms were introduced, @stasm wrote:

When calling a term, both positional and named arguments can be used, but positional are ignored, because, by their anonymous nature, they can't be looked up via variable names.

Shouldn’t a warning be emitted in such case?

By the way, how is it supposed to work, in the first place? Because that’s the point where official implementations diverge: JS and Rust silently ignore positionals while Python emits a warning and doesn’t even resolve positional arguments:

# "Invalid argument to NUMBER" in JS and Rust, "Ignored positional arguments" in Python.
test-0 = {-term(NUMBER("x"))}

# Called in JS and Rust, isn't in Python.
test-1 = {-term(FUNC-WITH-SIDE-EFFECTS())}

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