marko-js / language-server

Marko autocomplete, intellisense and editor support.
MIT License
38 stars 9 forks source link

Dynamic tag `Marko.Body<[{ foo: bar }]>` is inconsistent between params and args #270

Open LuLaValva opened 3 months ago

LuLaValva commented 3 months ago

@marko/type-check@1.1.7

Details

The following should be equivalent:

<${input.renderBody} foo=bar />
<${input.renderBody}({ foo: bar }) />

But they aren't. It looks like Marko.Body<{ foo: bar }> expects Directives & { value: [{ foo: bar; }]; }, which may have been carried over from when the syntax for dynamic tag params was going to be <${input.renderBody}=[{ foo: bar}] />. This should probably be updated.

Steps to Reproduce

Example template:

export interface Input {
  renderBody: Marko.Body<[{ foo: string }]>;
}

<${input.renderBody} foo="bar" />
<${input.renderBody}({ foo: "bar" }) />